「黑盒」測「外」不測「內」

2021-03-31 08:56:59 字數 2610 閱讀 1069

軟體測試有許多種方法,其中黑盒測試是廣泛使用的兩類測試方法之一。

「黑盒」測的是功能

黑盒測試也稱功能測試或資料驅動測試。它在已知產品應具有的功能的條件下,通過測試來檢測每個功能是否都能正常使用。在測試時,把程式看作乙個不能開啟的黑盒子,在完全不考慮程式內部結構和內部特性的情況下,測試者在程式介面進行測試,它只檢查程式功能是否按照需求規格說明書的規定正常使用,程式是否能適當地接收輸入資料而產生正確的輸出資訊,並且保持外部資訊(如資料庫或檔案)的完整性。

「黑盒」法著眼於程式外部結構、不考慮內部邏輯結構、針對軟體介面和軟體功能進行測試。「黑盒」法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程式中所有的錯誤。實際上測試情況有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。

「黑盒」的兩種基本方法

黑盒測試有兩種基本方法,即通過測試和失敗測試。

在進行通過測試時,實際上是確認軟體能做什麼,而不會去考驗其能力如何。軟體測試員只運用最簡單,最直觀的測試案例。

在設計和執行測試案例時,總是先要進行通過測試。在進行破壞性試驗之前,看一看軟體基本功能是否能夠實現。這一點很重要,否則在正常使用軟體時就會奇怪地發現,為什麼會有那麼多的軟體缺陷出現?

在確信了軟體正確執行之後,就可以採取各種手段通過搞「垮」軟體來找出缺陷。純粹為了破壞軟體而設計和執行的測試案例,被稱為失敗測試或迫使出錯測試。

黑盒測試的設計方法

黑盒測試是以使用者的觀點,從輸入資料與輸出資料的對應關係出發進行測試的,它不涉及到程式的內部結構。很明顯,如果外部特性本身有問題或規格說明的規定有誤,用黑盒測試方法是發現不了的。黑盒測試法注重於測試軟體的功能需求,主要試圖發現幾類錯誤:功能不對或遺漏、介面錯誤、資料結構或外部資料庫訪問錯誤、效能錯誤、初始化和終止錯誤。

具體的黑盒測試方法包括等價類劃分、因果圖、正交實驗設計法、邊值分析、判定表驅動法、功能測試等。在使用時,自然要針對開發專案的特點對方法加以適當的選擇。

◆ 等價類劃分

等價類劃分是一種典型的黑盒測試方法,用這一方法設計測試用例可以不用考慮程式的內部結構,只以對程式的要求和說明,即需求規格說明書為依據,仔細分析和推敲說明書的各項需求,特別是功能需求,把說明中對輸入的要求和輸出的要求區別開來並加以分解。

由於窮舉測試的數量太大,以致於無法實際完成,促使我們在大量的可能資料中選取其中的一部分作為測試用例。例如,在不了解等價分配技術的前提下,測試了1+1、1+2、1+3和1+4之後,還有必要測試1+5和1+6嗎?能否放心地認為它們正確嗎?那麼1+999…(可以輸入的最大數值)呢?這個測試用例是否與其他用例不同?是否屬於另外一種類別?另外乙個等價區間?這是軟體測試員必須考慮到的問題。

等價類別或者等價區間是指測試相同目標或者暴露相同軟體缺陷的一組測試案例。 1+999…和1+13有什麼區別呢?至於1+13,就像乙個普通的加法,與1+5或者1+392沒有什麼兩樣,而1+999…則屬於鄰界的極端情況。假如輸入最大允許數值,然後加1,就會出現問題——也許就是軟體的缺陷。這個極端案例屬於乙個單獨的區間,與常規數字的普通區間不同。

等價類劃分的辦法是把程式的輸入域劃分成若干部分,然後從每個部分中選取少數代表性資料當作測試用例。每一類的代表性資料在測試中的作用等價於這一類中的其他值,也就是說,如果某一類中的乙個例子發現了錯誤,這一等價類中的其他例子也能出現同樣的錯誤。使用這一方法設計測試用例,首先必須在分析需求規格說明的基礎上劃分等價類,列出等價類表。

在考慮等價類劃分時,先從程式的功能說明中找出每個輸入條件,然後為每個輸入條件劃分兩個或更多個等價類。等價類可分兩種情況:有效等價類和無效等價類。有效等價類是指對程式的規格說明是有意義的、合理的輸人資料所構成的集合;無效等價類是指對程式的規格說明是不合理的或無意義的輸人資料所構成的集合。

◆ 邊界值分析

軟體測試常用的乙個方法是把測試工作按同樣的形式劃分。對資料進行軟體測試,就是檢查使用者輸入的資訊、返回結果以及中間計算結果是否正確。

即使是最簡單的程式,要處理的資料也可能數量極大。還記得在計算器上簡單加法的全部可能性嗎?再想一想字處理程式、導航系統和**交易程式。使這些資料得以測試的技巧(如果稱得上的話)是,根據下列主要原則進行等價分配,以合理的方式減少測試案列:邊界條件、次邊界條件、空值和無效資料。

邊界值分析(boundary value analysis,bva)是一種補充等價劃分的測試用例設計技術,它不是選擇等價類的任意元素,而是選擇等價類邊界的測試用例。實踐證明,在設計測試用例時,對邊界附近的處理必須給予足夠的重視,為檢驗邊界附近的處理專門設計測試用例,常常可以取得良好的測試效果。bva不僅重視輸人條件邊界,而且也從輸出域匯出測試用例。

邊界值設計測試遵循的五條原則:

1、如果輸入條件規定了取值範圍,應以該範圍的邊界內及剛剛超範圍邊界外的值作為測試用例。如以a和b為邊界,測試用例應當包含a和b及略大於a和略小於b的值;

2、若規定了值的個數,分別以最大、最小個數及稍小於最小、稍大於最大個數作為測試用例;

3、針對每個輸出條件使用上述1、2條原則;

4、如果程式規格說明中提到的輸入或輸出域是個有序的集合(如順序檔案、**等),就應注意選取有序集的第乙個和最後乙個元素作為測試用例;

5、分析規格說明,找出其他的可能邊界條件。

內連線外連線

內連線 內連線也叫連線,是最早的一種連線,最早被稱為普通連線或自然連線。內連線是從結果中刪除其他被連線表中沒有匹配行的所有行,所以內連線可能會丟失資訊。內連線的語法 select fieldlist from table1 inner join table2 on table1.column tab...

SQL 內連線,外連線

假設一堆男女在教堂,有夫婦有單身的,假設男為左表,女為右表 教父說 結了婚的人請出去,結了婚的人請手拉手,於是結了婚的男女站了起來,這就是inner 內連 教父說 男的並且和這些男的結婚的女的請出去,結了婚的人請手拉手,於是,結了婚的夫婦手拉手出去,單身的男的也出去了。這就是 left 左連 教父說...

內連線和外連線

在oracle的sql語句常用的連線有內連線 inner join 外連線 outer join 等,內連線又包括等值連線,非等值連線,自連線 而外連線又分為左連線和右連線。其中預設的是內連線的等值連線。內連線 利用內連線 等值 就可獲取公共部分c,圖中的資料集c.select from a inn...