黑盒測試用例設計技術--等價類划分法


本文通過案例的形式,詳細講解黑盒測試用例設計技術中的等價類划分法。

等價類划分是一種典型的黑盒測試方法,其原理是把程序的輸入域划分成若干部分(子集),然后從每一個子集中選取少數具有代表性的數據作為測試用例。

通過等價類划分,可以在盡可能覆蓋所有測試路徑的前提下,大幅度減少測試用例的數目。

本文的主要內容有:

  • 等價類的概念介紹
  • 划分等價類的原則
  • 根據等價類設計測試用例的方法
  • 案例演示

划分等價類

等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的。並合理的假設,測試某等價類的代表值就等於對這一類其它值的測試。

等價類划分有兩種不同的情況:

  • 有效等價類:指對於程序的規格說明來說是合理的、有意義的輸入數據構成的集合。
  • 無效等價類:指對程序的規格說明是不合理的或無意義的輸入數據所構成的集合。對於具體的問題,無效等價類至少應有一個,也可能有多個。

在設計測試用例時,要同時考慮有效等價類和無效等價類,以此驗證軟件在正常操作和異常操作時是否都能正常運行。

確定等價類的6條原則:

1、在輸入條件規定了取值范圍或取值的個數的情況下,可以確立一個有效等價類和兩個無效等價類。

  • 例1:輸入值是學生成績,輸入形式為文本框,要求的輸入范圍是0~100
    • 有效等價類:0<=輸入成績<=100;
    • 無效等價類1:輸入成績<0;
    • 無效等價類2:輸入成績>100

2、在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件的情況下,可以確立一個有效等價類和一個無效等價類。

  • 例2:輸入值是人員性別,輸入形式為文本框,要求輸入的內容必須在集合{男,女}中
    • 有效等價類:性別=’男’ 或者 ‘女’
    • 無效等價類:性別=’人妖’

3、在輸入條件是一個布爾量的情況下,可以確立一個有效等價類和一個無效等價類。

  • 例3:輸入值是狀態標識位“是否完成”,輸入形式為單選下拉框,選擇范圍為{是,否}
    • 有效等價類:選項=’是’ 或者 ‘否’
    • 無效等價類:未進行選擇操作

4、在規定了輸入數據的一組值(假設N個),並且程序要對每一個輸入值進行處理的情況下,可以確立N個有效等價類和一個無效等價類。

  • 例4:輸入值是人員性別,輸入形式為文本框,要求輸入的內容必須在集合{男,女}中;不同的性別選擇將跳轉至不同的處理頁面
    • 有效等價類1:性別=’男’
    • 有效等價類2:性別=’女’
    • 無效等價類:性別=’人妖’

5、在規定了輸入數據必須遵守的規則的情況下,可以確立一個有效等價類(符合條件)和若干無效等價類(從各個角度違反規則)。

  • 例5:輸入值是人員性別,輸入形式為單選下拉框,要求輸入的內容必須在集合{男,女}中;
    • 有效等價類:性別=’男’ 或者 ‘女’
    • 無效等價類1:未選擇人員性別
    • 無效等價類2:在瀏覽器開發工具中將人員性別的屬性值更改為’人妖’

6、在確知已划分的等價類中各元素在程序處理中的方式不同的情況下,則應再將該等價類划分為更小的等價類。

  • 例6:在例2(輸入值是人員性別,輸入形式為文本框,要求輸入的內容必須在集合{男,女}中)的基礎上,不同的性別選擇將跳轉至不同的處理頁面
    • 有效等價類:性別=’男’ 或者 ‘女’
      • 有效等價類細分1:性別=’男’
      • 有效等價類細分2:性別=’女’
    • 無效等價類:性別=’人妖’

列出等價類表

輸入條件 有效等價類 無效等價類

確定測試用例

根據已列出的等價類表,按照如下步驟確定測試用例:
1)為每個等價類規定一個唯一的編號
2)設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋。
3)設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步,使所有無效等價類均被覆蓋。

Example1

某程序具有如下功能:輸入3個正數a、b、c,分別作為三邊的邊長構成三角形,輸出這3個數所構成的三角形類型。
用等價類划分方法為該程序進行測試用例設計。

划分等價類

分析思路: 步驟一、要求輸入3個數,且3個數都為正數;參照規則5,划分為一個有效等價類和三個無效等價類。

  • 有效等價類(1):a>0; b>0; c>0;
  • 無效等價類(2):a<=0
  • 無效等價類(3):b<=0
  • 無效等價類(4):c<=0

步驟二、在有效等價類(1)的基礎上,參照規則6,對該等價類進行細分;考察3個數能否構成三角形,參照規則5,划分為一個有效等價類和三個無效等價類。

  • 有效等價類(5):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a
  • 無效等價類(6):a>0; b>0; c>0; a+b<=c
  • 無效等價類(7):a>0; b>0; c>0; b+c<=a
  • 無效等價類(8):a>0; b>0; c>0; a+c<=b

步驟三、在有效等價類(5)的基礎上,參照規則6,對該等價類進行細分;考察3個數能否構成等邊三角形,參照規則2,划分為一個有效等價類和一個無效等價類。

  • 有效等價類(9):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a=b=c
  • 無效等價類(10):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a!=b 或 b!=c 或 c!=a

步驟四、在無效等價類(10)的基礎上,參照規則6,對該等價類進行細分;考察3個數能否構成等腰三角形,參照規則4,划分為三個有效等價類和一個無效等價類。

  • 有效等價類(11):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a=b!=c
  • 有效等價類(12):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; b=c!=a
  • 有效等價類(13):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; c=a!=b
  • 無效等價類(14):a>0; b>0; c>0; a+b>c; a+c>b; b+c>a; a!=b; a!=c; b!=c

設計測試用例

序號 [a,b,c] 覆蓋等價類 預期輸出結果
覆蓋有效等價類
1 [6,6,6] (1)(5)(9) 等邊三角形
2 [3,3,5] (1)(5)(10)(11) 等腰三角形
3 [3,4,4] (1)(5)(10)(12) 等腰三角形
4 [4,5,4] (1)(5)(10)(13) 等腰三角形
覆蓋無效等價類
5 [3,4,5] (1)(5)(14) 一般三角形
6 [-1,3,2] (2) 不能構成三角形
7 [3,-1,2] (3) 不能構成三角形
8 [3,2,-1] (4) 不能構成三角形
9 [1,2,3] (1)(6) 不能構成三角形
10 [3,1,2] (1)(7) 不能構成三角形
11 [1,3,2] (1)(8) 不能構成三角形

Example2


某程序具有如下功能:文本框要求輸入日期信息,日期限定在1990年1月~2049年12月,並規定日期由6位數字字符組成,前4位表示年,后2位表示月;程序需對輸入的日期有效性進行校驗。
用等價類划分方法為該程序的“日期檢查功能”設計測試用例。

划分等價類

步驟一、要求輸入6個數字字符yyyynn;參照規則5,划分為一個有效等價類和三個無效等價類。

  • 有效等價類(1):輸入6個數字字符
  • 無效等價類(2):輸入6個字符,存在非數字的情況
  • 無效等價類(3):輸入少於6個字符
  • 無效等價類(4):輸入多於6個字符

步驟二、在有效等價類(1)的基礎上,參照規則6,對該等價類進行細分;考察6個數是否滿足日期格式要求,1990<=yyyy<=2049,01<=nn<=12,參照規則,划分為一個有效等價類和四個無效等價類。

  • 有效等價類(5):日期格式滿足要求,1990<=yyyy<=2049,01<=nn<=12
  • 無效等價類(6):yyyy不滿足要求,yyyy<1990
  • 無效等價類(7):yyyy不滿足要求,yyyy>2049
  • 無效等價類(8):nn不滿足要求,nn<01
  • 無效等價類(9):nn不滿足要求,nn>12

設計測試用例

序號 yyyynn 覆蓋等價類 預期輸出結果
覆蓋有效等價類
1 199307 (1)(5) 日期格式有效
覆蓋無效等價類
2 19June (2) 日期格式無效
3 19Jun (3) 日期格式無效
4 19June2 (4) 日期格式無效
5 198805 (6) 日期格式無效
6 205005 (7) 日期格式無效
7 198800 (8) 日期格式無效
8 199513 (9) 日期格式無效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM