相信很多同學都是聽過回歸測試這個說法的吧,而自動化測試很多時候都應用在這個時候,今天就來說一說回歸測試吧。
一、軟體回歸測試的定義:
回歸測試是指修改了舊代碼後,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤的一種測試方法。
1、回歸測試是指重複以前的全部或部分的相同功能測試
2、新加入測試的模塊,可能對其他模塊產生副作用,因此要進行某些程度的回歸測試
3、回歸測試的重心,是以關鍵性模塊為核心
二、做回歸測試的好處如下:
1、自動回歸測試將大幅度降低系統測試、維護升級等階段的成本,回歸測試作為軟體生命周期的一個組成部分,在整個軟體測試過程中佔有很大的工作量比重,軟體開發的各個階段都可以進行多次回歸測試。
2、回歸測試的意義:
1)在漸進和快速迭代開發中,新版本的連續發布使回歸測試進行的更加頻繁,而在極端編程方法中,更是要求每天都進行若干次回歸測試;因此,通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是非常有意義的
3、做回歸測試的測試用例的選擇:
1)對於一個軟體開發項目來說,項目的測試組在實施測試的過程中會將所開發的測試用例保存到「測試用例庫」中,並對其進行維護和管理。當得到一個軟體的基線版本時,用於基線版本測試的所有測試用例就形成了基線測試用例庫。在需要進行回歸測試的時候,就可以根據所選擇的回歸測試策略,從基線測試用例庫中提取合適的測試用例組成回歸測試包,通過運行回歸測試包來實現回歸測試。保存在基線測試用例庫中的測試用例可能是自動測試腳本,也有可能是測試用例的手工實現過程。
2)同時測試用例的維護是一個不間斷的過程,通常可以將軟體開發的基線作為基準,維護的主要內容包括下述幾個方面,
(1)刪除過時的測試用例:
因為需求的改變等原因可能會使一個基線測試用例不再適合被測試系統,這些測試用例就會過時,例如,某個變量的界限發生了改變,原來針對邊界值的測試就無法完成對新邊界測試。所以,在軟體的每次修改後都應進行相應的過時測試用例的刪除
(2)改進不受控制的測試用例:
隨著軟體項目的進展,測試用例庫中的用例會不斷增加,其中會出現一些對輸入或運行狀態十分敏感的測試用例:,這些測試不容易重複且結果難以控制,會影響回歸測試的效率,需要進行改進,使其達到可重複和可控制的要求。
(3)刪除冗餘的測試用例:
如果存在兩個或者更多個測試用例針對一組相同的輸入和輸出進行測試,那麼這些測試用例是冗餘的。冗餘測試用例的存在降低了回歸測試的效率:,所以需要定期的整理測試用例庫,並將冗餘的用例刪除掉。
(4)增添新的測試用例:
如果某個程序段、構件或關鍵的接口在現有的測試中沒有被測試,那麼應該開發新測試用例重新對其進行測試:,並將新開發的測試用例合併到基線測試包中,通過對測試用例庫的維護不僅改善了測試用例的可用性,而且也提高了測試庫的可信性,同時還可以將一個基線測試用例庫的效率和效用保持在一個較高的級別上。
3)選擇回歸測試應該兼顧效率和有效性兩個方面,常用的選擇回歸測試的方式包括:
(1)再測試全部用例:
選擇基線測試用例庫中的全部測試用例組成回歸測試包,這是一種比較安全的方法,再測試全部用例具有最低的遺漏回歸錯誤的風險,但測試成本最高。全部再測試幾乎可以應用到任何情況下,基本上不需要進行分析和重新開發,但是,隨著開發工作的進展,測試用例不斷增多,重複原先所有的測試將帶來很大的工作量,往往超出了我們的預算和進度。
(2)基於風險選擇測試:
可以基於一定的風險標準來從基線測試用例庫中選擇回歸測試包,首先運行最重要的、關鍵的和可疑的測試,而跳過那些非關鍵的、優先級別低的或者高穩定的測試用例,這些用例即便可能測試到缺陷,這些缺陷的嚴重性也僅有三級或四級,一般而言,測試從主要特徵到次要特徵。
(3)基於操作剖面選擇測試:
如果基線測試用例庫的測試用例是基於軟體操作剖面開發的,測試用例的分布情況反映了系統的實際使用情況。回歸測試所使用的測試用例個數可以由測試預算確定,回歸測試可以優先選擇那些針對最重要或最頻繁使用功能的測試用例,釋放和緩解最高級別的風險,有助於儘早發現那些對可靠性有最大影響的故障。這種方法可以在一個給定的預算下最有效的提高系統可靠性,但實施起來有一定的難度:。
(4)再測試修改的部分
當測試者對修改的局部部分有足夠的信心時,可以通過相依性分析識別軟體的修改情況並分析修改的影響,將回歸測試局限於被改變的模塊和它的接口上。
通常,一個回歸錯誤一定涉及一個新的、修改的或刪除的代碼段,在允許的條件下,回歸測試儘可能覆蓋受到影響的部分。
4)回歸測試的基本過程:
(1)重點測試軟體中被修改的部分;
(2)從原基線測試用例庫中,排除所有不再適用的測試用例,確定那些對新的軟體版本依然有效的測試用例,其結果是建立一個新的基線測試用例庫。
(3)依據一定的策略從測試用例庫中選擇測試用例測試被修改的軟體。
(4)如果必要,生成新的測試用例集,用於測試無法充分測試到的軟體部分。
(5)用新軟體測試用例集執行修改後的軟體。