1. 程式人生 > >軟體迴歸測試及其實踐(二)

軟體迴歸測試及其實踐(二)

2、迴歸測試包的選擇

在軟體生命週期中,即使一個得到良好維護的測試用例庫也可能變得相當大,這使每次迴歸測試都重新執行完整的測試包變得不切實際。一個完全的迴歸測試包括每個基線測試用例,時間和成本約束可能阻礙執行這樣一個測試,有時測試組不得不選擇一個縮減的迴歸測試包來完成迴歸測試。

迴歸測試的價值在於它是一個能夠檢測到迴歸錯誤的受控實驗。當測試組選擇縮減的迴歸測試時,有可能刪除了將揭示迴歸錯誤的測試用例,消除了發現迴歸錯誤的機會。然而,如果採用了程式碼相依性分析等安全的縮減技術,就可以決定哪些測試用例可以被刪除而不會讓迴歸測試的意圖遭到破壞。

選擇迴歸測試策略應該兼顧效率和有效性兩個方面。常用的選擇迴歸測試的方式包括:

(1)、再測試全部用例

選擇基線測試用例庫中的全部測試用例組成迴歸測試包,這是一種比較安全的方法,再測試全部用例具有最低的遺漏迴歸錯誤的風險,但測試成本最高。全部再測試幾乎可以應用到任何情況下,基本上不需要進行分析和重新開發,但是,隨著開發工作的進展,測試用例不斷增多,重複原先所有的測試將帶來很大的工作量,往往超出了我們的預算和進度。

(2)、基於風險選擇測試

可以基於一定的風險標準來從基線測試用例庫中選擇迴歸測試包。首先執行最重要的、關鍵的和可疑的測試,而跳過那些非關鍵的、優先級別低的或者高穩定的測試用例,這些用例即便可能測試到缺陷,這些缺陷的嚴重性也僅有三級或四級。一般而言,測試從主要特徵到次要特徵。

(3)、基於操作剖面選擇測試

如果基線測試用例庫的測試用例是基於軟體操作剖面開發的,測試用例的分佈情況反映了系統的實際使用情況。迴歸測試所使用的測試用例個數可以由測試預算確定,迴歸測試可以優先選擇那些針對最重要或最頻繁使用功能的測試用例,釋放和緩解最高級別的風險,有助於儘早發現那些對可靠性有最大影響的故障。這種方法可以在一個給定的預算下最有效的提高系統可靠性,但實施起來有一定的難度。

(4)、再測試修改的部分

當測試者對修改的區域性化有足夠的信心時,可以通過相依性分析識別軟體的修改情況並分析修改的影響,將回歸測試侷限於被改變的模組和它的介面上。通常,一個迴歸錯誤一定涉及一個新的、修改的或刪除的程式碼段。在允許的條件下,迴歸測試儘可能覆蓋受到影響的部分。

再測試全部用例的策略是最安全的策略,但已經執行過許多次的迴歸測試不太可能揭示新的錯誤,而且很多時候,由於時間、人員、裝置和經費的原因,不允許選擇再測試全部用例的迴歸測試策略,此時,可以選擇適當的策略進行縮減的迴歸測試。

3、迴歸測試的基本過程

有了測試用例庫的維護方法和迴歸測試包的選擇策略,迴歸測試可遵循下述基本過程進行:

(1). 識別出軟體中被修改的部分;

(2). 從原基線測試用例庫T中,排除所有不再適用的測試用例,確定那些對新的軟體版本依然有效的測試用例,其結果是建立一個新的基線測試用例庫T0。

(3). 依據一定的策略從T0中選擇測試用例測試被修改的軟體。

(4). 如果必要,生成新的測試用例集T1,用於測試T0無法充分測試的軟體部分。

(5). 用T1執行修改後的軟體。

第(2)和第(3)步測試驗證修改是否破壞了現有的功能,第(4)和第(5)步測試驗證 修改工作本身。

三、 迴歸測試實踐

在實際工作中,迴歸測試需要反覆進行,當測試者一次又一次地完成相同的測試時,這些迴歸測試將變得非常令人厭煩,而在大多數迴歸測試需要手工完成的時候尤其如此,因此,需要通過自動測試來實現重複的和一致的迴歸測試。通過測試自動化可以提高迴歸測試效率。為了支援多種迴歸測試策略,自動測試工具應該是通用的和靈活的,以便滿足達到不同迴歸測試目標的要求。

在測試軟體時,應用多種測試技術是常見的。當測試一個修改了的軟體時,測試者也可能希望採用多於一種迴歸測試策略來增加對修改軟體的信心。不同的測試者可能會依據自己的經驗和判斷選擇不同的迴歸測試技術和策略。

迴歸測試並不減少對系統新功能和特徵的測試需求,迴歸測試包應包括新功能和特徵的測試。如果迴歸測試包不能達到所需的覆蓋要求,必須補充新的測試用例使覆蓋率達到規定的要求。

迴歸測試是重複性較多的活動,容易使測試者感到疲勞和厭倦,降低測試效率,在實際工作中可以採用一些策略減輕這些問題。例如,安排新的測試者完成手工迴歸測試,分配更有經驗的測試者開發新的測試用例,編寫和除錯自動測試指令碼,做一些探索性的或ad hoc測試。還可以在不影響測試目標的情況下,鼓勵測試者創造性地執行測試用例,變化的輸入、按鍵和配置能夠有助於激勵測試者又能揭示新的錯誤。

在組織迴歸測試時需要注意兩點,首先是各測試階段發生的修改一定要在本測試階段內完成迴歸,以免將錯誤遺留到下一測試階段。其次,迴歸測試期間應對該軟體版本凍結,將回歸測試發現的問題集中修改,集中迴歸。

在實際工作中,可以將回歸測試與相容性測試結合起來進行。在新的配置條件下執行舊的測試可以發現相容性問題,而同時也可以揭示編碼在迴歸方面的錯誤。

參考文獻:

[1] Glenford J.Myers,計算機軟體測試技巧,清華大學出版社,1985。

[2] Robert V. Binder,面向物件系統的測試,人民郵電出版社,2001。

[3] Rex Black, 測試流程管理,北京大學出版社,2001。

[ Last edited by songfun on 2004-6-30 at 14:25 ]