回歸測試中機器挑選用例方法研究
科技專論
作者:張瑛
【摘要】隨著測試的發展,這個領域產生了兩個大的趨勢。趨勢一,智能化。傳統的自動化方法:首先轉自動化測試代碼的過程費時費力,並且在測試執行過程中,需要反複的人工幹預。趨勢二,小規模測試替代大規模測試。測試規模越來越小,測試活動對發現bug的有效性越來越高;在傳統的方式下,全體測試用例執行的方法,逐步的為針對代碼變動而開展的小型測試活動所代替。本文的主要工作是:提出對於回歸測試,使用機器挑選的方法。
【關鍵詞】機器學習;回歸測試;測試用例
1.引言
機器學習(Machine Learning, ML)是一門交叉型學科,它涉及到了多個領域,包括:概率與統計學、高等數學、逼近和凸分析等。機器學習人類的學習過程和學習行為,並且加以計算機的模擬或實現。在機器學習過程中,機器本身了獲取新的知識或技能。
在機器學習和人工智能的壯大發展的時代背景,對傳統的測試工作提出了一些新的挑戰。研究通過機器學習的方法,提升傳統的測試工作的效率,進一步的提高整個軟件開發活動的勞動生產率。
2.軟件測試工程的研究綜述
軟件測試是用於分析是否程序出現錯誤的過程,測試使用人工操作或者軟件自動運行的方式。每個不同的軟件有對自身錯誤的定義方式:通常是軟件需求規格中定義了預期結果。
軟件測試分類
1、從是否要變異/執行被測試軟件分類,分為靜態測試和動態測試。如基於代碼審查的單元測試,以及相關代碼審查工具,都屬於靜態測試的範疇。
2、從是否要針對軟件結構、算法進行覆蓋分類,分為白盒測試和黑盒測試。
3、從測試活動在軟件開發過程中所處的不同階段分類,分為單元測試、集成測試、係統測試、驗收測試。
我們這裏討論的“回歸測試”是屬於係統測試的最後一個階段。
在修改了舊代碼後,需要對這部分子都進行測試,以確保這個代碼修訂沒產生新的錯誤。在大多數情況下,回歸測試占測試周期和測試自由的50%。因此,如果能夠製定更有效的回歸測試用例,將極大的提升整個測試的效率。
回歸測試的流程如下:
(1)找出程序中因為新增需求或者故障解決,而被修改的代碼
(2)從總的用例庫中,去除掉不再合適的測試用例:這部分用例可能是修改沒涉及的功能,也可能是一些係統性穩定性的低優先級的測試用例
(3)針對修改的影響部分,增加一部分相關模塊的測試用例
(4)搜索出最基本的測試用例,納入到測試計劃:這部分測試用例保證軟件不出現意外的基本功能錯誤
(5)用上述2~4的測試用例集合,形成回歸測試的測試範圍
3.現有回歸測試用例選擇方法
對於一個軟件開發項目來說,項目的測試組在實施測試的過程中會將所開發的測試用例保存到“測試用例庫”中,並對其進行維護和管理。當得到一個軟件的基線版本時,用於基線版本測試的所有測試用例就形成了基線測試用例庫。在需要進行回歸測試的時候,就可以根據所選擇的回歸測試策略,從基線測試用例庫中提取合適的測試用例組成回歸測試包,通過運行回歸測試包來實現回歸測試。保存在基線測試用例庫中的測試用例可能是自動測試腳本,也有可能是測試用例的手工實現過程。
針對修改部分的測試是我們希望改進的內容
當前是優秀的高級工程師逐一的查看開發提交的各個修改點,根據自己對相關部分的理解,以及對開發修改點的學習。整理出需要回歸的測試點:這種方法的主要問題是:
需要優秀的工程師參與,這位工程師必須同時具備:既了解測試組的全部測試用例庫,也需要能夠理解開發提供的修訂說明。