等價劃分
使用等價劃分方法設計測試用例有兩個步驟:
1.確定等價類
有效等價類代表對程式的有效輸入;無效等價類代表的是其他不正確的任何輸入。如果需要,我們還可以將乙個等價類劃分為更小的一些等價類。
比如,規格說明規定了「請輸入書籍的數量(1~99)以及書籍的型別(硬皮、軟皮或活頁)」。它們對應的等價類分別如下:
書籍數量
書籍型別
2.生成測試用例
1. 為每個等價類設定編號。
2. 編寫測試用例,盡可能多的覆蓋尚未被覆蓋的有效等價類。直到所有的有效等價類都被測試用例覆蓋。測試用例及其覆蓋的有效等價類如下:
3. 編寫測試用例,覆蓋乙個且僅乙個尚未被覆蓋的無效等價類。直到所有的無效等價類都被測試用例所覆蓋。測試用例及其覆蓋的無效等價類如下:
用單個的測試用例覆蓋無效等價類,是因為有些輸入的錯誤檢查可能會遮蔽或取代其他輸入的錯誤檢查。比如②⑦,也許程式提示「非法的書籍數量」後,就不會執行對書籍型別的檢查了。
經驗證明,考慮了邊界條件的測試用例比其他沒有考慮邊界條件的測試用例,具有更高的測試回報率。所謂邊界條件,是指輸入和輸出等價類中恰好處在邊界、或超過邊界、或在邊界以下的狀態。
上例中的書籍數量範圍是1~99,那麼應該針對0,1和99,100的情況分別設計測試用例。
從定義可以看出,等價劃分只關注輸入空間(輸入等價類)的不同,邊界值分析還需要從輸出空間(輸出等價類)設計測試用例。舉例來說:
某個程式按月計算個人所得稅的速算扣除數,且最小金額是0,最大金額是13,505。使用邊界值分析法,應該設計測試用例測試速算扣除數結果為0和13505的情況。此外,還應觀察是否可能設計出導致速算扣除數為負數,或者超過13505的測試用例。
邊界值分析法和等價劃分重要的區別是,等價劃分是從等價類中挑選任意乙個元素作為測試資料;邊界值分析法考察正處於等價劃分邊界或在邊界附近的狀態。
因果圖邊界值分析和等價劃分的缺點是,未對輸入條件的組合情況、輸入條件之間的相互制約關係進行分析。
1.因果圖的基本關係
恒等(identify):若a為1,則b為1;否則b為0。
非(not):若a為1,則b為0;否則b為1。
或(or):若a或b或c為1,則d為1;否則d為0。
與(and):若a和b和c都為1,則d為1;否則d為0。
2.因果圖的約束條件
對於輸入條件的約束有e、i、o、r四種:
異(e):e必須總為真,而a、b最多只有乙個為1。
或(i):i為真時,a、b和c中至少有乙個必須為1。
唯一(o):a、b中,有且僅有乙個必須為1。
要求 (r):如果a為1,b也必須為1。
對於輸出結果的約束只有m一種:
遮蔽(m):如果結果a為0,則b強制為0。
3.生成測試用例的過程
1. 將規格說明分解為可執行的片段,確定「因」和「果」,同時為每個「因」和「果」都賦予唯一的編號。
所謂「因」,是指乙個明確的輸入條件等價類。所謂「果」,是指乙個輸出條件或系統轉換(輸入對程式或系統狀態的延續影響)。
2. 分析規格說明的語義,轉換為因果圖。
3. 為因果圖新增約束條件。
4. 將因果圖轉換為判定表。
5. 將判定表的每一列轉換為乙個測試用例。
4.乙個簡單的例子
規格說明:「第一列中的字元必須是『a』或『b』,第二列中的字元必須是乙個數字。在這種情況下,對檔案進行更新。如果第乙個字元不正確,產生提示資訊x12。如果第二個字元不是數字,產生提示資訊x13。」
(一)分解規格說明,得到「因」如下:
1 —— 第一列的字元是「a」
2 —— 第一列的字元是「b」
3 —— 第二列的字元是乙個數字
「果」如下:
70 —— 對檔案做了更新
71 —— 產生提示資訊x12
72 —— 產生提示資訊x13
(二)分析規格說明的語義,並將其轉換為因果圖如下:
(三)原因①和原因②不可能同時成立,為因果圖新增對應的約束條件:
(四)「因」是條件,「果」是動作。將因果圖轉換為判定表,每一列代表乙個測試用例。
(五)將判定表中的列轉換為測試用例。
5.附:將因果圖轉換為判定表的思路
(以上述的例子來說明)
選擇乙個「果」作為當前狀態。例:71。
對因果圖回溯,找出導致該「果」為1的所有因的組合(需要考慮到約束條件)。例:001,000。
在判定表中為每個「因」的組合生成一列。例:(列3)和(列4)。
對於每種「因」的組合,判斷所有其他「果」的狀態,並放置在對應的每一列中。例:已得在001,000兩種組合下結點71的結果為1。判斷在「因」為001的組合下,得到70和72的結果為0。判斷在「因」為000的組合下,得到70的結果為0,72的結果為1。將「果」的狀態填入其對應的列。
對因果圖進行回溯時,需要做到以下考慮:
1) 當回溯經過乙個結果為1的or結點時,不要將or結點的1個以上的輸入同時設為1。
2) 當回溯經過乙個結果為0的and結點時,應列舉出導致該結果為0的所有輸入情況的組合。然而,當該and結點的乙個輸入條件為0時,其他輸入有乙個或更多的1,則不必考慮其他輸入為1的所有情況。
3) 當回溯經過乙個結果為0的and結點時,所有輸入皆為0的這一種情況應當列舉出來。
假設我們需要找出下面因果圖中,所有導致輸出狀態為0的輸入條件。
(1) 根據上述第3)條思路,我們只需列出使得結點⑤和結點⑥皆為0的情況。結點①②③④的取值狀態為:
0,0,0,0 (5=0,6=0)
(2) 根據第2)條思路,對於結點⑤為1而結點⑥為0的情況,應該列出導致⑥為0的所有輸入情況組合。同時,只需列出一種使得⑤為1的情況即可,不需要列出⑤為1時的所有輸入情況組合。又根據第1)條思路,當結點⑤為1時,我們不應將結點①和②同時設為1。於是,得到結點①②③④的取值狀態:
同樣的,對於⑤為0而⑥為1的情況,也只需要列出⑥為1的一種情況即可(儘管在本例中也只有這一種)。
0,0,1,1 (5=0,6=1)
因果圖有助於用乙個系統的方法選擇出高效的測試用例集。它還有乙個額外的好處,就是可以指出規格說明的不完整性和二義性。但通常它不能生成全部應該被確定的有效測試用例。
因果圖方法沒有充分考慮邊界條件。建議,最好是單獨考慮邊界值分析。這不意味著我們要為此增加相應多的測試用例,而是在由因果圖生成測試用例時,可以將邊界條件分析一併考慮進去。最好的結果是既滿足了兩方面的目標,又不需要增加新的測試用例。
錯誤推測
錯誤猜測是一項依賴於直覺的非正規的過程,其基本思想是人們利用直覺和經驗猜測可能犯得錯誤或錯誤易發情況的清單,然後編寫測試用例來暴露這些錯誤。
例如,程式輸入**現0這個值,就是一種錯誤易發情況。因此可以編寫測試用例檢查特定的輸入值中有0,或特定的輸出值被強制為0的情況。
同樣,在出現輸入或輸出數目不定的地方,如,對某個列表進行搜尋,結果為「空列表」或「只包含乙個」條目的列表,也是錯誤容易發生的情況。
另乙個思想是,在閱讀規格說明時,聯絡程式設計師可能做的假設來確定測試用例。如規格說明中被忽略的一些內容,要麼是由於偶然因素,要麼是程式設計師認為其顯而易見。
測試策略
測試用例設計方法可以組合為乙個整體的策略,因為每一種方法都可以提供一組具體的有用的測試用例,但是都不能提供乙個完整的測試用例集。
一組合理的策略如下:
1.如果規格說明包含輸入條件組合的情況,應首先使用因果圖分析法。
2.任何情況下都應使用邊界值分析法。邊界值分析法可以產生一系列補充的測試條件,多數甚至全部條件可以被整合到因果圖分析中。
3.為輸入和輸出確定有效和無效等價類,在必要情況下對上面確認的測試用例進行補充。
4.使用錯誤猜測增加更多的測試用例。
5.針對上述測試用例,檢查程式的邏輯結構。如果覆蓋準則未能被前四個步驟中確定的測試用例所滿足,並且滿足準則也並非不可能,那麼增加足夠數量的測試用例,以使覆蓋準則得到滿足。
什麼樣的測試用例是好的測試用例
1 用例覆蓋程度毫無疑問,這一點應該是最重要的,無需多說,覆蓋率最大化是一套測試用例的最重要評價標準,如果漏測就杯具了。2 用例是否已經達到工作量最小化 在滿足用例覆蓋程度最大化的前提下,應該盡量減小執行用例所需要的工作量。這些方面的方法有不少,如條件覆蓋,分支覆蓋,正交覆蓋等方法。面對不同的測試物...
測試用例與測試用例的設計方法
測試用例 test case 是為某個特殊目標而編制的一組測試輸入 執行條件以及預期結果,以便測試某個程式路徑或核實是否滿足某個特定需求。目前黑盒測試的測試用例設計方法有5種 等價類劃分 邊界值分析 錯誤推測法 目前黑盒測試 的測試用例 設計方法有5種 等價類劃分 邊界值分析 錯誤推測法 因果圖功能...
002測試用例 2
1.什麼時候使用判定表 在乙個程式中,如果輸入輸出比較多,輸入之間和輸出之間相互制約的條件比較多,在這種情況下應用決策表很合適,它可以很清楚地表達它們之間的各種複雜關係。2.決策表法簡述 決策表是把作為條件的所有輸入的各種組合值以及對應輸出值都羅列出來而形成的 它能夠將複雜的問題按照各種可能的情況全...