不平凡軟件,始于2014
軟件回歸測試及其實踐
一、概述
在軟件生命周期中的任何一個階段,只要軟件發(fā)生了改變,就可能給該軟件帶來問題。軟件的改變可能是源于發(fā)現(xiàn)了錯誤并做了修改,也有可能是因為在集成或維護階段加入了新的模塊。當軟件發(fā)生變化時,我們就必須重新測試現(xiàn)有的功能,以便確定修改是否達到了預(yù)期的目的,檢查修改是否損害了原有的正常功能。同時,還需要補充新的測試用例來測試新的或被修改了的功能。為了驗證修改的正確性及其影響就需要進行回歸測試。回歸測試在軟件生命周期中扮演著重要的角色,因忽視回歸測試而造成嚴重后果的例子不計其數(shù),導(dǎo)致阿里亞娜5型火箭發(fā)射失敗的軟件缺陷就是由于復(fù)用的代碼沒有經(jīng)過充分的回歸測試造成的?;貧w測試作為軟件生命周期的一個組成部分,在整個軟件測試過程中占有很大的工作量比重,軟件開發(fā)的各個階段都會進行多次回歸測試。在漸進和快速迭代開發(fā)中,新版本的連續(xù)發(fā)布使回歸測試進行的更加頻繁,而在極端編程方法中,更是要求每天都進行若干次回歸測試。因此,通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是非常有意義的。
二、回歸測試策略
對于一個軟件開發(fā)項目來說,項目的測試組在實施測試的過程中會將所開發(fā)的測試用例保存到“測試用例庫”中,并對其進行維護和管理。當?shù)玫揭粋€軟件的基線版本時,用于基線版本測試的所有測試用例就形成了基線測試用例庫。在需要進行回歸測試的時候,就可以根據(jù)所選擇的回歸測試策略,從基線測試用例庫中提取合適的測試用例組成回歸測試包,通過運行回歸測試包來實現(xiàn)回歸測試。保存在基線測試用例庫中的測試用例可能是自動測試腳本,也有可能是測試用例的手工實現(xiàn)過程?;貧w測試需要時間、經(jīng)費和人力來計劃、實施和管理。為了在給定的預(yù)算和進度下,盡可能有效率和有效力地進行回歸測試,需要對測試用例庫進行維護并依據(jù)一定的策略選擇相應(yīng)的回歸測試包。
?。ㄒ唬y試用例庫的維護。為了最大限度地滿足客戶的需要和適應(yīng)應(yīng)用的要求,軟件在其生命周期中會頻繁地被修改和不斷推出新的版本,修改后的或者新版本的軟件會添加一些新的功能或者在軟件功能上產(chǎn)生某些變化。為了保證測試用例庫中測試用例的有效性,必須對測試用例庫進行維護。同時,被修改的或新增添的軟件功能,僅僅靠重新運行以前的測試用例并不足以揭示其中的問題,有必要追加新的測試用例來測試這些新的功能或特征。因此,測試用例庫的維護工作還應(yīng)包括開發(fā)新測試用例,這些新的測試用例用來測試軟件的新特征或者覆蓋現(xiàn)有測試用例無法覆蓋的軟件功能或特征。測試用例的維護是一個不間斷的過程,通??梢詫④浖_發(fā)的基線作為基準,維護的主要內(nèi)容包括這幾個方面:刪除過時的測試用例、改進不受控制的測試用例、刪除冗余的測試用例 、增添新的測試用例。
(二)回歸測試包的選擇。在軟件生命周期中,即使一個得到良好維護的測試用例庫也可能變得相當大,這使每次回歸測試都重新運行完整的測試包變得不切實際。一個完全的回歸測試包括每個基線測試用例,時間和成本約束可能阻礙運行這樣一個測試,有時測試組不得不選擇一個縮減的回歸測試包來完成回歸測試?;貧w測試的價值在于它是一個能夠檢測到回歸錯誤的受控實驗。當測試組選擇縮減的回歸測試時,有可能刪除了將揭示回歸錯誤的測試用例,消除了發(fā)現(xiàn)回歸錯誤的機會。然而,如果采用了代碼相依性分析等安全的縮減技術(shù),就可以決定哪些測試用例可以被刪除而不會讓回歸測試的意圖遭到破壞。
選擇回歸測試策略應(yīng)該兼顧效率和有效性兩個方面。常用的選擇回歸測試的方式包括:1.再測試全部用例;2.基于風險選擇測試;3.基于操作剖面選擇測試;4.再測試修改的部分。
?。ㄈ┗貧w測試的基本過程
有了測試用例庫的維護方法和回歸測試包的選擇策略,回歸測試可遵循下述基本過程進行: 1.識別出軟件中被修改的部分;2.從原基線測試用例庫T中,排除所有不再適用的測試用例,確定那些對新的軟件版本依然有效的測試用例,其結(jié)果是建立一個新的基線測試用例庫T0;3.依據(jù)一定的策略從T0中選擇測試用例測試被修改的軟件;4.如果必要,生成新的測試用例集T1,用于測試T0無法充分測試的軟件部分;5.用T1執(zhí)行修改后的軟件。第(2)和第(3)步測試驗證修改是否破壞了現(xiàn)有的功能,第(4)和第(5)步測試驗證 修改工作本身。
三、回歸測試實踐
在實際工作中,回歸測試需要反復(fù)進行,當測試者一次又一次地完成相同的測試時,這些回歸測試將變得非常令人厭煩,而在大多數(shù)回歸測試需要手工完成的時候尤其如此,因此,需要通過自動測試來實現(xiàn)重復(fù)的和一致的回歸測試。通過測試自動化可以提高回歸測試效率。為了支持多種回歸測試策略,自動測試工具應(yīng)該是通用的和靈活的,以便滿足達到不同回歸測試目標的要求?;貧w測試并不減少對系統(tǒng)新功能和特征的測試需求,回歸測試包應(yīng)包括新功能和特征的測試。如果回歸測試包不能達到所需的覆蓋要求,必須補充新的測試用例使覆蓋率達到規(guī)定的要求?;貧w測試是重復(fù)性較多的活動,容易使測試者感到疲勞和厭倦,降低測試效率,在實際工作中可以采用一些策略減輕這些問題。在組織回歸測試時需要注意兩點,首先是各測試階段發(fā)生的修改一定要在本測試階段內(nèi)完成回歸,以免將錯誤遺留到下一測試階段。其次,回歸測試期間應(yīng)對該軟件版本凍結(jié),將回歸測試發(fā)現(xiàn)的問題集中修改,集中回歸。
在實際測試時,可以將回歸測試與兼容性測試結(jié)合起來進行。在新的配置條件下運行舊的測試可以發(fā)現(xiàn)兼容性問題,而同時也可以揭示編碼在回歸方面的錯誤。
相關(guān)新聞換一組