張蕊++薛黎++魏曉

摘 要
回歸測試是軟件測試的一種重要部分,回歸測試中測試用例集的選擇關系到軟件最終的質量和項目開銷。文章在分析了回歸測試中測試用例選擇策略的基礎上,提出了一種新的測試用例選擇策略,從程序改進的代碼依賴入手,通過分配風險因子給出測試用例選擇的權重,從而選擇恰當的測試用例集,進行回歸測試,取得了良好的實驗結果。
【關鍵詞】軟件工程 回歸測試 測試用例
1 引言
回歸測試是指修改了舊代碼后,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤。回歸測試是軟件測試中一項操作頻繁并且花費巨大的階段。由于程序版本不斷更迭,導致測試用例的數量也在不斷增多,有研究表明,回歸測試的開銷在整個軟件測試中占有很大的比重。回歸測試大多要通過兩種方式去執行:一類借助于工具完成自動化測試,一類是手動完成。從回歸測試的計劃和策略上講,一般有以下兩種方法,全部執行或者部分執行。執行全部測試的開銷很大,在項目中很難做到,部分執行時,測試的效率和質量會因為用例的選擇不同而差別很大。對于測試用例的選擇,目前常用的方法是按照測試用例的優先級進行。測試用例優先級技術著重于研究回歸測試中測試用例選擇策略的問題。這種技術認為,不同測試用例對于測試目標的覆蓋不同,因此將不同的測試用例進行比較和排序,然后優先執行相對重要的測試用例。研究人員通過實驗表明,按照優先級選擇測試用例可以很好地提高回歸測試的效率,能夠以盡量小的開銷完成預期的覆蓋率。
2 基于風險的權重分配模型
基于風險的權重分配模型在進行測試用例優先級分析時引入風險分析,給不同測試用例分配風險因子,進行權重計算。對于程序,不同的改到所帶來的風險是不一樣的,分析出改動所帶來的風險以后,在易出錯的地方進行回歸測試以保證原有的功能沒有被新的變化影響。影響產品質量的權重參數很多,在本文提到的模型中,主要考慮功能的依賴關系,功能的復雜度,需求變更等方面。
在設計測試用例時,將測試用例和與之關聯的功能特性之間的關系形成二維表格放入數據庫中,表結構如表1所示,其中,bug數目會隨著動態測試過程進行記錄。
2.1 權重設計
影響產品質量的權重參數很多,在本文提到的模型中,主要考慮功能的依賴關系,功能的復雜度,需求變更等方面。創建一個影響回歸測試的功能特性矩陣列出所有的特征和功能。
D表示新特性將對已有功能造成直接影響;
I表示新特性對已有功能存在間接影響,如表2所示。
2.2 權重計算
對于每一個測試用例來說,其權重等于與之關聯的程序模塊乘以收到的影響加上曾經檢查出的bug總數
WTCi=Funci*Inf+bug
3 算法策略
執行回歸測試,首先提供被新功能或有依賴關系的改動直接影響的區域。
將改動區域與對應的測試用例放入列表
把上個開發階段發現的問題填入表格中。
然后計算每個測試用例的權重,按照權重從大到小依次排列。
然后選擇權重最大的測試用例,并將其覆蓋的功能特性從列表中刪除,循環此過程,直到列表為空。
最后,依次執行選中的測試用例。
4 實驗
在資源充足的情況下,假如開發修改了文件Func3里面的代碼,根據上面的表格TC2,TC3是和Func3有關聯的測試用例,可以挑出TC2,TC3執行測試。
當func3函數有修改,可以挑出TC1,TC2,TC3執行測試。
當資源不夠充足時,按照模WTC2>WTC3,WTC1=0。選擇TC2執行測試。
5 結束語
要實現有效的回歸測試,必須解決回歸測試中的兩個主要問題:
(1)測試用例的優化選擇;
(2)覆蓋率分析。
前者決定了回歸測試的效率,好的測試用例的選擇可以用少量的測試用例準確地覆蓋新版本中盡可能多的改動。后者是度量測試的重要指標,通過達到良好的測試覆蓋率,保證了回歸測試的質量。
本文正是通過討論如何優化選擇測試用例,用最小的代價達到最大的覆蓋率,從而找到回歸測試的有效解決方案。測試用例優化選擇可以有效地解決現有測試用例的覆蓋問題,但在實際測試過程中,我們仍然發現存在著覆蓋不全的問題,需要進行進一步的研究。
作者單位
上海應用技術學院計算機與信息工程學院 上海市 201418