湯小波
摘要:程序設(shè)計(jì)是軟件專業(yè)的一門重要課程,在完成一個(gè)問題的設(shè)計(jì)思路后,如何判斷其結(jié)果的正確性,必須要進(jìn)行相應(yīng)的測(cè)試,軟件測(cè)試方法分為白盒測(cè)試與黑盒測(cè)試,而黑盒測(cè)試對(duì)于初學(xué)者來(lái)說(shuō)簡(jiǎn)單易行,本文針對(duì)黑盒測(cè)試方法對(duì)其原理進(jìn)行了分析與闡述,并針對(duì)實(shí)際問題在程序設(shè)計(jì)中加以分析及應(yīng)用。
關(guān)鍵詞:黑盒 測(cè)試
1黑盒測(cè)試概述
1.1什么是黑盒測(cè)試
黑盒測(cè)試也稱功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是指在已知產(chǎn)品所應(yīng)具有功能前提下,通過測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用。在測(cè)試時(shí),把程序看成一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測(cè)試。
1.2黑盒測(cè)試的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)如下:比較簡(jiǎn)單,與軟件的內(nèi)部實(shí)現(xiàn)無(wú)關(guān);從用戶角度出發(fā);基于軟件開發(fā)文檔。其缺點(diǎn)如下:覆蓋率較低,大概只能達(dá)到代碼量的30%左右;自動(dòng)化測(cè)試復(fù)用率較低。
1.3黑盒測(cè)試方法
黑盒測(cè)試方法主要有五種,分為等價(jià)類劃分法、邊界值劃分法、錯(cuò)誤推測(cè)法、場(chǎng)景法和因果圖法。在實(shí)際測(cè)試用例設(shè)計(jì)過程中,不僅根據(jù)需要、場(chǎng)合單獨(dú)使用這些方法,而且常常綜合運(yùn)用多個(gè)方法,使測(cè)試用例的設(shè)計(jì)更為有效。
2等價(jià)類法
2.1等價(jià)類定義
指某個(gè)輸入域的子集合。在該集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。包括有效等價(jià)類和無(wú)效等價(jià)類。有效等價(jià)類指符合《需求規(guī)格說(shuō)明書》,合理地輸入數(shù)據(jù)集合。無(wú)效等價(jià)類指不符合《需求規(guī)格說(shuō)明書》,無(wú)意義地輸入數(shù)據(jù)集合。
2.2等價(jià)類劃分的原則
劃分等價(jià)類最重要的原則是集合的劃分。集合劃分為互不相交的子集。確定等價(jià)類的原則如下:
如果規(guī)定了輸入值的范圍,可以分為一個(gè)有效等價(jià)類,兩個(gè)無(wú)效等價(jià)類;如果輸入是布爾表達(dá)式,可以分為一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類;如果輸入條件規(guī)定了輸入值的集合或者“必須如何”的條件,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類;在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確定n個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類;在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確定一個(gè)有效等價(jià)類和若干個(gè)無(wú)效等價(jià)類。
2.3等價(jià)類的應(yīng)用
案例1:輸入X值,當(dāng)X>0時(shí),輸出1;當(dāng)X=0時(shí),輸出0;當(dāng)X<0時(shí),輸出為-1。
利用c#語(yǔ)言編寫程序代碼片斷如下:
Int x=int.parse(System.In.ReadLind());
int y;
If(x>0) Y=1; elseif(x=0) y=0 else y=-1;
利用等價(jià)類法劃分為三個(gè)有效等價(jià)類,
根據(jù)上述測(cè)試,分析與測(cè)試結(jié)果完全符合預(yù)期,程序完全正確。
3邊界值法
3.1邊界值法定義
邊界值法就是假定錯(cuò)誤發(fā)生在輸入和輸出邊界上,并對(duì)其進(jìn)行測(cè)試分析的方法,實(shí)踐證明,大量的錯(cuò)誤發(fā)生在輸入或輸出范圍的邊界上,而不是輸入或輸出范圍的內(nèi)部。
3.2邊界法的應(yīng)用
案例2:利用循環(huán)計(jì)算前100項(xiàng)的和。利用c#語(yǔ)句編寫代碼片斷如下:
重點(diǎn)關(guān)注在循環(huán)到終點(diǎn)時(shí)的情況,即邊界值為99、100、101時(shí)的情況,根據(jù)上表分析,當(dāng)i值在臨近邊界99時(shí),累加情況剛好隨著i值累加到了99,i值為100時(shí),累加剛好到100,i值為101時(shí)循環(huán)結(jié)束。此時(shí)剛好累加到100程序終止,可見程序分析和測(cè)試結(jié)果完全正確。
4場(chǎng)景法
4.1場(chǎng)景法內(nèi)涵
場(chǎng)景是通過描述流經(jīng)用例的路徑來(lái)確定的過程,這個(gè)流經(jīng)過程要從用例開始到結(jié)束遍歷所有基本流和備選流。場(chǎng)景法就是根據(jù)這些基本流和備選流的流動(dòng)過程設(shè)計(jì)測(cè)試用例。
4.2場(chǎng)景法應(yīng)用
案例3:從甲地到乙地,經(jīng)過二次猜數(shù)游戲方能順利到達(dá),每次猜數(shù)最多只能猜三次,猜錯(cuò)則被淘汰,否則正常通過。用偽代碼編寫c#程序如下:
Booleanf=true;
For(int i=1;i<=3;i++)
{猜數(shù);if(猜錯(cuò)) f=false;}
For(int i=1;i<=3;i++)
{猜數(shù);if(猜錯(cuò)) f=false;}
If(f)通過; else不通過;
將上述三種場(chǎng)景進(jìn)行測(cè)試分析,程序完全符合預(yù)期,程序設(shè)計(jì)正確。
5其它方法簡(jiǎn)述
因果圖法是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測(cè)試用例的方法,它適合于檢查程序輸入條件的各種組合情況。錯(cuò)誤推測(cè)法是根據(jù)經(jīng)驗(yàn)和直覺推測(cè)程序中所有可能存在的各種錯(cuò)誤,從而有針對(duì)性地設(shè)計(jì)測(cè)試用例的方法。
綜述,在程序設(shè)計(jì)中充分利用軟件測(cè)試的方法和原理可以有效地檢測(cè)和防止程序中發(fā)生的各種錯(cuò)誤,對(duì)于提高程序的分析和設(shè)計(jì)能力具有重要的意義,豐富了軟件過程設(shè)計(jì)思想。