林勤花
(四川信息職業(yè)技術(shù)學(xué)院,四川廣元,628017)
測試用例是為特定的目標(biāo)設(shè)計(jì)的一組測試輸入、執(zhí)行條件和預(yù)期結(jié)果的集合,以便測試某個程序路徑或核實(shí)是否滿足某個特定需求。一個好的測試用例應(yīng)該具備下列幾個特征:(1)清晰定義了一個或多個預(yù)期結(jié)果。(2)應(yīng)該容易發(fā)現(xiàn)軟件錯誤。(3)可重復(fù)使用。(4)沒有冗余。
在本文中,將使用學(xué)生信息的添加功能為例為進(jìn)行介紹。學(xué)生信息添加頁面和學(xué)生的數(shù)據(jù)結(jié)構(gòu)如圖2、表1所示。
表1 “學(xué)生”數(shù)據(jù)結(jié)構(gòu)
圖1 常用的黑盒測試用例設(shè)計(jì)方法
圖2 添加學(xué)生信息頁面
等價(jià)類劃分法是根據(jù)程序的I/O特性,將程序的定義域劃分為有限個等價(jià)區(qū)段-----“等價(jià)類”,根據(jù)各個等價(jià)類來選擇數(shù)據(jù),即“用例”。使用等價(jià)類劃分法設(shè)計(jì)的用例更有代表性、針對性。按等價(jià)類劃分法,將學(xué)生信息各字段劃分為如表2所示的等價(jià)類。
表2 學(xué)生信息的等價(jià)類表
列出等價(jià)類表后,選擇測試數(shù)據(jù)的原則是:1.使一個測試用例盡可能多的覆蓋尚未覆蓋到的有效等價(jià)類,直至所有有效等價(jià)類全部覆蓋到;2.使一個測試用例只覆蓋尚未覆蓋到的無效等價(jià)類,直至所有的無效等價(jià)類全部覆蓋到。按上述原則,要覆蓋到表2中所有等價(jià)類至少需要17個測試用例,其中1個覆蓋所有有效等價(jià)類,剩余16個用來覆蓋無效等價(jià)類。
長期的測試工作經(jīng)驗(yàn)告訴我們,大量的錯誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入輸出范圍的內(nèi)部。因此針對各種邊界情況設(shè)計(jì)測試用例,可以查出更多的錯誤。通常邊界值分析法是作為對等價(jià)類劃分法的補(bǔ)充,這種情況下,其測試用例來自等價(jià)類的邊界。比如學(xué)號字段“小于7位的字符串”這個無效等價(jià)類我們就在邊界上取值,取剛好小于7位的字符串“180101”作為測試數(shù)據(jù)。
現(xiàn)在的軟件幾乎都是用事件觸發(fā)來控制流程的,事件觸發(fā)時(shí)的情景便形成了場景,而同一事件不同的觸發(fā)順序和處理結(jié)果就形成事件流。場景法一般包括1個基本流和N個備選流。在“新增”學(xué)生信息這個事件的基本流為:輸入正確的學(xué)號、輸入正確的姓名、選擇性別、輸入正確的郵箱地址、輸入正確的手機(jī)號碼,然后單擊新增按鈕。備選流會有很多個,如學(xué)號為空、學(xué)號長度不是7位、學(xué)號重復(fù),當(dāng)學(xué)號出錯后,其他字段其實(shí)不需要再添加。
當(dāng)我們單純采用等價(jià)類設(shè)計(jì)測試用例時(shí),采用的數(shù)據(jù)可以如表3所示。
表3 按等價(jià)類設(shè)計(jì)測試用例
按等價(jià)類設(shè)計(jì),每個測試用例都是6個步驟,把所有數(shù)據(jù)輸入完成后再單擊新增按鈕。其實(shí)當(dāng)學(xué)號為空時(shí),其他字段填寫了也是無效了。如果字段少還可以忍受,但當(dāng)一個實(shí)體的字段多達(dá)幾十個時(shí),還是把所有字段都填寫,那將浪費(fèi)大量的時(shí)間。我們可以借助于場景法來設(shè)計(jì)測試用例。
表4 按場景法設(shè)計(jì)測試用例
在實(shí)際高水平的測試工作中,往往需要綜合使用多種方法來提高測試效率和測試覆蓋率。黑盒測試用例設(shè)計(jì)方法選擇策略可參考如下幾條:(1)首先進(jìn)行等價(jià)類劃分,將無限測試可能變成有限測試;(2)在任何情況下,都使用邊界值分析法;(3)對業(yè)務(wù)流清晰的系統(tǒng),可利用場景法貫穿整個測試。
綜合使用等價(jià)類劃分法、邊界值分析法和場景法設(shè)計(jì)添加學(xué)生信息頁面的部分測試用例如表5所示。
表5 綜合應(yīng)用各種方法設(shè)計(jì)測試用例
軟件黑盒測試用例設(shè)計(jì)方法有很多種,針對某個具體的功能點(diǎn),使用單一的設(shè)計(jì)方法往往無法覆蓋到所有類型的缺陷。因此在實(shí)際測試工作中需要綜合使用多種測試方法,形成測試策略,這樣對一個功能點(diǎn)的測試才能比較充分。