回歸測試作為軟件生命周期的一個組成部分,在整個軟件測試過程中占有很大的工作量比重,軟件開發的各個階段都會進行多次回歸測試。在漸進和快速迭代開發中,新版本的連續發布使回歸測試進行的更加頻繁,而在極端編程方法中,更是要求每天都進行若干次回歸測試。因此,通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是非常有意義的。
一、 軟件回歸測試的概述
在軟件生命周期中的任何一個階段,只要軟件發生了改變,就可能給該軟件帶來問題。軟件的改變可能是源于發現了錯誤并做了修改,也有可能是因為在集成或維護階段加入了新的模塊。當軟件中所含錯誤被發現時,如果錯誤跟蹤與管理系統不夠完善,就可能會遺漏對這些錯誤的修改;而開發者對錯誤理解的不夠透徹,也可能導致所做的修改只修正了錯誤的外在表現,而沒有修復錯誤本身,從而造成修改失敗;修改還有可能產生副作用從而導致軟件未被修改的部分產生新的問題,使本來工作正常的功能產生錯誤。同樣,在有新代碼加入軟件的時候,除了新加入的代碼中有可能含有錯誤外,新代碼還有可能對原有的代碼帶來影響。因此,每當軟件發生變化時,我們就必須重新測試現有的功能,以便確定修改是否達到了預期的目的,檢查修改是否損害了原有的正常功能。同時,還需要補充新的測試用例來測試新的或被修改了的功能。為了驗證修改的正確性及其影響就需要進行回歸測試。
回歸測試在軟件生命周期中扮演著重要的角色,因忽視回歸測試而造成嚴重后果的例子不計其數,導致阿里亞娜5型火箭發射失敗的軟件缺陷就是由于復用的代碼沒有經過充分的回歸測試造成的。
回歸測試作為軟件生命周期的一個組成部分,在整個軟件測試過程中占有很大的工作量比重,軟件開發的各個階段都會進行多次回歸測試。在漸進和快速迭代開發中,新版本的連續發布使回歸測試進行的更加頻繁,而在極端編程方法中,更是要求每天都進行若干次回歸測試。因此,通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是非常有意義的。
二、 回歸測試策略
對于一個軟件開發項目來說,項目的測試組在實施測試的過程中會將所開發的測試用例保存到“測試用例庫”中,并對其進行維護和管理。當得到一個軟件的基線版本時,用于基線版本測試的所有測試用例就形成了基線測試用例庫。在需要進行回歸測試的時候,就可以根據所選擇的回歸測試策略,從基線測試用例庫中提取合適的測試用例組成回歸測試包,通過運行回歸測試包來實現回歸測試。保存在基線測試用例庫中的測試用例可能是自動測試腳本,也有可能是測試用例的手工實現過程。
回歸測試需要時間、經費和人力來計劃、實施和管理。為了在給定的預算和進度下,盡可能有效率和有效力地進行回歸測試,需要對測試用例庫進行維護并依據一定的策略選擇相應的回歸測試包。
1、測試用例庫的維護
為了最大限度地滿足客戶的需要和適應應用的要求,軟件在其生命周期中會頻繁地被修改和不斷推出新的版本,修改后的或者新版本的軟件會添加一些新的功能或者在軟件功能上產生某些變化。隨著軟件的改變,軟件的功能和應用接口以及軟件的實現發生了演變,測試用例庫中的一些測試用例可能會失去針對性和有效性,而另一些測試用例可能會變得過時,還有一些測試用例將完全不能運行。為了保證測試用例庫中測試用例的有效性,必須對測試用例庫進行維護。同時,被修改的或新增添的軟件功能,僅僅靠重新運行以前的測試用例并不足以揭示其中的問題,有必要追加新的測試用例來測試這些新的功能或特征。因此,測試用例庫的維護工作還應包括開發新測試用例,這些新的測試用例用來測試軟件的新特征或者覆蓋現有測試用例無法覆蓋的軟件功能或特征。
測試用例的維護是一個不間斷的過程,通??梢詫④浖_發的基線作為基準,維護的主要內容包括下述幾個方面。
(1)、刪除過時的測試用例
因為需求的改變等原因可能會使一個基線測試用例不再適合被測試系統,這些測試用例就會過時。例如,某個變量的界限發生了改變,原來針對邊界值的測試就無法完成對新邊界測試。所以,在軟件的每次修改后都應進行相應的過時測試用例的刪除。
原文轉自:http://www.uml.org.cn/Test/20101283.asp