黑盒測試等價類劃分法函數
概念性能
等價類劃分法是把程序的輸入域劃分紅若干部分(子集),而後從每一個部分中選取少數表明性數據做爲測試用例。每一類的表明性數據在測試中的做用等價於這一類中的其餘值。測試
等價類劃分法的應用spa
1.等價類是指某個輸入域的子集合。在該子集合中,各個輸入數據對於揭露程序中的錯誤都是等效的,併合理地假定:測試某等價類的表明值就等於對這一類其它值的測試.所以,能夠把所有輸入數據合理劃分爲若干等價類,在每個等價類中取一個數據做爲測試的輸入條件,就能夠用少許表明性的測試數據.取得較好的測試結果.等價類劃分可有兩種不一樣的狀況:有效等價類和無效等價類。設計
·有效等價類:是指對於程序的規格說明來講是合理的,有意義的輸入數據構成的集合.利用有效等價類可檢驗程序是否實現了規格說明中所規定的功能和性能。變量
·無效等價類:與有效等價類的定義恰巧相反。軟件
設計測試用例時,要同時考慮這兩種等價類.由於,軟件不只要能接收合理的數據,也要能經受意外的考驗.這樣的測試才能確保軟件具備更高的可靠性。程序
2.劃分等價類的六大原則:數據
·在輸入條件規定了取值範圍或值的個數的狀況下,則能夠確立一個有效等價類和兩個無效等價類.英文
例:輸入值是學生成績,範圍是0~100。
·在輸入條件規定了輸入值的集合或者規定了「必須如何」的條件的狀況下,可確立一個有效等價類和一個無效等價類.
·在輸入條件是一個布爾量的狀況下,可肯定一個有效等價類和一個無效等價類. 布爾量是一個二值枚舉類型, 一個布爾量具備兩種狀態: true 和 false 。
·在規定了輸入數據的一組值(假定n個),而且程序要對每個輸入值分別處理的狀況下,可確立n個有效等價類和一個無效等價類.
例:輸入條件說明輸入字符爲:中文、英文、阿拉伯文三種之一,則分別取這三種這三個值做爲三個有效等價類,另外把三種字符以外的任何字符做爲無效等價類。
·在規定了輸入數據必須遵照的規則的狀況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不一樣角度違反規則)
·在確知已劃分的等價類中各元素在程序處理中的方式不一樣的狀況下,則應再將該等價類進一步的劃分爲更小的等價類
3.將等價類轉化成測試用例:
·按照[輸入條件][有效等價類][無效等價類] 創建等價類表,列出全部劃分出的等價類
·爲每個等價類規定一個惟一的編號.
·設計一個新的測試用例,使其儘量多地覆蓋還沒有被覆蓋地有效等價類,重複這一步.直到全部的有效等價類都被覆蓋爲止.
·設計一個新的測試用例,使其僅覆蓋一個還沒有被覆蓋的無效等價類,重複這一步.直到全部的無效等價類都被覆蓋爲止.
等價類劃分實例
1.設有一個檔案管理系統,要求用戶輸入以年月表示的日期。假設日期限定在1990年1月~2049年12月,並規定日期由6位數字字符組成,前4位表示年,後2位表示月。現用等價類劃分法設計測試用例,來測試程序的"日期檢查功能"。(不考慮2月的問題)
1)劃分等價類並編號,下表等價類劃分的結果
輸入等價類
有效等價類
無效等價類
日期的類型及長度
①6位數字字符
②有非數字字符
③少於6位數字字符
④多於6位數字字符
年份範圍
⑤在1990~2049之間
⑥小於1990
⑦大於2049
月份範圍
⑧在01~12之間
⑨等於00
⑩大於12
2)設計測試用例,以便覆蓋全部的有效等價類在表中列出了3個有效等價類,編號分別爲①、⑤、⑧,設計的測試用例以下:
測試數據 指望結果 覆蓋的有效等價類
200211 輸入有效 ①、⑤、⑧
3)爲每個無效等價類設計一個測試用例,設計結果以下:
測試數據 指望結果 覆蓋的無效等價類
95June 無效輸入 ②
20036 無效輸入 ③
2001006 無效輸入 ④
198912 無效輸入 ⑥
200401 無效輸入 ⑦
200100 無效輸入 ⑨
200113 無效輸入 ⑩
2.NextDate 函數包含三個變量:month 、 day 和 year ,函數的輸出爲輸入日期後一天的日期。 例如,輸入爲 2006年3月 7日,則函數的輸出爲 2006年3月8日 。要求輸入變量 month 、 day 和 year 均爲整數值,而且知足下列條件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
1)有效等價類爲:
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
2)若條件 ① ~ ③中任何一個條件失效,則 NextDate 函數都會產生一個輸出,指明相應的變量超出取值範圍,好比 "month 的值不在 1-12 範圍當中 " 。顯然還存在着大量的 year 、 month 、 day 的無效組合, NextDate 函數將這些組合做統一的輸出: " 無效輸入日期 " 。其無效等價類爲:
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
弱通常等價類測試用例
月份 日期 年 預期輸出
6 15 1912 1912年6月16日
強通常等價類測試用例同弱通常等價類測試用例
注:弱--有單缺陷假設;健壯--考慮了無效值
(一)弱健壯等價類測試
用例ID 月份 日期 年 預期輸出
WR1 6 15 1912 1912年6月16日
WR2 -1 15 1912 月份不在1~12中
WR3 13 15 1912 月份不在1~12中
WR4 6 -1 1912 日期不在1~31中
WR5 6 32 1912 日期不在1~31中
WR6 6 15 1811 年份不在1812~2012中
WR7 6 15 2013 年份不在1812~2012中
(二)強健壯等價類測試
用例ID 月份 日期 年 預期輸出
SR1 -1 15 1912 月份不在1~12中
SR2 6 -1 1912 日期不在1~31中
SR3 6 15 1811 年份不在1812~2012中
SR4 -1 -1 1912 兩個無效一個有效
SR5 6 -1 1811 兩個無效一個有效
SR6 -1 15 1811 兩個無效一個有效
SR7 -1 -1 1811 三個無效