黑盒測試法——等價類划分法
實驗目的:1.掌握等價類划分的方法
- 掌握按等價類方法設計測試用例
實驗內容:
1、請用等價類划分法為三角形問題划分等價類,並設計相應的測試用例,測試下面三角形問題程序,找出缺陷並改正,給出缺陷報告。
2、三角形問題:輸入3個整數a、b、c,分別作為三角形的3條邊,通過程序判斷由3條邊構成的三角形的類型為等邊三角形、等腰三角形、一般三角形或者3條邊不構成三角形。
3、方案設計
輸入三條邊a、b、c必須滿足以下條件:
條件1: 1≤a≤100
條件2: 1≤b≤100
條件3: 1≤c≤100
條件4: a<b+c
條件5: b<a+c
條件6: c<a+b
如果輸入值a、b、c滿足條件1、2、3,則輸出下列四種情況之一:
(1)如果不同時滿足條件4、5、6,則程序輸出“不構成三角形”。
(2)如果3條邊相等,則程序輸出為“等邊三角形”。
(3)如果恰好有2條邊相等,則程序輸出為“等腰三角形”。
(4)如果3條邊都不相等,則程序輸出為“一般三角形”。
(5)對於不滿足條件1、2、3的情況,應給出具體提示:“超出范圍”
(6)對於輸入數據不滿足要求的,應給出具體提示“請輸入3個非零正整數”
等價類划分
|
有效等價類 |
號碼 |
無效等價類 |
號碼 |
輸入三個整數 |
整數 |
1 |
a為非整數 一邊為非整數 b為非整數 c為非整數 a,b為非整數 兩邊為非整數 b,c為非整數 a,c為非整數 三邊a,b,c均為非整數 |
12 13 14 15 16 17 18 |
三個數 |
2 |
只給a 只給一邊 只給b 只給c 只給a,b 只給兩邊 只給b,c 只給a,c 給出三個以上 |
19 20 21 22 23 24 25 |
|
非零數 |
3 |
a為0 一邊為零 b為0 c為0 a,b為0 兩邊為零 b,c為0 a,c為0 三邊a,b,c均為0 |
26 27 28 29 30 31 32 |
|
正數 |
4 |
a<0 一邊<0 b<0 c<0 a<0且b<0 二邊<0 a<0且c<0 b<0且c<0 三邊均<0:a<0且b<0且c<0 |
33 34 35 36 37 38 39 |
|
構成一般三角形 |
a+b>c
b+c>a
a+c>b |
5
6
7 |
a+b<c a+b=c b+c<a b+c=a a+c<b a+c=b |
40 41 42 43 44 45 |
構成等腰三角形 |
a=b 且兩邊之 b=c 和大於 a=c 第三邊 |
8 9 10 |
|
|
構成等邊三角形 |
a=b=c |
11 |
|
|
測試用例編號 |
(a,b,c) |
覆蓋等價類 |
預期輸出 |
實際輸出 |
結果 |
T01 |
(3,4,5) |
1-7 |
一般三角形 |
一般三角形 |
|
T02 |
(3,3,5) |
1-7,8 |
等腰三角形 |
等腰三角形 |
|
T03 |
(3,5,5) |
1-7,9 |
等腰三角形 |
等腰三角形 |
|
T04 |
(3,5,3) |
1-7,10 |
等腰三角形 |
等腰三角形 |
|
T05 |
(1,1,1) |
1-7,11 |
等邊三角形 |
等邊三角形 |
|
T06 |
(2.3,4,5) |
12 |
請輸入三個非零正整數 |
不構成三角形 |
|
T07 |
(2,3.3,4) |
13 |
請輸入三個非零正整數 |
不構成三角形 |
|
T08 |
(2,3,4.4) |
14 |
請輸入三個非零正整數 |
不構成三角形 |
|
T09 |
(2.2,2.2,3) |
15 |
請輸入三個非零正整數 |
不構成三角形 |
|
T10 |
(2,3.3,3.3) |
16 |
請輸入三個非零正整數 |
不構成三角形 |
|
T11 |
(2.2,3,2.2) |
17 |
請輸入三個非零正整數 |
不構成三角形 |
|
T12 |
(2.2,2.2,2.2) |
18 |
請輸入三個非零正整數 |
不構成三角形 |
|
T13 |
(3,,) |
19 |
超出范圍 |
不構成三角形 |
|
T14 |
(,3,) |
20 |
超出范圍 |
不構成三角形 |
|
T15 |
(,,3) |
21 |
超出范圍 |
不構成三角形 |
|
T16 |
(3,3,) |
22 |
超出范圍 |
不構成三角形 |
|
T17 |
(,3,3) |
23 |
超出范圍 |
不構成三角形 |
|
T18 |
(3 , 3) |
24 |
超出范圍 |
不構成三角形 |
|
T19 |
|
|
|
|
|
T20 |
(0,1,2) |
26 |
超出范圍 |
不構成三角形 |
|
T21 |
(1,0,2) |
27 |
超出范圍 |
不構成三角形 |
|
T22 |
(1,2,0) |
28 |
超出范圍 |
不構成三角形 |
|
T23 |
(0,0,1) |
29 |
超出范圍 |
不構成三角形 |
|
T24 |
(0,1,0) |
30 |
超出范圍 |
不構成三角形 |
|
T25 |
(1,0,0) |
31 |
超出范圍 |
不構成三角形 |
|
T26 |
(0,0,0) |
32 |
超出范圍 |
不構成三角形 |
|
T27 |
(2,-1,3) |
33 |
超出范圍 |
不構成三角形 |
|
T28 |
(2,1,-3) |
34 |
超出范圍 |
不構成三角形 |
|
T29 |
(-2,1,3) |
35 |
超出范圍 |
不構成三角形 |
|
T30 |
(-2,-1,3) |
36 |
超出范圍 |
不構成三角形 |
|
T31 |
(-2,1,-3) |
37 |
超出范圍 |
不構成三角形 |
|
T32 |
(2,-1,-3) |
38 |
超出范圍 |
不構成三角形 |
|
T33 |
(-2,-1,-3) |
39 |
超出范圍 |
不構成三角形 |
|
T34 |
(3,1,5) |
40 |
不構成三角形 |
不構成三角形 |
|
T35 |
(3,2,5) |
41 |
不構成三角形 |
不構成三角形 |
|
T36 |
(3,1,1) |
42 |
不構成三角形 |
不構成三角形 |
|
T37 |
(3,2,1) |
43 |
不構成三角形 |
不構成三角形 |
|
T38 |
(1,4,2) |
44 |
不構成三角形 |
不構成三角形 |
|
T39 |
(3,4,1) |
45 |
不構成三角形 |
不構成三角形 |
|
測試用例:
1、覆蓋有效等價類的測試用例
用例ID |
a b c |
預期輸出 |
覆蓋等價類號碼 |
1 2 3 4 5 |
3 4 5 4 4 5 4 5 5 5 4 5 4 4 4 |
一般三角形 等腰三角形 等腰三角形 等腰三角形 等邊三角形 |
1—7 1—7,8 1—7,9 1—7,10 1—7,11 |
2、覆蓋無效等價類的測試用例
用例ID |
a b c |
覆蓋等價類號碼 |
預期輸出 |
用例ID |
a b c |
覆蓋等 價類號碼 |
預期輸出
|
6 7 8
|
2.5 4 5 3 4.5 5 3 4 5.5 |
12 13 14
|
無效輸入 無效輸入 無效輸入 |
23 24 25 26 |
0 0 5 3 0 0 0 4 0 0 0 0 |
29 30 31 32 |
無效輸入 無效輸入 無效輸入 無效輸入 |
9 10 11 12 |
3.5 4.5 5 3 4.5 5.5 3.5 4 5.5 3.5 4.5 5.5 |
15 16 17 18 |
無效輸入 無效輸入 無效輸入 無效輸入 |
27 28 29 |
-3 4 5 3 -4 5 3 4 -5 |
33 34 35 |
無效輸入 無效輸入 無效輸入 |
13 14 15 |
3 4 5 |
19 20 21 |
無效輸入 無效輸入 無效輸入
|
30 31 32 33 |
-3 -4 5 -3 4 -5 3 -4 -5 -3 -4 -5 |
36 37 38 39 |
無效輸入 無效輸入 無效輸入 無效輸入 |
16 17 18 19 |
3 4 4 5 3 5 3 4 5 6 |
22 23 24 25 |
無效輸入 無效輸入 無效輸入 無效輸入 |
34 35 36 37 |
3 1 5 3 2 5 3 1 1 3 2 1 |
40 41 42 43 |
非三角形 非三角形 非三角形 非三角形 |
20 21 22 |
0 4 5 3 0 5 3 4 0 |
26 27 28 |
無效輸入 無效輸入 無效輸入 |
38 39 |
1 4 2 3 4 1 |
44 45 |
非三角形 非三角形 |
缺陷報告:
缺陷編號 |
1 |
用例編號 |
40 |
缺陷類型 |
代碼錯誤 |
||||||||
嚴重級別 |
嚴重 |
優先級 |
優先 |
缺陷狀態 |
New |
||||||||
測試階段 |
√單元 □ 集成 □ 系統 □ 驗收 □ 其它( ) |
可重現性 |
√是 □否 |
||||||||||
BUG原因 |
□需求分析√ 基本設計□ 詳細設計□ 設計式樣理解□ 編程 □數據庫設計 □ 環境配置□ 其它 ( ) |
||||||||||||
缺陷描述 |
程序無法正常執行 |
||||||||||||
預期結果 |
程序能運行,並且有運行的結果 |
||||||||||||
重現步驟 |
備注 |
||||||||||||
打開vc++6.0,運行以下源代碼。 #include "iostream.h" void main(){ int a,b,c; cout<<"請輸入三角形的三條邊(界於1-100之間)"<<endl; cin>>a>>b>>c; if(a<=1||a>=100)cout<<"a的值超過允許的范圍!"; if(b<=1||b>=100)cout<<"b的值超過允許的范圍!"; if(c<=1||c>=100)cout<<"c的值超過允許的范圍!";
if(a+b>c||a+c>b||b+c>a)cout<<"a,b,c的值不能構成三角形!"; if(a==b&&b==c)cout<<"是等邊三角形!"; if(a==b||b==c||a==c)cout<<"是等邊三角形!"; if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!"; } 發現錯誤,無法執行。 |
|
||||||||||||
以下部分由BUG修改人填寫 |
|||||||||||||
缺陷修改描述 |
|
||||||||||||
將if語句的“<>”改成“!=” |
|
||||||||||||
測試人 |
|
修正人 |
|
確認人 |
|
修正日期 |
年 月 日 |
||||||