呂宣姣
(中山大學(xué)南方學(xué)院,廣州 510970)
?
軟件測(cè)試之黑白盒策略的應(yīng)用
呂宣姣
(中山大學(xué)南方學(xué)院,廣州510970)
摘要:軟件測(cè)試是試圖發(fā)現(xiàn)程序中錯(cuò)誤的破壞性出過程,黑盒測(cè)試和白盒測(cè)試作為軟件測(cè)試常用的兩種策略,有利于設(shè)計(jì)成功的測(cè)試用例,盡可能多地發(fā)現(xiàn)程序中的缺陷,以下主要通過實(shí)例介紹這兩種測(cè)試策略的應(yīng)用。
關(guān)鍵詞:黑盒測(cè)試;白盒測(cè)試;缺陷;軟件測(cè)試
隨著科技的發(fā)展,軟件產(chǎn)品已應(yīng)用于社會(huì)的各個(gè)領(lǐng)域,從日常生活中的手機(jī)通話、銀行ATM機(jī)操作到機(jī)器人、航空航天,我們都可以感受到軟件帶來(lái)的方便與快捷。可以說(shuō),沒有軟件,我們的生活將不可想象。隨著軟件功能的增多與增強(qiáng),軟件系統(tǒng)也變得越來(lái)越龐大,越來(lái)越復(fù)雜。眾所周知,世界上沒有完美的軟件,其原因大致可分為:輸入量太大、輸出結(jié)果太多、軟件實(shí)現(xiàn)途徑太多、軟件說(shuō)明書沒有客觀標(biāo)準(zhǔn)等[1]。日常生活中,每天都有可能會(huì)發(fā)生一些由軟件缺陷引起的問題:手機(jī)無(wú)法正常通話、火星探測(cè)器在太空丟失、銀行系統(tǒng)重復(fù)扣款或取出異常數(shù)額的現(xiàn)金、操作系統(tǒng)異常重啟等。因此,對(duì)軟件進(jìn)行充分的測(cè)試就顯得尤為重要。所謂軟件測(cè)試是指利用工程方法和測(cè)試工具對(duì)軟件產(chǎn)品進(jìn)行功能、性能、可靠性等多方面的測(cè)試,最大限度找出產(chǎn)品存在的問題、缺陷或偏差。本文主要介紹軟件測(cè)試中常用的兩種工程方法或策略,即:黑盒測(cè)試與白盒測(cè)試。下文將通過實(shí)例詳細(xì)描述如何運(yùn)用這兩種方法對(duì)系統(tǒng)軟件進(jìn)行測(cè)試,以發(fā)現(xiàn)其可能存在的缺陷并解決之。
1.1黑盒測(cè)試
所謂黑盒測(cè)試,即測(cè)試人員可以無(wú)需關(guān)注軟件是如何實(shí)現(xiàn)和運(yùn)行的,只需明確輸入和輸出即可。其中,最為常用的黑盒測(cè)試要算等價(jià)類劃分和邊界值分析法[1],等價(jià)類劃分[2]是一種典型的、重要的黑盒測(cè)試方法,它將程序所有可能的輸入數(shù)據(jù)(有效的和無(wú)效的)劃分成若干個(gè)等價(jià)類。然后從每個(gè)部分中選取具有代表性的數(shù)據(jù)當(dāng)作測(cè)試用例進(jìn)行合理的分類,測(cè)試用例由有效等價(jià)類和無(wú)效等價(jià)類的代表組成,從而保證測(cè)試用例具有完整性和代表性。邊界值分析法[2]就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法。通常邊界值分析法是作為對(duì)等價(jià)類劃分法的補(bǔ)充,這種情況下,其測(cè)試用例通常來(lái)自等價(jià)類的邊界。
以某電子產(chǎn)品的指示燈為例,假設(shè)某接口函數(shù)的輸入?yún)?shù)為(整型數(shù)據(jù)),控制的是該電子產(chǎn)品的紅、黃、綠三盞燈,的定義為:
(1)當(dāng)-10≤l<0時(shí),紅燈亮;
(2)當(dāng)0≤l<10時(shí),綠燈亮;
(3)當(dāng)10≤l<20時(shí),黃燈亮;
(4)l為其他值時(shí),任何一盞燈都不亮。
為了驗(yàn)證輸入?yún)?shù)對(duì)顯示燈的控制結(jié)果,測(cè)試人員會(huì)設(shè)計(jì)不同的輸入?yún)?shù)來(lái)進(jìn)行驗(yàn)證。以等價(jià)類劃分為例,測(cè)試人員可能會(huì)用到-5,6,18這三個(gè)值來(lái)驗(yàn)證(當(dāng)然也可以使用滿足條件的其他數(shù)據(jù)進(jìn)行驗(yàn)證),期望得到的結(jié)果顯然分別是:紅燈亮、綠燈亮、黃燈亮。考慮到測(cè)試效果、測(cè)試成本以及交付進(jìn)度,測(cè)試人員不可能對(duì)所有整數(shù)一一進(jìn)行驗(yàn)證,因?yàn)檎G闆r下(排除硬件環(huán)境異常),l取-5與[-10,5)∪(5,0)范圍內(nèi)任何一個(gè)整型數(shù)據(jù)的結(jié)果都一致;取6與[0,6)∪(6,10)范圍內(nèi)任何一個(gè)整型數(shù)據(jù)的結(jié)果都一致;取18與[10,18)∪(18,20)范圍內(nèi)任何一個(gè)整型數(shù)據(jù)的結(jié)果都一致;這是使燈亮的一類數(shù)據(jù),另外一類數(shù)據(jù),如:-20和30,輸入后,任何一盞燈都不亮,此類驗(yàn)證數(shù)據(jù)即屬于無(wú)效等價(jià)類的范圍。
作為等價(jià)類劃分的補(bǔ)充,測(cè)試人員會(huì)對(duì)數(shù)-11、-10、0、10、20進(jìn)行驗(yàn)證,結(jié)果應(yīng)該為:
l=-11時(shí),任何一盞都不燈亮;
l=-10時(shí),紅燈亮;
l=0時(shí),綠燈亮;
l=10時(shí),黃燈亮;
l=20時(shí),任何一盞都不燈亮。
這樣的取值思路使用的就是邊界值分析法。
1.2白盒測(cè)試
白盒測(cè)試,測(cè)試人員需要了解軟件具體的設(shè)計(jì)與實(shí)現(xiàn)原理。白盒測(cè)試分為靜態(tài)白盒測(cè)試和動(dòng)態(tài)白盒測(cè)試。
(1)靜態(tài)白盒測(cè)試
靜態(tài)白盒測(cè)試,是在不執(zhí)行程序的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)與實(shí)現(xiàn),從而找出軟件缺陷的過程[1]。測(cè)試人員需要有一定的編程基礎(chǔ),并且了解產(chǎn)品的實(shí)現(xiàn)方案。測(cè)試重點(diǎn)是檢查需求,設(shè)計(jì)以及源碼:
①實(shí)現(xiàn)與需求/設(shè)計(jì)是否一致;
②代碼是否存在規(guī)范性問題;
③程序?qū)Ξ惓;虺鲥e(cuò)分支是否有合理的解決方案;
④代碼的可讀性與易理解性。
(2)動(dòng)態(tài)白盒測(cè)試
動(dòng)態(tài)白盒測(cè)試,是指利用查看代碼功能和實(shí)現(xiàn)方法得到的信息來(lái)確認(rèn)哪些需要測(cè)試,如何開展測(cè)試[1]。
例如,對(duì)于如下一段程序:
#define OK 1
#define ERROR -1
#define A 1000
#define B 3500
int Fun(int flag, long int address, long int offset)
{
if(0== flag) {
FunWirte(address, offset, A);
return OK;
}
else if(1== flag){
FunWirte(address, offset, B);
return OK;
}
else
printf(“輸入的flag不合理 ”);
return ERROR;
}
該函數(shù)實(shí)現(xiàn)的功能:
若flag的值為0,則通過函數(shù)FunWirte將1000寫入到地址address+offset處,返回1;
若flag的值為1,則通過函數(shù)FunWirte將3500寫入到地址address+offset處,返回1;
如果輸入?yún)?shù)flag為其它值,則輸出提示信息,然后返回-1。
對(duì)于測(cè)試人員來(lái)說(shuō),設(shè)計(jì)測(cè)試用例的思路(執(zhí)行程序前,將地址address+offset處數(shù)據(jù)清零):
①輸入?yún)?shù)flag=0,執(zhí)行程序后,查詢address+offset處的數(shù)值是否為1000。
②輸入?yún)?shù)flag=1,執(zhí)行程序后,查詢address+offset處的數(shù)值是否為3500。
③輸入?yún)?shù)flag=2,執(zhí)行程序后,查詢address+offset處的數(shù)值是否為0。
顯然這需要測(cè)試人員了解函數(shù)Fun的設(shè)計(jì)思路以及實(shí)現(xiàn)原理,并且有一定的編程基礎(chǔ),實(shí)際上,設(shè)置flag分別等于0,1,2的測(cè)試用例,也滿足了邏輯覆蓋中的語(yǔ)句覆蓋,條件覆蓋,判定覆蓋[3]。
本文結(jié)合兩個(gè)實(shí)例分別介紹了軟件測(cè)試中常用的兩種測(cè)試策略(白盒測(cè)試和黑盒測(cè)試)的應(yīng)用,這兩種方法也可以應(yīng)用于其他任何系統(tǒng)或產(chǎn)品的軟件測(cè)試中。
參考文獻(xiàn):
[1]周予濱,姚靜等.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2002,02.
[2]李龍,軟件測(cè)試實(shí)用技術(shù)與常用模板[M].機(jī)械工業(yè)出版社,2010,10.
[3]Glenford J.Myers, Tom Badgett, Todd M.Thomas. The Art of Software Testing[M]. John Wiley &Sons,Inc.,Hoboken,New Jersey,2004.
呂宣姣(1982-),女,山西靜樂人,碩士研究生,工程師,研究方向?yàn)槿哂鄼C(jī)器手臂的重復(fù)運(yùn)動(dòng)規(guī)劃、軟件測(cè)試
Application of Black-Box and White-Box Software Testing Tactics
LV Xuan-jiao
(Nanfang College,SUN YAT-SEN University, Guangzhou 510970)
Abstract:Software testing is an attempt to find a program error destructive of a process, black-box and white-box testing tactics are commonly used in software testing, which are conducive to design successful test cases, as much as possible defect discovery programs, as following describes the application of these two tactics by way of example.
Keywords:Black-Box Testing; White-Box Testing; Defect; Software Testing
收稿日期:2015-12-29修稿日期:2016-03-01
作者簡(jiǎn)介:
文章編號(hào):1007-1423(2016)09-0048-03
DOI:10.3969/j.issn.1007-1423.2016.09.012