案例實戰—直角三角形
試用等價類划分、邊界值分析和因果圖加判定表驅動法為三角形問題中的直角三角形設計測試用例。假定三邊邊長a、b和c均為1到100之間的正整數,其中整數的要求通過數據類型控制。直角三角形問題滿足以下規則:
-
當三邊中任意兩邊邊長之和小於等於第三邊,則輸出“非三角形“;
-
當其中兩邊邊長的平方和等於第三邊的平方,則輸出“直角三角形”;
- 當任意兩邊邊長的平方和都不等於第三邊的平方,則輸出“一般三角形”。
- 當三邊中任意一邊邊長小於1或者大於100,則給出“輸入無效”的提示信息。
要求如下:
- ① 等價類划分法中需分析輸入域和輸出域得到等價類,並設計覆蓋弱健壯等價類的測試用例。
- ② 邊界值分析法在等價類划分的基礎上考慮輸入域和輸出域的邊界情況,補充測試用例。
- ③ 判定表驅動法需分析程序的規格說明,列出原因和結果,畫出因果圖,並將因果圖轉換為判定表,設計測試用例。
- ④ 運行待測程序,將設計的測試用例通過界面實現輸入,記錄實際輸出,並給出測試結果。如果預期輸出與實際輸出相匹配,則測試結果為Passed,否則,測試結果為Failed。
- ⑤ 通過應用實例,簡單總結歸納等價類划分、邊界值分析、判定表驅動等黑盒測試技術在測試用例設計和測試執行方面的優缺點及適用情況。
參考答案:
(1) 等價類划分
分析輸入域得到的等價類如表1所示。
表1 直角三角形問題輸入域等價類表
null | 有效等價類 | 編號 | 無效等價類 | 編號 |
---|---|---|---|---|
取值范圍 | 1≤a≤100 | 1 | a<1 | 11 |
a>100 | 12 | |||
1≤b≤100 | 2 | b<1 | 13 | |
b>100 | 14 | |||
1≤c≤100 | 3 | c<1 | 15 | |
c>100 | 16 | |||
構成一般三角形 | a+b>c | 4 | a+b≤c | 17 |
b+c>a | 5 | b+c≤a | 18 | |
c+a>b | 6 | a+c≤b | 19 | |
a²+b²≠c²且b²+c²≠a²且c²+a²≠b² | 7 | |||
構成直角三角形 | a²+b²=c² | 8 | ||
b²+c²=a² | 9 | |||
c²+a²=b² | 10 |
直角三角形問題包括四種可能的輸出,分別為直角三角形、一般三角形、非三角形和輸入無效,其中輸入域已覆蓋輸入無效的情況。分析輸出域得到的等價類如表2所示,覆蓋弱健壯等價類的測試用例如表3所示。
表2 直角三角形問題等價類表
測試用例編號 | a | b | c | 預期輸出 | 實際輸出 | 覆蓋等價類 | 測試結果 |
---|---|---|---|---|---|---|---|
T1 | 40 | 50 | 60 | 一般三角形 | 一般三角形 | 1、2、3、4、5、6、7 | Passed |
T2 | 30 | 40 | 50 | 直角三角形 | 一般三角形 | 1、2、3、4、5、6、8 | Failed |
T3 | 50 | 30 | 40 | 直角三角形 | 一般三角形 | 1、2、3、4、5、6、9 | Failed |
T4 | 40 | 50 | 30 | 直角三角形 | 一般三角形 | 1、2、3、4、5、6、10 | Failed |
T5 | 0 | 50 | 50 | 輸入無效 | 輸入無效 | 11、2、3 | Passed |
T6 | 101 | 50 | 50 | 輸入無效 | 輸入無效 | 12、2、3 | Passed |
T7 | 50 | 0 | 50 | 輸入無效 | 輸入無效 | 1、13、3 | Passed |
T8 | 50 | 101 | 50 | 輸入無效 | 輸入無效 | 1、14、3 | passed |
T9 | 50 | 50 | 0 | 輸入無效 | 輸入無效 | 1、2、15 | Passed |
T10 | 50 | 50 | 101 | 輸入無效 | 輸入無效 | 1、2、16 | Passed |
T11 | 20 | 30 | 60 | 非三角形 | 非三角形 | 1、2、3、17 | Passed |
T12 | 60 | 20 | 30 | 非三角形 | 非三角形 | 1、2、3、18 | Passed |
T13 | 30 | 60 | 20 | 非三角形 | 非三角形 | 1、2、3、19 | Passed |
(2) 邊界值分析
按照健壯性邊界值分析的取值方法,對每個輸入分別取7個值,即為min-、min、min+、nom、max-、max和max+,如表4所示。
表4 直角三角形問題輸入域健壯性邊界值分析
輸入域 | 等價類 | 邊界值 |
---|---|---|
a | 1≤a≤100 | 01、2、50、99、100、101 |
b | 1≤b≤100 | 0、1、2、50、99、100、101 |
c | 1≤c≤100 | 0、1、2、50、900、101 |
輸出域邊界值分析如表5所示。
表5 直角三角形問題輸出域邊界值分析
輸出域 | 等價類 | 邊界值 |
---|---|---|
輸入無效 | a+b≤c | a+b=c-1、a+b=c、a+b=c+1 |
b+c≤a | b+c=a-1、b+c=a、b+c=a+1 | |
c+a≤b | c+a=b-1、c+a=b、c+a=b+1 |
綜合考慮輸入域和輸出域的邊界值,測試用例設計如表6所示。
表6 直角三角形問題邊界值測試用例
測試用例編號 | a | b | c | 預期輸出 | 實際輸出 | 測試結果 |
---|---|---|---|---|---|---|
T1 | 0 | 50 | 50 | 輸入無效 | 輸入無效 | Passed |
T2 | 1 | 50 | 50 | 一般三角形 | 輸入無效 | Failed |
T3 | 2 | 50 | 50 | 一般三角形 | 一般三角形 | Passed |
T4 | 99 | 50 | 50 | 一般三角形 | 一般三角形 | Passed |
T5 | 100 | 50 | 50 | 非三角形 | 輸入無效 | Failed |
T6 | 101 | 50 | 50 | 輸入無效 | 輸入無效 | Passed |
T7 | 50 | 0 | 50 | 輸入無效 | 輸入無效 | Passed |
T8 | 50 | 1 | 50 | 一般三角形 | 輸入無效 | Failed |
T9 | 50 | 2 | 50 | 一般三角形 | 一般三角形 | Passed |
T10 | 50 | 99 | 50 | 一般三角形 | 一般三角形 | Passed |
T11 | 50 | 100 | 50 | 非三角形 | 輸入無效 | Failed |
T12 | 50 | 101 | 50 | 輸入無效 | 輸入無效 | Passed |
T13 | 50 | 50 | 0 | 輸入無效 | 輸入無效 | Passed |
T14 | 50 | 50 | 1 | 一般三角形 | 輸入無效 | Failed |
T15 | 50 | 50 | 2 | 一般三角形 | 一般三角形 | Passed |
T16 | 50 | 50 | 99 | 一般三角形 | 一般三角形 | Passed |
T17 | 50 | 50 | 100 | 非三角形 | 輸入無效 | Failed |
T18 | 50 | 50 | 101 | 輸入無效 | 輸入無效 | Passed |
T19 | 30 | 40 | 50 | 直角三角形 | 一般三角形 | Failed |
表6 直角三角形問題邊界值測試用例
(3) 判定表驅動
①分析程序的規格說明,列出原因和結果。
原因:
C1—1≤a
C2—a≤100
C3—1≤b
C4—b≤100
C5—1≤c
C6—c≤100
C7—a+b>c
C8—b+c>a
C9—c+a>b
C10—a2+b2=c2
C11—b2+c2=a2
C12—c2+a2=b2
結果:
E1—輸入無效
E2—非三角形
E3—一般三角形
E4—直角三角形
中間結果:
11—輸入有效
12—符合三角形一般規則
13—可以構成三角形
14—符合直角三角形一般規則
② 找出原因與結果間的因果關系、原因與原因間的約束關系,畫出如圖1所示的因果圖。
圖1 直角三角形問題因果圖
③ 將因果圖轉換成如表7所示的判定表。
表7 直角三角形問題判定表
④ 根據判定表,設計如表8所示的測試用例,給出輸入數據和預期輸出。
表8直角三角形問題判定表驅動測試用例
概念:
(1) 等價類划分法
等價類划分就是把所有輸入數據划分為若干部分,從每一部分選取少數有代表性的數據作為測試用例,代表性數據等同於該類中的其他值。
通過考慮輸入和輸出數據可以把等價類划分為有效等價類和無效等價類,所謂的有效等價類就是對於程序規格說明而言,是合理的,有意義的輸入數據構成的集合;所謂的無效等價類就是對於程序規格而言,是不合理的,無意義的輸入數據構成的集合。
設計測試用例時要同時考慮有效等價類和無效等價類設計,在設計的時候要注意不要產生冗余或者設計不充分。
在根據等價類設計測試用例的時候,針對有效等價類,設計的測試用例應該盡可能多的覆蓋有效測試用例;針對無效等價類,設計的每條測試用例只可以覆蓋唯一的無效等價類。
(2) 邊界值分析法
因為邊界往往很容易發生錯誤,所以邊界值分析選擇等價類邊界設計測試測試用例,是一種補充等價類划分法的測試用例設計方法。
邊界值分析法是等價類分析法的補充,所有測試階段都可以使用。
邊界值使用范圍廣,更復雜,找到的缺陷也更多
等價分類法相比邊界值分析法取值比較隨意,等價類是在各等價類允許的值域內任意去的,邊界值是在等價類邊界值附近選取的。
邊界值分析不僅考慮輸入條件,還要考慮輸出空間產生的測試情況。
(3) 因果圖
邊界值分析法和等價類划分法都着重考慮了輸入條件但沒有考慮輸入條件之間的關系,因果圖方法是充分考慮了輸入情況的各種組合及輸入條件之間的相互制約關系的一種方法。
用因果圖生成測試用例的基本步驟
(1) 分析軟件規格說明,找出哪些是原因,哪些是結果,並給每個原因和結果賦予一個標識符;
(2) 根據軟件規格說明,找出原因和原因,原因和結果之間的對應關系,根據這些關系,畫出因果圖;
(3) 根據環境,在因果圖上用一些標識符表明約束和現在條件表明一些特殊情況,如互斥
(4) 把因果圖轉換成判定表
(5) 把判定表的每一列拿出來作為數據,設計測試用例。
原因和結果之間的關系有,恆等,非,與,或
原因與原因之間的關系有,互斥,包含,唯一,要求,屏蔽
以上三種方法都屬於黑盒測試。
2.軟件測試根據是否實際執行代碼可以分為靜態測試和動態測試,其中動態測試又包含了白盒測試,黑盒測試和灰盒測試。邏輯覆蓋是以程序內部的邏輯結構為基礎的測試方法,屬於白盒測試,包括語句覆蓋,判定覆蓋,條件覆蓋,判定條件覆蓋,條件組合覆蓋,路徑覆蓋,其嚴謹程度是逐步增強的。
總結:
如果測試的軟件結構較為復雜,系統較為龐大,測試重點在流程而非功能上,因果圖和判定表比重較大。如果主要測試對象是一些數據流的輸入輸出,那邊界值的比重較大,個人經驗來看,等價類是非常通用的,邊界值是對等價類的一個補充。