黑盒測(cè)試用例設(shè)計(jì)方法包括等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測(cè)法、因果圖法、判定表驅(qū)動(dòng)法、正交試驗(yàn)設(shè)計(jì)法、功能圖法等等。
1.等價(jià)類是指某個(gè)輸入域的子集合
在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試.因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,就可以用少量代表性的測(cè)試數(shù)據(jù).取得較好的測(cè)試結(jié)果.等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無效等價(jià)類。
·有效等價(jià)類:
是指對(duì)于程序的規(guī)格說明來說是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合.利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明中所規(guī)定的功能和性能。
·無效等價(jià)類:
與有效等價(jià)類的定義恰巧相反。
設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類.因?yàn)?軟件不僅要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn).這樣的測(cè)試才能確保軟件具有更高的可靠性。
2.劃分等價(jià)類的六大原則:
·在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類.
例:輸入值是學(xué)生成績(jī),范圍是0~100:
·在輸入條件規(guī)定了輸入值的集合或者規(guī)定了“必須如何”的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.
·在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.布爾量是一個(gè)二值枚舉類型, 一個(gè)布爾量具有兩種狀態(tài): true 和false。
·在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類.
例:輸入條件說明輸入字符為:中文、英文、阿拉伯文三種之一,則分別取這三種這三個(gè)值作為三個(gè)有效等價(jià)類,另外把三種字符之外的任何字符作為無效等價(jià)類。
·在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無效等價(jià)類(從不同角度違反規(guī)則)
·在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類
3.將等價(jià)類轉(zhuǎn)化成測(cè)試用例:
·按照[輸入條件][有效等價(jià)類][無效等價(jià)類]建立等價(jià)類表,列出所有劃分出的等價(jià)類
·為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào).
·設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步.直到所有的有效等價(jià)類都被覆蓋為止.
·設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步.直到所有的無效等價(jià)類都被覆蓋為止.
1.1.等價(jià)類劃分實(shí)例
1.某程序規(guī)定:"輸入三個(gè)整數(shù)a、b、c分別作為三邊的邊長(zhǎng)構(gòu)成三角形。通過程序判定所構(gòu)成的三角形的類型,當(dāng)此三角形為一般三角形、等腰三角形及等邊三角形時(shí),分別作計(jì)算… "。用等價(jià)類劃分方法為該程序進(jìn)行測(cè)試用例設(shè)計(jì)。(三角形問題的復(fù)雜之處在于輸入與輸出之間的關(guān)系比較復(fù)雜。)
分析題目中給出和隱含的對(duì)輸入條件的要求:
(1)整數(shù)(2)三個(gè)數(shù)(3)非零數(shù)(4)正數(shù)
(5)兩邊之和大于第三邊(6)等腰(7)等邊
如果a、b、c滿足條件(1)~(4),則輸出下列四種情況之一:
1)如果不滿足條件(5),則程序輸出為"非三角形"。
2)如果三條邊相等即滿足條件(7),則程序輸出為"等邊三角形"。
3)如果只有兩條邊相等、即滿足條件(6),則程序輸出為"等腰三角形"。
4)如果三條邊都不相等,則程序輸出為"一般三角形"。
列出等價(jià)類表并編號(hào)

覆蓋有效等價(jià)類的測(cè)試用例:
a????? b????? c覆蓋等價(jià)類號(hào)碼
3????? 4????? 5(1)--(7)
4????? 4????? 5(1)--(7),(8)
4????? 5????? 5(1)--(7),(9)
5????? 4????? 5(1)--(7),(10)
4????? 4????? 4(1)--(7),(11)
覆蓋無效等價(jià)類的測(cè)試用例:

2.設(shè)有一個(gè)檔案管理系統(tǒng),要求用戶輸入以年月表示的日期。假設(shè)日期限定在1990年1月~2049年12月,并規(guī)定日期由6位數(shù)字字符組成,前4位表示年,后2位表示月?,F(xiàn)用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來測(cè)試程序的"日期檢查功能"。(不考慮2月的問題)
1)劃分等價(jià)類并編號(hào),下表等價(jià)類劃分的結(jié)果

2)設(shè)計(jì)測(cè)試用例,以便覆蓋所有的有效等價(jià)類在表中列出了3個(gè)有效等價(jià)類,編號(hào)分別為①、⑤、⑧,設(shè)計(jì)的測(cè)試用例如下:
測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的有效等價(jià)類
200211輸入有效①、⑤、⑧
3)為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,設(shè)計(jì)結(jié)果如下:
測(cè)試數(shù)據(jù)期望結(jié)果覆蓋的無效等價(jià)類
95June無效輸入②
20036無效輸入③
2001006無效輸入④
198912無效輸入⑥
200401無效輸入⑦
200100無效輸入⑨
200113無效輸入⑩
3.NextDate函數(shù)包含三個(gè)變量:month、day和year,函數(shù)的輸出為輸入日期后一天的日期。例如,輸入為2006年3月7日,則函數(shù)的輸出為2006年3月8日。要求輸入變量month、day和year均為整數(shù)值,并且滿足下列條件:
①1≤month≤12
②1≤day≤31
③1920≤year≤2050
1)有效等價(jià)類為:
M1={月份:1≤月份≤12}
D1={日期:1≤日期≤31}
Y1={年:1812≤年≤2012}
2)若條件①~③中任何一個(gè)條件失效,則NextDate函數(shù)都會(huì)產(chǎn)生一個(gè)輸出,指明相應(yīng)的變量超出取值范圍,比如"month的值不在1-12范圍當(dāng)中"。顯然還存在著大量的year、month、day的無效組合,NextDate函數(shù)將這些組合作統(tǒng)一的輸出:"無效輸入日期"。其無效等價(jià)類為:
M2={月份:月份<1}
M3={月份:月份>12}
D2={日期:日期<1}
D3={日期:日期>31}
Y2={年:年<1812}
Y3={年:年>2012}
弱一般等價(jià)類測(cè)試用例
月份日期年預(yù)期輸出
6????? ?15??????? 1912?????????? 1912年6月16日
強(qiáng)一般等價(jià)類測(cè)試用例同弱一般等價(jià)類測(cè)試用例
注:弱--有單缺陷假設(shè);健壯--考慮了無效值
(一)弱健壯等價(jià)類測(cè)試
用例ID月份日期年預(yù)期輸出
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中
(二)強(qiáng)健壯等價(jià)類測(cè)試
用例ID月份日期年預(yù)期輸出
SR1?????? -1???? ?15?????? 1912月份不在1~12中
SR2??????? 6????? -1??????? 1912日期不在1~31中
SR3??????? 6????? 15?????? 1811年份不在1812~2012中
SR4?????? -1????? -1???????1912兩個(gè)無效一個(gè)有效
SR5??????? 6????? -1??????? 1811兩個(gè)無效一個(gè)有效
SR6????? ?-1????? 15?????? 1811兩個(gè)無效一個(gè)有效
SR7?????? -1????? -1???????1811三個(gè)無效
4.傭金問題等價(jià)類測(cè)試用例,它是根據(jù)傭金函數(shù)的輸出值域定義等價(jià)類,來改進(jìn)測(cè)試用例集合。
輸出銷售額≤1000元傭金10%
1000<銷售額≤1800傭金=100+(銷售額-1000)*15%
銷售額>1800傭金=220+(銷售額-1800)*20%
測(cè)試用例槍機(jī)(45)槍托(30)槍管(25)銷售額傭金
1?????????????? 5?????????? ? 5???????????? ?? 5??????????????? ? 500?????? ?50
2????????????? 15?????????? 15????????????? 15???????????????? 1500175
3????????????? 25????????? ?25????????????? 25???????????????? 2500?????? 360
根據(jù)輸出域選擇輸入值,使落在輸出域等價(jià)類內(nèi),可以結(jié)合弱健壯測(cè)試用例結(jié)合。