林勤花
(四川信息職業技術學院,四川廣元,628017)
測試用例是為特定的目標設計的一組測試輸入、執行條件和預期結果的集合,以便測試某個程序路徑或核實是否滿足某個特定需求。一個好的測試用例應該具備下列幾個特征:(1)清晰定義了一個或多個預期結果。(2)應該容易發現軟件錯誤。(3)可重復使用。(4)沒有冗余。
在本文中,將使用學生信息的添加功能為例為進行介紹。學生信息添加頁面和學生的數據結構如圖2、表1所示。

表1 “學生”數據結構

圖1 常用的黑盒測試用例設計方法

圖2 添加學生信息頁面
等價類劃分法是根據程序的I/O特性,將程序的定義域劃分為有限個等價區段-----“等價類”,根據各個等價類來選擇數據,即“用例”。使用等價類劃分法設計的用例更有代表性、針對性。按等價類劃分法,將學生信息各字段劃分為如表2所示的等價類。

表2 學生信息的等價類表
列出等價類表后,選擇測試數據的原則是:1.使一個測試用例盡可能多的覆蓋尚未覆蓋到的有效等價類,直至所有有效等價類全部覆蓋到;2.使一個測試用例只覆蓋尚未覆蓋到的無效等價類,直至所有的無效等價類全部覆蓋到。按上述原則,要覆蓋到表2中所有等價類至少需要17個測試用例,其中1個覆蓋所有有效等價類,剩余16個用來覆蓋無效等價類。
長期的測試工作經驗告訴我們,大量的錯誤是發生在輸入或輸出范圍的邊界上,而不是發生在輸入輸出范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。通常邊界值分析法是作為對等價類劃分法的補充,這種情況下,其測試用例來自等價類的邊界。比如學號字段“小于7位的字符串”這個無效等價類我們就在邊界上取值,取剛好小于7位的字符串“180101”作為測試數據。
現在的軟件幾乎都是用事件觸發來控制流程的,事件觸發時的情景便形成了場景,而同一事件不同的觸發順序和處理結果就形成事件流。場景法一般包括1個基本流和N個備選流。在“新增”學生信息這個事件的基本流為:輸入正確的學號、輸入正確的姓名、選擇性別、輸入正確的郵箱地址、輸入正確的手機號碼,然后單擊新增按鈕。備選流會有很多個,如學號為空、學號長度不是7位、學號重復,當學號出錯后,其他字段其實不需要再添加。
當我們單純采用等價類設計測試用例時,采用的數據可以如表3所示。

表3 按等價類設計測試用例
按等價類設計,每個測試用例都是6個步驟,把所有數據輸入完成后再單擊新增按鈕。其實當學號為空時,其他字段填寫了也是無效了。如果字段少還可以忍受,但當一個實體的字段多達幾十個時,還是把所有字段都填寫,那將浪費大量的時間。我們可以借助于場景法來設計測試用例。

表4 按場景法設計測試用例
在實際高水平的測試工作中,往往需要綜合使用多種方法來提高測試效率和測試覆蓋率。黑盒測試用例設計方法選擇策略可參考如下幾條:(1)首先進行等價類劃分,將無限測試可能變成有限測試;(2)在任何情況下,都使用邊界值分析法;(3)對業務流清晰的系統,可利用場景法貫穿整個測試。
綜合使用等價類劃分法、邊界值分析法和場景法設計添加學生信息頁面的部分測試用例如表5所示。

表5 綜合應用各種方法設計測試用例
軟件黑盒測試用例設計方法有很多種,針對某個具體的功能點,使用單一的設計方法往往無法覆蓋到所有類型的缺陷。因此在實際測試工作中需要綜合使用多種測試方法,形成測試策略,這樣對一個功能點的測試才能比較充分。