某個程序的結構流程圖如圖所示,這樣一個少于100行Pascal代碼的程序,卻有100,000,000,000,000種可能的路徑需要遍歷,如果嘗試遍歷所有可能的路徑,假設每秒鐘執行1000個測試用例,也需要3170年的時間來完成所有測試。
詳盡地遍歷所有測試的可能路徑、場景、輸入條件和數據是不可能的,因為它們的組合接近無限,但是時間和資源都是有限的。以有限“拼”無限,無異“以卵擊石”。因此有些人在這些困難面前妥協了,僅僅使用隨機的輸入來測試程序,這種測試方式無異“繳槍投降”。
正確的方法是設計合理有效的測試策略,建立合理有效的測試用例庫,選擇合理有效的測試用例來執行。
測試用例的設計策略
測試用例的設計方法有很多,一般常用的測試用例設計方法有以下幾種。
等價類劃分法。
邊界值分析法。
基本路徑分析法。
因果圖法。
場景設計法。
錯誤猜測法。
另外,還有以下幾種測試用例設計方法是用于有效減少測試用例個數的。
正交表法。
均勻試驗法。
組合覆蓋法。
注:關于這些測試用例設計的具體方法,可參考我寫的《軟件測試技術大全》一書中的第7章。
測試人員為什么要掌握這么多的測試用例設計方法呢?這是因為每一種測試用例設計方法都有其最適合的地方,需要綜合應用才能讓測試用例的設計省時省力而且能有效發現盡可能多的BUG,另外,交叉使用各種測試用例的設計方法,有助于避免“思維死角”,讓BUG“無處遁形”。
最近,日本的測試界比較流行使用思維導圖(Mind Maps)工具進行測試用例設計,原因是傳統的測試用例設計方法都比較局限在某個區域,缺乏整體業務建模和整體測試邏輯的考慮。而通過“頭腦風暴”工具,則可以協助測試人員更全面、更清晰都思考測試涉及的軟件功能和業務模型,從而設計和構建出更加完善合理的測試用例。
測試人員通過畫出一些關系圖、測試對象的相關信息,幫助整理思路,組織內容、想法、創意等。例如,如圖3所示的是FreeMind的編輯界面。

圖3 FreeMind的編輯界面
文章來源于領測軟件測試網 http://www.kjueaiud.com/