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