(2)、改進(jìn)不受控制的測試用例
隨著(zhù)軟件項目的進(jìn)展,測試用例庫中的用例會(huì )不斷增加,其中會(huì )出現一些對輸入或運行狀態(tài)十分敏感的測試用例。這些測試不容易重復且結果難以控制,會(huì )影響回歸測試的效率,需要進(jìn)行改進(jìn),使其達到可重復和可控制的要求。
(3)、刪除冗余的測試用例
如果存在兩個(gè)或者更多個(gè)測試用例針對一組相同的輸入和輸出進(jìn)行測試,那么這些測試用例是冗余的。冗余測試用例的存在降低了回歸測試的效率。所以需要定期的整理測試用例庫,并將冗余的用例刪除掉。
(4)、增添新的測試用例
如果某個(gè)程序段、構件或關(guān)鍵的接口在現有的測試中沒(méi)有被測試,那么應該開(kāi)發(fā)新測試用例重新對其進(jìn)行測試。并將新開(kāi)發(fā)的測試用例合并到基線(xiàn)測試包中。
通過(guò)對測試用例庫的維護不僅改善了測試用例的可用性,而且也提高了測試庫的可信性,同時(shí)還可以將一個(gè)基線(xiàn)測試用例庫的效率和效用保持在一個(gè)較高的級別上。
2、回歸測試包的選擇
在軟件生命周期中,即使一個(gè)得到良好維護的測試用例庫也可能變得相當大,這使每次回歸測試都重新運行完整的測試包變得不切實(shí)際。一個(gè)完全的回歸測試包括每個(gè)基線(xiàn)測試用例,時(shí)間和成本約束可能阻礙運行這樣一個(gè)測試,有時(shí)測試組不得不選擇一個(gè)縮減的回歸測試包來(lái)完成回歸測試。
回歸測試的價(jià)值在于它是一個(gè)能夠檢測到回歸錯誤的受控實(shí)驗。當測試組選擇縮減的回歸測試時(shí),有可能刪除了將揭示回歸錯誤的測試用例,消除了發(fā)現回歸錯誤的機會(huì )。然而,如果采用了代碼相依性分析等安全的縮減技術(shù),就可以決定哪些測試用例可以被刪除而不會(huì )讓回歸測試的意圖遭到破壞。
選擇回歸測試策略應該兼顧效率和有效性?xún)蓚€(gè)方面。常用的選擇回歸測試的方式包括:
(1)、再測試全部用例
選擇基線(xiàn)測試用例庫中的全部測試用例組成回歸測試包,這是一種比較安全的方法,再測試全部用例具有最低的遺漏回歸錯誤的風(fēng)險,但測試成本最高。全部再測試幾乎可以應用到任何情況下,基本上不需要進(jìn)行分析和重新開(kāi)發(fā),但是,隨著(zhù)開(kāi)發(fā)工作的進(jìn)展,測試用例不斷增多,重復原先所有的測試將帶來(lái)很大的工作量,往往超出了我們的預算和進(jìn)度。
(2)、基于風(fēng)險選擇測試
可以基于一定的風(fēng)險標準來(lái)從基線(xiàn)測試用例庫中選擇回歸測試包。首先運行最重要的、關(guān)鍵的和可疑的測試,而跳過(guò)那些非關(guān)鍵的、優(yōu)先級別低的或者高穩定的測試用例,這些用例即便可能測試到缺陷,這些缺陷的嚴重性也僅有三級或四級。一般而言,測試從主要特征到次要特征。
(3)、基于操作剖面選擇測試
如果基線(xiàn)測試用例庫的測試用例是基于軟件操作剖面開(kāi)發(fā)的,測試用例的分布情況反映了系統的實(shí)際使用情況?;貧w測試所使用的測試用例個(gè)數可以由測試預算確定,回歸測試可以?xún)?yōu)先選擇那些針對最重要或最頻繁使用功能的測試用例,釋放和緩解最高級別的風(fēng)險,有助于盡早發(fā)現那些對可靠性有最大影響的故障。這種方法可以在一個(gè)給定的預算下最有效的提高系統可靠性,但實(shí)施起來(lái)有一定的難度。
(4)、再測試修改的部分
當測試者對修改的局部化有足夠的信心時(shí),可以通過(guò)相依性分析識別軟件的修改情況并分析修改的影響,將回歸測試局限于被改變的模塊和它的接口上。通常,一個(gè)回歸錯誤一定涉及一個(gè)新的、修改的或刪除的代碼段。在允許的條件下,回歸測試盡可能覆蓋受到影響的部分。
再測試全部用例的策略是最安全的策略,但已經(jīng)運行過(guò)許多次的回歸測試不太可能揭示新的錯誤,而且很多時(shí)候,由于時(shí)間、人員、設備和經(jīng)費的原因,不允許選擇再測試全部用例的回歸測試策略,此時(shí),可以選擇適當的策略進(jìn)行縮減的回歸測試。
3、回歸測試的基本過(guò)程
有了測試用例庫的維護方法和回歸測試包的選擇策略,回歸測試可遵循下述基本過(guò)程進(jìn)行:
(1). 識別出軟件中被修改的部分;
(2). 從原基線(xiàn)測試用例庫T中,排除所有不再適用的測試用例,確定那些對新的軟件版本依然有效的測試用例,其結果是建立一個(gè)新的基線(xiàn)測試用例庫T0。
(3). 依據一定的策略從T0中選擇測試用例測試被修改的軟件。
原文轉自:http://www.uml.org.cn/Test/2009031910.asp