余飛俠
摘要:軟件測(cè)試在軟件生命周期中占據(jù)重要地位,測(cè)試用例的設(shè)計(jì)是軟件測(cè)試工作的關(guān)鍵。結(jié)合工作實(shí)踐,闡述了黑盒測(cè)試常用的測(cè)試用例設(shè)計(jì)方法。并給出兩個(gè)案例進(jìn)行分析,詳細(xì)說明了如何應(yīng)用這些方法設(shè)計(jì)高效的、可重構(gòu)的測(cè)試用例。最后給出了合理的測(cè)試策略。
關(guān)鍵詞:軟件測(cè)試;黑盒測(cè)試;等價(jià)類劃分法;因果圖法;測(cè)試用例設(shè)計(jì);測(cè)試策略
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)07-1560-04
Test Case Design of Black-boxing and its Application
YU Fei-xia
(Anhui Sun Create Electronics Co., Ltd, Hefei 230088, China)
Abstract: The design of test cases is the key of software testing, which is very important in software development life cycle. Several commonly used test-case-design methods of black-box testing are elaborated with work practices. How to use these methods to design effective and reconstructable test cases is illustrated by two examples. A reasonable test strategy is presented finally.
Key words: software testing; black-box testing; equivalence partitioning; cause-effect graphing; test-case design; test strategy
隨著軟件在人們?nèi)粘I钪械膽?yīng)用越來越廣泛,軟件質(zhì)量也日益受到人們的重視。軟件測(cè)試是保證軟件質(zhì)量必不可少的重要手段,測(cè)試工程師需要從項(xiàng)目生命周期之初就開始介入,這樣他們才能準(zhǔn)確地理解測(cè)試的對(duì)象并且和其他涉眾一起生成可測(cè)試的需求。在軟件生命周期的每一階段中都應(yīng)包含測(cè)試,進(jìn)而檢驗(yàn)各階段的成果和預(yù)期目標(biāo)的一致程度,盡可能早的發(fā)現(xiàn)缺陷并加以修正。如果不能在軟件開發(fā)的早期階段進(jìn)行相應(yīng)的測(cè)試,缺陷的延時(shí)擴(kuò)散常常會(huì)給最后的成品測(cè)試帶來巨大的災(zāi)難。雖然測(cè)試工作不可能發(fā)現(xiàn)所有的缺陷,但是我們必須設(shè)計(jì)出最可能發(fā)現(xiàn)最多數(shù)量的錯(cuò)誤、并耗費(fèi)最少時(shí)間和最小代價(jià)的測(cè)試。近年來,出現(xiàn)了各種各樣的測(cè)試用例設(shè)計(jì)方法,為測(cè)試工程師進(jìn)行測(cè)試提供了系統(tǒng)的方法。更重要的是,方法提供了一種有助于確保完全測(cè)試的機(jī)制,并提供了揭示軟件缺陷的最高可能性。常用的黑盒測(cè)試用例設(shè)計(jì)方法有:等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測(cè)法和因果圖法。本文結(jié)合工作實(shí)踐,闡述了黑盒測(cè)試常用的測(cè)試用例設(shè)計(jì)方法,并結(jié)合具體問題進(jìn)行了詳細(xì)的分析。
1黑盒測(cè)試簡(jiǎn)介
黑盒測(cè)試注重于測(cè)試軟件的功能性需求,根據(jù)軟件規(guī)格說明書的要求,運(yùn)行并驗(yàn)證程序是否滿足用戶的需求,是一種從用戶立場(chǎng)出發(fā)的測(cè)試。它把被測(cè)試程序當(dāng)作一個(gè)黑盒子,不考慮其內(nèi)部的邏輯結(jié)構(gòu),通過輸入測(cè)試數(shù)據(jù),根據(jù)需求來判斷輸出是否正確,確認(rèn)軟件功能的正確性和可操作性。根據(jù)軟件的特定功能構(gòu)造測(cè)試,以證實(shí)各功能完全可執(zhí)行,同時(shí)在各功能中尋找缺陷。
在進(jìn)行測(cè)試用例設(shè)計(jì)時(shí),應(yīng)考慮兩個(gè)方面:一是覆蓋率最大化,所設(shè)計(jì)的測(cè)試用例能夠減少達(dá)到合理測(cè)試所需的附加測(cè)試用例數(shù);另一方面,所設(shè)計(jì)的測(cè)試用例能夠告知是否存在某些類型缺陷,而不是僅僅與特定測(cè)試相關(guān)的某個(gè)缺陷。眾所周知,窮舉測(cè)試是不可能的,測(cè)試工程師總是試圖通過有限的測(cè)試用例最大限度的提高發(fā)現(xiàn)缺陷的數(shù)量,以取得最好的測(cè)試效果。
2測(cè)試用例設(shè)計(jì)方法分析
2.1等價(jià)類劃分法
等價(jià)類劃分法把所有可能的輸入數(shù)據(jù)(即軟件的輸入域)劃分為若干部分,然后從每個(gè)部分中選取少數(shù)代表性數(shù)據(jù)作為測(cè)試用例。在具體的測(cè)試執(zhí)行過程中,通常把全部輸入數(shù)據(jù)劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中選取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件,這樣就可以用少量代表性的測(cè)試數(shù)據(jù)取得較好的測(cè)試結(jié)果。使用該方法設(shè)計(jì)測(cè)試用例包含確定等價(jià)類和生成測(cè)試用例兩個(gè)步驟。
該設(shè)計(jì)方法的關(guān)鍵是確定等價(jià)類。等價(jià)類包含有效等價(jià)類和無效等價(jià)類。有效等價(jià)類是指對(duì)于程序的需求來說是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合,用來檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說明書中所規(guī)定的功能和性能。無效等價(jià)類是指對(duì)于程序的需求來說是不合理的、沒有意義的輸入數(shù)據(jù)構(gòu)成的集合,用來檢驗(yàn)程序?qū)τ跓o效數(shù)據(jù)的處理。這樣,程序不僅能接收合理的數(shù)據(jù),也能經(jīng)受意外的考驗(yàn),從而確保程序具有更高的可靠性。
2.2邊界值分析法
邊界值分析法是考慮邊界條件而選取測(cè)試用例的方法,是對(duì)等價(jià)類劃分法的補(bǔ)充。該方法不僅關(guān)注輸入條件,還需要考慮從輸出等價(jià)類設(shè)計(jì)測(cè)試用例。實(shí)踐證明,軟件在輸入、輸出域的邊界附近容易出現(xiàn)差錯(cuò),而不是在輸入范圍的內(nèi)部。因此,應(yīng)該選取剛好等于、稍小于和稍大于等價(jià)類邊界值作為測(cè)試數(shù)據(jù),而不是選取每個(gè)等價(jià)類內(nèi)的典型值或任意值作為測(cè)試數(shù)據(jù)。
舉例來說,如果輸入值的有效范圍是a~b,那么測(cè)試用例應(yīng)當(dāng)包含a、b、略小于a和略大于b的值;如果某個(gè)輸入條件代表一組值,那么測(cè)試用例應(yīng)當(dāng)執(zhí)行其中的最大值和最小值,還應(yīng)當(dāng)測(cè)試略小于最小值和略大于最大值的值。
2.3錯(cuò)誤推測(cè)法
錯(cuò)誤猜測(cè)主要是一項(xiàng)依賴于直覺的非正規(guī)的過程。其基本思想是列舉出可能犯的錯(cuò)誤或錯(cuò)誤易發(fā)情況的清單,然后依據(jù)清單來編寫測(cè)試用例;另一種思想是在閱讀規(guī)格說明時(shí)聯(lián)系程序員可能做的假設(shè)來確定測(cè)試用例,即規(guī)格說明中程序員忽略的一些內(nèi)容。在具體的測(cè)試執(zhí)行過程中,測(cè)試工程師利用直覺和經(jīng)驗(yàn)猜測(cè)出錯(cuò)的可能類型,然后編寫測(cè)試用例來暴露這些錯(cuò)誤。
猜測(cè)錯(cuò)誤的常用依據(jù):
1)以前產(chǎn)品測(cè)試中曾經(jīng)發(fā)現(xiàn)的錯(cuò)誤。
2)在單元測(cè)試時(shí)曾列出的許多在模塊中常見的錯(cuò)誤。
3)容易發(fā)生錯(cuò)誤的情況。
4)補(bǔ)充等價(jià)類和邊界值法遺漏的一些等價(jià)類組合。
2.4因果圖分析法
因果圖法是一種利用圖解法分析輸入的各種組合情況,從而設(shè)計(jì)測(cè)試用例的方法,它適合于檢查程序輸入條件的各種組合情況。邊界值分析法和等價(jià)劃分法都是著重考慮輸入條件,卻沒有考慮輸入條件的各種組合、輸入條件之間的制約關(guān)系。但是輸入條件之間可能的組合太多,必須考慮采用一種適合于描述多種條件的組合、相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來進(jìn)行測(cè)試用例的設(shè)計(jì)。因果圖法將規(guī)格說明轉(zhuǎn)換為一個(gè)布爾邏輯網(wǎng)絡(luò),它使我們從不同的視角來審視規(guī)格說明。因此,建立因果圖是一個(gè)暴露規(guī)格說明中模糊和不完整之處的好方法。
3測(cè)試用例設(shè)計(jì)實(shí)踐
測(cè)試用例的設(shè)計(jì)是測(cè)試工作的重點(diǎn)也是難點(diǎn),用例的好壞直接影響著測(cè)試的質(zhì)量。對(duì)于不同項(xiàng)目類似功能的業(yè)務(wù)測(cè)試,設(shè)計(jì)可重用的用例不僅可以減少后續(xù)項(xiàng)目設(shè)計(jì)用例的時(shí)間。如果在設(shè)計(jì)可重用用例的基礎(chǔ)上再考慮可重構(gòu)性,就可以大大增強(qiáng)用例的可讀性、可操作性、擴(kuò)展性和重用性,從而提高測(cè)試效率。
3.1等價(jià)類劃分和邊界值分析法
下面以B/S架構(gòu)的系統(tǒng)登錄功能為測(cè)試對(duì)象,應(yīng)用等價(jià)類劃分和邊界值分析相結(jié)合的方法進(jìn)行測(cè)試用例設(shè)計(jì)。操作系統(tǒng)為Windows XP,瀏覽器為IE6.0。
功能要求:用戶在瀏覽器的地址欄中輸入服務(wù)器IP地址,彈出系統(tǒng)登錄頁(yè)面;輸入用戶名和密碼,點(diǎn)擊登錄,系統(tǒng)自動(dòng)校驗(yàn),并給出相應(yīng)提示信息;如果用戶名和密碼中任一項(xiàng)未輸入或輸入錯(cuò)誤,登錄后,系統(tǒng)給出相應(yīng)提示信息;連續(xù)三次未通過系統(tǒng)驗(yàn)證,自動(dòng)關(guān)閉登錄頁(yè)面。
表1系統(tǒng)登錄測(cè)試用例
下面綜合使用等價(jià)類劃分法和邊界值分析法設(shè)計(jì)系統(tǒng)登錄測(cè)試用例,既減少了冗余的用例,又提高了發(fā)現(xiàn)軟件錯(cuò)誤的能力。根據(jù)規(guī)格說明書和詳細(xì)設(shè)計(jì)說明,設(shè)計(jì)測(cè)試用例如表1所示。
3.2因果圖法
因果圖法采用系統(tǒng)的方法選擇出高效的測(cè)試用例集。下面以自動(dòng)售貨機(jī)軟件為測(cè)試對(duì)象,采用因果圖法設(shè)計(jì)測(cè)試用例。
功能要求:有一個(gè)處理單價(jià)為1元5角的盒裝飲料的自動(dòng)售貨機(jī)軟件。若投入1元5角硬幣,按下“可樂”、“雪碧”或“紅茶”按鈕,相應(yīng)的飲料就送出來。若投入的是兩元硬幣,在送出飲料的同時(shí)退還5角硬幣。
測(cè)試用例生成過程如下所示:
1)分析功能要求描述中,哪些是原因,哪些是結(jié)果,并給每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符。
表2因果關(guān)系表
2)分析功能要求的語義內(nèi)容,找出原因和結(jié)果之間,原因和原因之間對(duì)應(yīng)的關(guān)系,并根據(jù)這些關(guān)系,畫出因果圖;給圖加上注解符號(hào),說明由于語法或環(huán)境的限制而不能聯(lián)系聯(lián)系起來的“因”和“果”。
圖1自動(dòng)售貨軟件因果圖
表3自動(dòng)售貨軟件判定表
3)通過仔細(xì)的跟蹤圖中的狀態(tài)變化情況,將因果圖轉(zhuǎn)換成一個(gè)有限項(xiàng)的判定表。
4)把判定表的每一列拿出來作為依據(jù),設(shè)計(jì)測(cè)試用例。
表4自動(dòng)售貨軟件測(cè)試用例表
4結(jié)束語
以上闡述的測(cè)試用例設(shè)計(jì)方法可以組合為一個(gè)整體的策略。一組合理的策略如下所述:如果程序的功能說明中含有輸入條件的組合情況,則應(yīng)首先使用因果圖法;在任何情況下都必須使用邊界值分析法,實(shí)踐表明用這種方法設(shè)計(jì)測(cè)試用例發(fā)現(xiàn)程序錯(cuò)誤的能力最強(qiáng);必要時(shí)用等價(jià)類劃分法補(bǔ)充一些測(cè)試用例;用錯(cuò)誤推測(cè)法增加更多的測(cè)試用例。雖然使用上述策略并不能保證可以發(fā)現(xiàn)所有的錯(cuò)誤,但實(shí)踐證明這是一個(gè)合理的折中方案。建議綜合多種測(cè)試方法來設(shè)計(jì)嚴(yán)格的程序測(cè)試,因?yàn)槊恳环N測(cè)試方法都有其獨(dú)特的優(yōu)勢(shì)和弱點(diǎn)。某種方法遺漏掉的錯(cuò)誤,而用其它的方法就可能找出來。
參考文獻(xiàn):
[1] Dustin E.有效軟件測(cè)試[M].新語,譯.北京:清華出版社,2003.
[2]鄭人杰.計(jì)算機(jī)軟件測(cè)試技術(shù)[M].北京:清華大學(xué)出版社,1992.
[3] Patton R.軟件測(cè)試[M].周予濱,姚靜,譯.北京:機(jī)械工業(yè)出版社,2002.
[4]肖利瓊.軟測(cè)之魂[M].北京:電子工業(yè)出版社,2011.
[5] Myers G J.軟件測(cè)試的藝術(shù)[M].王峰,陳杰,譯.北京:機(jī)械工業(yè)出版社,2006.