什么是測試用例
測試用例就是設計一種情況,軟件程序在這種情況下,必須能正常運行并且達到程序所設計的執行結果。如果不能正常運行則為bug。
使用測試用例的好處:
- 在開始實施測試之前設計好測試用例,可以避免盲目測試并提高測試效率
- 測試用例的使用令軟件測試的實施重點突出、目的明確
- 軟件版本更新后只需修改少部分的測試用例便可產開測試工作,降低工作強度,縮短項目周期
- 功能模塊的通用化和復用化是軟件易于開發,而測試用例的通用化和復用化則會使軟件測試易于開展,并隨著測試用例的不斷精化其效果也不斷攀升。
測試用例設計方法包括等價類劃分,邊界值分析,因果圖法,判定表法,錯誤推測法,正交試驗法,功能圖法。
一、等價類劃分
等價類劃分法是把程序的輸入域劃分成若干部分,然后每個部分選取少數代表性數據作為測試用例。使用此方法,首先必須在分析需求規格說明書的基礎上劃分等價類,列出等價類表。
- 參考文檔
需求規格說明書 - 關注重點
說明中輸入輸出的要求
1. 劃分等價類和列出等價類表
等價類華為兩種不同的情況:有效等價類和無效等價類
有效等價類:指對于程序的規格說明來說是合理的、有意義的輸入數據構成的集合。可檢驗程序是否實現了規格說明中所規定的功能和性能。
無效等價類:與有效等價類定義相反
確定等價類的原則
- 在輸入條件規定了取值范圍或值的個數的情況下,可以確立一個有效等價類和兩個無效等價類
- 在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。
- 在輸入條件是一個布爾量的情況下,可以確定一個有效等價類和一個無效等價類。
- 在規定了輸入數據是一組值(假定n個),可以確定一個有效等價類和一個無效等價類。
- 在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。
- 在確定已劃分的等價類中,各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步地劃分為更小的等價類。
等價類表實例
|輸入條件|有效等價類|無效等價類|
|----|---|
|……|……|……|
2. 確定測試用例
確定測試用例步驟:
- 為每個等價類規定一個唯一編號
- 設計一個新的測試用例,使其盡可能多的覆蓋尚未覆蓋的有效等價類。重復這一步,最后是的所有有效等價類均被測試用例所覆蓋
- 設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步使所有無效等價類均被覆蓋。
例:一個程序讀入3個整數,把3個數值看作一個三角形的3條邊的長度值,這個程序要打印出信息,說明這個三角形是一般三角形,是等腰的,還是等邊的。
設三角形的3條邊分別為 A,B,C
- 構成三角形的條件,A>0, B>0, C>0, A+B>C, B+C>A, A+C>B.
- 在1基礎上是等腰的則A=B, 或B=C,或A=C.
- 在1基礎上是等邊的則 A=B,且B=C,且A=C
等價類表:
輸入條件 | 有效等價類 | 無效等價類 |
---|---|---|
是否三角形的三條邊 | A>0, (1) B>0, (2) C>0, (3) A+B>C, (4) B+C>A, (5) A+C>B, (6) |
A<=0, (7) B<=0, (8) C<=0, (9) A+B<=C, (10) B+C<=A, (11) A+C<=B, (12) |
是否等腰三角形 | A=B, (13) B=C, (14) A=C, (15) |
A!=B AND B!=C AND C!=A, (16) |
是否等邊三角形 | A=B AND B=C AND C=A, (17) | A!=B, (18) B!=C, (19) C!=A, (20) |
設計用例:輸入順序是【A,B,C】
序號 | 【A,B,C】 | 覆蓋等價類 | 輸出 |
---|---|---|---|
1 | 【3,4,5】 | (1),(2),(3),(4),(5),(6) | 一般三角形 |
2 | 【0,1,2】 | (7) | 不能構成三角形 |
3 | 【1,0,2】 | (8) | 不能構成三角形 |
4 | 【1,2,0】 | (9) | 不能構成三角形 |
5 | 【1,2,3】 | (10) | 不能構成三角形 |
6 | 【3,1,2】 | (11) | 不能構成三角形 |
7 | 【1,3,2】 | (13) | 不能構成三角形 |
8 | 【3,3,4】 | (1),(2),(3),(4),(5),(6),(13) | 等腰三角形 |
9 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14) | 等腰三角形 |
10 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15) | 等腰三角形 |
11 | 【3,4,5】 | (1),(2),(3),(4),(5),(6),(16) | 非等腰三角形 |
12 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(17) | 等邊三角形 |
13 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14),(18) | 非等邊三角形 |
14 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15),(19) | 非等邊三角形 |
15 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(13),(20) | 非等邊三角形 |
以上為全部覆蓋結果,但可以看出來有些重復輸入有不同的結果而且有些輸出結果也并未在規格說明中出現,因此最終整理如下:
序號 | 【A,B,C】 | 覆蓋等價類 | 輸出 |
---|---|---|---|
1 | 【3,4,5】 | (1),(2),(3),(4),(5),(6),(16) | 一般三角形 |
2 | 【0,1,2】 | (7) | 不能構成三角形 |
3 | 【1,0,2】 | (8) | 不能構成三角形 |
4 | 【1,2,0】 | (9) | 不能構成三角形 |
5 | 【1,2,3】 | (10) | 不能構成三角形 |
6 | 【3,1,2】 | (11) | 不能構成三角形 |
7 | 【1,3,2】 | (13) | 不能構成三角形 |
8 | 【3,3,4】 | (1),(2),(3),(4),(5),(6),(13),(20) | 等腰三角形 |
9 | 【3,4,4】 | (1),(2),(3),(4),(5),(6),(14),(18) | 等腰三角形 |
10 | 【3,4,3】 | (1),(2),(3),(4),(5),(6),(15),(19) | 等腰三角形 |
11 | 【3,3,3】 | (1),(2),(3),(4),(5),(6),(17) | 等邊三角形 |
二、邊界值分析法
參考書籍:軟件評測師教程