Test Case Prioritization 中,通過測試用例與運行的 Runtime Trace 進行匹配得到相關的測試用例。并利用測試用例優化排序算法對相關的測試用例進行排序,得到優化結果?,F在的優化排序算法有多種,這里不對優化排序算法進行討論。
Coverage Analysis 中,通過對已被相關測試用例覆蓋的 Method 數量,及未被測試用例覆蓋到的 Method 數量的分析,可以得到基于代碼更新的覆蓋率報告。測試人員得到這份報告之后,可以找到未被覆蓋到的 Method,并對其進行針對性的開發新的測試用例。以完成對新功能的覆蓋。
我們可以看到步驟一,二共同服務于測試用例優化選擇和覆蓋率分析兩個模塊。有了測試用例的 Runtime Trace 和 Change Report. 我們可以將 Change 結果與 Runtime Trace 進行匹配,找出能覆蓋程序更改的測試用例。同樣,對于沒有被測試用例覆蓋到的 Change 部分。由于沒有相關測試用例被找出,我們現有的測試用例是不足的,需要針對未被覆蓋到的 Change 部分開發新的測試用例。
而覆蓋率作為軟件測試的一項重要指標,可以根據已經得到覆蓋和未被覆蓋的 method 進行求解,即已得到覆蓋的 change method 數與總的 change method 之比。
結果
基于以上的回歸測試解決方案,我們對一個有著 30 個測試用例的程序進行回歸測試,得到如下測試用例優化選擇分析報表:
Change Analysis Report
總函數 | 變更函數 | 覆蓋數 | 未覆蓋 | 覆蓋率 |
108 | 12 | 10 | 2 | 83.3% |
表 1 優化選擇測試用例: 3 (of Total 30)
Case Name | Cover Changed Method | |
TestCase001 | 5 | details |
TestCase005 | 3 | details |
TestCase013 | 2 | details |
分析報告顯示這次代碼變更共有 12 個函數發生了更改。在 30 個測試用例中有 3 個測試用例與這些更改相關,它們覆蓋了這次代碼更改 12 個中的 10 個。而其它 27 的測試用例則與這 12 個代碼改動毫不相關。
表 2 回歸測試結果分析
全部測試用例 | 優化選擇 | 函數變更 | 覆蓋率分析 | ||
已覆蓋 | 未覆蓋 | 覆蓋率 | |||
30 | 3 | 12 | 10 | 2 | 83.3% |
原文轉自:http://www.uml.org.cn/Test/200903313.asp