前言:為了在測(cè)試業(yè)務(wù)中能夠更加熟練編寫(xiě)測(cè)試用例廓俭,現(xiàn)對(duì)黑盒測(cè)試作簡(jiǎn)要總結(jié)云石。
一、相關(guān)概念
根據(jù)測(cè)試方式來(lái)進(jìn)行分類的話研乒,軟件測(cè)試可以分為黑盒測(cè)試汹忠、白盒測(cè)試和灰盒測(cè)試。
在黑盒測(cè)試中,我們進(jìn)行一些輸入宽菜,得到某些輸出結(jié)果谣膳,只知道程序做了什么,無(wú)需了解程序的內(nèi)部結(jié)構(gòu)铅乡。黑盒測(cè)試又稱為功能性測(cè)試或行為測(cè)試继谚,它是一種數(shù)據(jù)驅(qū)動(dòng)的測(cè)試,或者說(shuō)輸入/輸出驅(qū)動(dòng)的測(cè)試阵幸;目標(biāo)在于找出程序不符合規(guī)格說(shuō)明書(shū)的地方花履。
二、黑盒測(cè)試的測(cè)試用例設(shè)計(jì)方法
1. 等價(jià)類劃分法
等價(jià)類劃分的目標(biāo)是把可能的測(cè)試用例集縮減到可控制且仍然足以測(cè)試軟件的小范圍內(nèi)挚赊。等價(jià)類包括了有效等價(jià)類和無(wú)效等價(jià)類诡壁。其中,有效等價(jià)類代表對(duì)程序的有效輸入荠割,而無(wú)效等價(jià)類代表其他任何可能的輸入條件(即不正確的輸入值)妹卿。
使用等價(jià)劃分法設(shè)計(jì)測(cè)試用例主要有兩個(gè)步驟:
1.確定等價(jià)類
2.生成測(cè)試用例,過(guò)程如下:
(1).為每個(gè)等價(jià)類設(shè)置一個(gè)不同的編號(hào)蔑鹦。
(2).對(duì)于有效等價(jià)類夺克,每個(gè)測(cè)試用例都要盡可能多地覆蓋那些還沒(méi)有被涵蓋的有效等價(jià)類,直到所有的有效等價(jià)類都被測(cè)試用例所覆蓋嚎朽。
(3).對(duì)于無(wú)效等價(jià)類铺纽,每個(gè)測(cè)試用例只能覆蓋一個(gè)還沒(méi)有被涵蓋的無(wú)效等價(jià)類,直到所有的無(wú)效等價(jià)類都被測(cè)試用例所覆蓋火鼻。
注:用單個(gè)測(cè)試用例覆蓋無(wú)效等價(jià)類室囊,是因?yàn)樵谝恍┹斎脲e(cuò)誤檢查中,可能會(huì)出現(xiàn)優(yōu)先級(jí)高的輸入錯(cuò)誤檢查屏蔽或者取代優(yōu)先級(jí)低的輸入錯(cuò)誤檢查的情況魁索。
等價(jià)劃分的技巧:
(1).一定要考慮建立處理默認(rèn)值融撞,空白,空值粗蔚,零值或者無(wú)輸入等條件的等價(jià)劃分尝偎;
(2).無(wú)效等價(jià)類要注意非法,錯(cuò)誤鹏控,不正確和垃圾數(shù)據(jù)致扯。比如軟件要求輸入數(shù)字,就輸入字母当辐;只接受正數(shù)抖僵,就輸入負(fù)數(shù)等等。
舉個(gè)例子
注冊(cè)網(wǎng)易163郵箱時(shí)缘揪,郵箱名要求6~18個(gè)字符耍群,可使用字母义桂、數(shù)字、下劃線蹈垢,需以字母開(kāi)頭慷吊。
等價(jià)類列舉表如下:
注:非打印字符指在計(jì)算機(jī)中有一些字符是確確實(shí)實(shí)存在,但是它們不能夠顯示或者打印出來(lái)。以ASCII碼表為例曹抬,ASCII碼值在0-31的為控制字符溉瓶,無(wú)法顯示和打印。
根據(jù)等價(jià)類表編寫(xiě)測(cè)試用例:
ps:紅框中的-4是WPS的bug谤民,輸入(4)或者(4)都自動(dòng)變成-4堰酿,不是我寫(xiě)錯(cuò)了~~
2. 邊界值分析法
如果在懸崖峭壁邊可以自信而安全地行走而不掉下去,平地就幾乎不在話下了张足。如果軟件能在其邊界運(yùn)行胞锰,那么在正常情況下就應(yīng)該不會(huì)有什么問(wèn)題。
所謂邊界條件兢榨,指的是輸入和輸出等價(jià)類中那些恰好處于邊界,或超出邊界顺饮,或在邊界以下的狀態(tài)吵聪。
邊界值分析法實(shí)際上是對(duì)等價(jià)類劃分法的補(bǔ)充,是對(duì)輸入輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法兼雄。
邊界值分析的技巧:
(1).提出邊界條件時(shí)吟逝,一定要測(cè)試臨近邊界的有效數(shù)據(jù),測(cè)試最后一個(gè)可能有效的數(shù)據(jù)耍休,同時(shí)測(cè)試剛超過(guò)邊界的無(wú)效數(shù)據(jù)巡莹。
(2).如果要選擇在等價(jià)劃分中包含哪些數(shù)據(jù)纷闺,就根據(jù)邊界來(lái)選擇。
相關(guān)擴(kuò)展:
邊界條件一般在產(chǎn)品說(shuō)明書(shū)中有定義囱井,或者在使用軟件的過(guò)程中很容易找到。而次邊界條件趣避,又稱為內(nèi)部邊界條件庞呕,位于軟件內(nèi)部,最終用戶看不到程帕。比如為了獲得更高的精度住练,復(fù)雜的數(shù)值分析程序根據(jù)數(shù)字大小可能切換到不同的等式以解決問(wèn)題。而這在黑盒測(cè)試中對(duì)于測(cè)試人員來(lái)說(shuō)是不可見(jiàn)的愁拭。
由于所測(cè)試的軟件可能有許多其他的次邊界條件讲逛,軟件測(cè)試員需要與開(kāi)發(fā)人員交流,獲得應(yīng)該測(cè)試的次邊界條件的建議岭埠。
使用邊界值分析法來(lái)對(duì)等價(jià)類劃分法中的例子進(jìn)行補(bǔ)充優(yōu)化:
郵箱名要求6~18個(gè)字符盏混,那么應(yīng)根據(jù)5蔚鸥,6,7括饶,17株茶,18,19個(gè)字符的情況來(lái)設(shè)計(jì)測(cè)試用例图焰。
補(bǔ)充優(yōu)化后的測(cè)試用例表如下:
3. 因果圖分析法
因果圖是一種形式語(yǔ)言启盛,用自然語(yǔ)言描述的規(guī)格說(shuō)明可以轉(zhuǎn)換為因果圖。它彌補(bǔ)了等價(jià)類劃分法和邊界值分析法的一個(gè)缺點(diǎn)技羔,即未對(duì)輸入條件的組合進(jìn)行分析僵闯。
因果圖關(guān)系細(xì)分的話有4種,圖例說(shuō)明如下:
(a) 恒等:若c1=1藤滥,e1=1鳖粟;若c1=0,e1=0拙绊;
(b) 非:若c1=1向图,e1=0;若c1=0标沪,e1=1榄攀;
(c) 或:只有c1,c2金句,c3都為0時(shí)檩赢,e1=0;其余情況e1=1违寞;
(d) 與:只有c1贞瞒,c2,c3都為1時(shí)趁曼,e1=0军浆;其余情況e1=0;
輸入條件有多個(gè)的情況下挡闰,它們相互之間可能存在依賴關(guān)系瘾敢,比如需要兩個(gè)輸入條件同時(shí)出現(xiàn)或者存在限制,兩個(gè)輸入條件不可能同時(shí)出現(xiàn)尿这。這就是約束簇抵。同樣的,輸出結(jié)果也會(huì)有約束射众。約束符號(hào)說(shuō)明如下:
輸入條件的約束有4種:
E約束(異):a碟摆,b不能同時(shí)為1;
I約束(或):a叨橱,b典蜕,c不能同時(shí)為0断盛;
O約束(唯一):a和b必須出現(xiàn)一個(gè),且僅有一個(gè)是1愉舔;
R約束(要求):當(dāng)a=1時(shí)钢猛,要求b=1;不可能說(shuō)a=1而b=0轩缤;
輸出結(jié)果的約束只有1種:
M約束(強(qiáng)制):如果a=1命迈,則b會(huì)被強(qiáng)制為0。
使用因果圖法設(shè)計(jì)測(cè)試用例過(guò)程如下:
(1).將規(guī)格說(shuō)明分解為可執(zhí)行的片段火的。
這是因?yàn)橐蚬麍D不善于處理較大的規(guī)格說(shuō)明壶愤。
(2).確定規(guī)格說(shuō)明中的因果關(guān)系。
所謂“因”馏鹤,是指一個(gè)明確的輸入條件或輸入條件的等價(jià)類征椒。所謂“果”,是指一個(gè)輸出條件或系統(tǒng)轉(zhuǎn)換(輸入對(duì)程序或系統(tǒng)狀態(tài)的延續(xù)影響)湃累。通過(guò)逐字逐句地閱讀規(guī)格說(shuō)明勃救,同時(shí)標(biāo)識(shí)出描述“因”和“果”的文字或句子,就可以將“因”和“果”確定出來(lái)治力。
(3).分析規(guī)格說(shuō)明的語(yǔ)義內(nèi)容剪芥,并將其轉(zhuǎn)換為連接因果關(guān)系的布爾圖,即因果圖琴许。
(4).給圖加上注解符號(hào),說(shuō)明由于語(yǔ)法或環(huán)境的限制而不能聯(lián)系起來(lái)的“因”和“果”溉躲。
(5).將因果圖轉(zhuǎn)換成一個(gè)有限項(xiàng)的判定表榜田。
(6).將判定表中的列轉(zhuǎn)換成測(cè)試用例。
ps:(5)和(6)在判定表法/決策表法中進(jìn)行锻梳。
舉個(gè)簡(jiǎn)單的例子:
某軟件規(guī)格說(shuō)明書(shū)包含這樣的要求:第一列字符必須是A或B箭券,第二列字符必須是一個(gè)數(shù)字,在此情況下進(jìn)行文件的修改疑枯,但如果第一列字符不正確辩块,則給出信息L;如果第二列字符不是數(shù)字荆永,則給出信息M废亭。
分析規(guī)格說(shuō)明書(shū),列出輸入條件和輸出結(jié)果:
輸入條件(因):
1——第一列是A
2——第一列是B
3——第二列是一個(gè)數(shù)字
輸出結(jié)果(果):
21——對(duì)文件進(jìn)行修改
22——給出信息L
23——給出信息M
得到的因果圖如下:
復(fù)雜點(diǎn)的實(shí)例可以參考:http://www.51testing.com/html/34/247534-153313.html
4. 判定表法/決策表法
判定表又稱為決策表具钥。在因果圖比較復(fù)雜且繪制過(guò)程較為繁瑣的情況下豆村,我們可以根據(jù)因果圖來(lái)制定判定表。
建立判定表的步驟有:
(1).選擇一個(gè)“果”作為當(dāng)前狀態(tài)骂删。
(2).對(duì)因果圖進(jìn)行回溯掌动,查找導(dǎo)致該“果”為1的所有“因”的組合四啰,要注意約束條件,有一些“因”的組合在有約束條件的情況下是不存在的粗恢。
(3).在判定表中為每個(gè)“因”的組合生成一列柑晒。
(4).對(duì)于每種“因”的組合,判斷所有其他“果”的狀態(tài)眷射,并放置在一列中匙赞。
把因果圖中的例子轉(zhuǎn)化成判定表:
把判定表的每一列拿出來(lái)作為依據(jù),設(shè)計(jì)測(cè)試用例凭迹。
注:黃色兩列為不可能出現(xiàn)的情況罚屋,需要排除;綠色一行為中間結(jié)果嗅绸。
5. 錯(cuò)誤猜測(cè)法
錯(cuò)誤猜測(cè)法依賴于直覺(jué)脾猛。其基本思想是列舉出可能犯的錯(cuò)誤或錯(cuò)誤易發(fā)情況的清單,然后根據(jù)清單來(lái)編寫(xiě)測(cè)試用例鱼鸠。另一個(gè)思想是猛拴,在閱讀規(guī)格說(shuō)明時(shí)聯(lián)系程序員可能做的假設(shè)來(lái)確定測(cè)試用例。
錯(cuò)誤猜測(cè)法的要素共有三點(diǎn)蚀狰,分別為:經(jīng)驗(yàn)愉昆、知識(shí)、直覺(jué)麻蹋。
優(yōu)點(diǎn):
1. 充分發(fā)揮人的直覺(jué)和經(jīng)驗(yàn)
2. 集思廣益
3. 方便使用
4. 快速容易切入
缺點(diǎn):
1. 難以知道測(cè)試的覆蓋率
2. 可能丟失大量未知的區(qū)域
3. 帶有主觀性且難以復(fù)制
一般情況下跛溉,我們使用錯(cuò)誤猜測(cè)法來(lái)對(duì)測(cè)試用例進(jìn)行補(bǔ)充。
6. 場(chǎng)景法
事件觸發(fā)時(shí)的情景形成了場(chǎng)景扮授,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成了事件流芳室。
在場(chǎng)景法中,測(cè)試流程是軟件功能按照正確的事件流實(shí)現(xiàn)的一條正確流程刹勃,我們把這個(gè)稱為該軟件的基本流堪侯;而凡是出現(xiàn)故障或缺陷的過(guò)程,就用備選流加以標(biāo)注荔仁。如下圖所示:
從示意圖中可以看到伍宦,直黑線表示基本流,是經(jīng)過(guò)用例的最簡(jiǎn)單的路徑乏梁;備選流則用不同的色彩表示次洼。從開(kāi)始用例到結(jié)束用例,有1個(gè)基本流和4個(gè)備選流遇骑,選取流經(jīng)不同的路徑滓玖,得到8種場(chǎng)景。分別是:
場(chǎng)景1:基本流
場(chǎng)景2:基本流 備選流1
場(chǎng)景3:基本流 備選流1 備選流2
場(chǎng)景4:基本流 備選流3
場(chǎng)景5:基本流 備選流3 備選流1
場(chǎng)景6:基本流 備選流3 備選流1 備選流2
場(chǎng)景7:基本流 備選流4
場(chǎng)景8:基本流 備選流3 備選流4
使用場(chǎng)景法設(shè)計(jì)測(cè)試用例的步驟是:
(1).根據(jù)說(shuō)明质蕉,描述出程序的基本流及各項(xiàng)備選流势篡;
(2).根據(jù)基本流和各項(xiàng)備選流生成不同的場(chǎng)景翩肌;
(3).對(duì)每一個(gè)場(chǎng)景生成相應(yīng)的測(cè)試用例;
(4).對(duì)生成的所有測(cè)試用例重新復(fù)審禁悠,去掉多余的測(cè)試用例念祭,測(cè)試用例確定后,對(duì)每一個(gè)測(cè)試用例確定測(cè)試數(shù)據(jù)值碍侦。
還是舉個(gè)例子:
以在淘寶上買(mǎi)水杯為例粱坤,整個(gè)購(gòu)買(mǎi)過(guò)程為:用戶登錄到網(wǎng)站后,進(jìn)行水杯的選擇瓷产,當(dāng)選好自己心儀的水杯后站玄,加入購(gòu)物車,進(jìn)行結(jié)帳的時(shí)候濒旦,生成訂單并付款株旷,整個(gè)購(gòu)物過(guò)程結(jié)束。
首先我們需要根據(jù)描述確定基本流和備選流:
根據(jù)基本流和備選流來(lái)確定場(chǎng)景:
下圖顯示了一種通用格式尔邓,其中各行代表各個(gè)測(cè)試用例晾剖,而各列則代表測(cè)試用例的信息。V表明這個(gè)條件是 VALID(有效的)梯嗽, I表明這個(gè)條件是 INVALID(無(wú)效的)齿尽,n/a(不適用)表明這個(gè)條件不適用于測(cè)試用例。
上表中灯节,我們把每個(gè)場(chǎng)景成立的條件進(jìn)行了分析循头,基本上已經(jīng)確定了測(cè)試用例的數(shù)量,現(xiàn)在只要把真實(shí)數(shù)據(jù)填上炎疆,那么整個(gè)測(cè)試用例就完成了卡骂。
7. 功能圖法
功能圖由狀態(tài)遷移圖和布爾函數(shù)組成。狀態(tài)遷移圖用狀態(tài)和遷移來(lái)描述磷雇。一個(gè)狀態(tài)指出數(shù)據(jù)輸入的位置(或時(shí)間),而遷移則指明狀態(tài)的改變躏救。同時(shí)要依靠因果圖或判定表表示的邏輯功能唯笙。
若用節(jié)點(diǎn)代替狀態(tài),用弧線代替遷移,則狀態(tài)遷移圖就可轉(zhuǎn)化成一個(gè)程序的控制流程圖形式盒使。問(wèn)題就轉(zhuǎn)化為程序的路徑測(cè)試(如白盒測(cè)試)問(wèn)題了崩掘。
仍然是舉個(gè)例子:
根據(jù)流程圖列表:
測(cè)試用例可以根據(jù)以上的表格來(lái)設(shè)計(jì)。設(shè)計(jì)的思路:每一條路徑是一條測(cè)試用例少办。
8. 正交試驗(yàn)法
定義:從大量的(實(shí)驗(yàn))數(shù)據(jù)(測(cè)試?yán)┲刑暨x適量的苞慢,有代表性的點(diǎn)(例),從而合理地安排實(shí)驗(yàn)(測(cè)試)的一種科學(xué)實(shí)驗(yàn)設(shè)計(jì)方法英妓。
正交試驗(yàn)法感覺(jué)自己理解得不是很透徹挽放,不能講得很好绍赛。之后理解了會(huì)再進(jìn)行補(bǔ)充。參考講的比較細(xì)的一篇:https://blog.csdn.net/wd168/article/details/51736105
三辑畦、測(cè)試策略
綜合上述幾種方法吗蚌,組合出一個(gè)整體的策略:
1、如果需求文檔中包含輸入條件組合的情況纯出,應(yīng)首先使用因果圖分析法蚯妇。
2、在任何情況下都應(yīng)使用邊界值分析法暂筝。
3箩言、為輸入和輸出確定有效和無(wú)效等價(jià)類。
4焕襟、使用錯(cuò)誤猜測(cè)法完善測(cè)試用例陨收。
5、根據(jù)具體項(xiàng)目合理使用場(chǎng)景法胧洒、功能圖法畏吓、正交試驗(yàn)法。
參考文獻(xiàn):
《軟件測(cè)試》第2版
《軟件測(cè)試的藝術(shù)》第3版