朱凌燕
摘 要 測試用例的優(yōu)先級排序是提高回歸測試效率的有效手段,針對回歸測試用例的選擇和執(zhí)行問題,考慮缺陷影響因素,將缺陷嚴(yán)重性、缺陷優(yōu)先級和出錯原因等因子應(yīng)用于測試用例優(yōu)先級排序。通過實驗,比較測試用例排序前和排序后的缺陷檢測情況。結(jié)果表明,排序后的測試用例能夠提高回歸測試的效率,有效保證軟件產(chǎn)品的質(zhì)量。
【關(guān)鍵詞】回歸測試 測試用例 優(yōu)先級排序 軟件缺陷
回歸測試作為測試流程的重要環(huán)節(jié),用于驗證缺陷是否解決以及缺陷的解決是否引起其他潛在缺陷的出現(xiàn)?;貧w測試階段如果毫無策略地執(zhí)行已有的測試用例集,勢必會造成大量的時間和人力資源的浪費。為了降低回歸測試的成本,國內(nèi)外科研人員將測試用例優(yōu)先級排序技術(shù)引入到回歸測試階段,根據(jù)不同條件充分考慮測試用例的重要程度,賦予每個測試用例一個優(yōu)先級,根據(jù)優(yōu)先級從高到底的順序依次執(zhí)行測試用例,從而提高測試用例的使用效率。1997年,Wong等最先提出了在回歸測試選擇技術(shù)基礎(chǔ)上對測試用例集進行最小化或優(yōu)先級處理,根據(jù)測試用例的覆蓋能力對測試用例進行優(yōu)先級排序;2002年,Kim等研究了綜合考慮各種測試歷史的優(yōu)先級技術(shù);2005年,Srikanth等研究了基于需求的回歸測試用例優(yōu)先級技術(shù);2006年,Walcott等研究了與時間因素相關(guān)的優(yōu)先級技術(shù);2010年,KeZhai等研究了基于位置的服務(wù)軟件測試中的測試用例優(yōu)先級排序;2012年,潘偉豐等人研究了一種基于復(fù)雜軟件網(wǎng)絡(luò)的回歸測試用例優(yōu)先級排序方法。
本文從軟件缺陷角度出發(fā),充分利用上一輪軟件測試的結(jié)果,引入與軟件缺陷相關(guān)的影響因子,對測試用例進行優(yōu)先級排序,提高回歸測試的效率。
1 測試用例優(yōu)先級排序方法
1.1 定義
Rothermel將測試用例優(yōu)先級排序定義為:T為給定的測試用例集,PT為T中測試用例所有可能的執(zhí)行順序,f為PT到實數(shù)集的映射函數(shù),測試用例優(yōu)先級的研究目標(biāo)就是找到其中的一個排列T'∈PT,使得對于任意的T''∈PT且T''≠T',都有f(T' )>f(T'')。f是對排序目標(biāo)的定量描述,用來度量排序的有效性,f的值越大,表明測試用例的排序越有效。
1.2 影響因子
目前,圍繞回歸測試用例優(yōu)先級排序問題主要在尋找影響測試用例優(yōu)先級的因素等方面展開。本文針對映射函數(shù)f的定義,將測試用例的缺陷檢測能力DDA(defect detection ability)作為其優(yōu)先級排序的取值,將發(fā)現(xiàn)缺陷的嚴(yán)重性、優(yōu)先級和出錯原因等作為缺陷檢測能力的影響因子。以下針對各個影響因子,分別得出其影響缺陷檢測能力的量化值。
1.2.1 缺陷嚴(yán)重性
根據(jù)缺陷對軟件運行造成的影響來劃分缺陷的嚴(yán)重性,一般分為四個等級:致命缺陷、嚴(yán)重缺陷、普通缺陷、輕微缺陷。具體定義如下:
致命缺陷:造成系統(tǒng)或應(yīng)用程序崩潰、死機;造成數(shù)據(jù)丟失;主要功能完全喪失,導(dǎo)致本模塊以及其他模塊異常等問題。
嚴(yán)重缺陷:系統(tǒng)的主要功能部分喪失,導(dǎo)致本模塊功能失效或異常退出,但不影響其他模塊;次要功能完全喪失;數(shù)據(jù)丟失,但可以回復(fù)。
普通缺陷:次要功能沒有完全實現(xiàn),但不影響系統(tǒng)的基本使用;提示信息不準(zhǔn)確;操作時間長等。
輕微缺陷:拼寫錯誤,界面美觀等問題,不影響功能的操作和執(zhí)行。
按嚴(yán)重性從高到低的順序依次定義一個1到10之間的值。ds代表不同缺陷嚴(yán)重性對應(yīng)的量化值,其中致命缺陷的ds值為8,嚴(yán)重缺陷的ds值為4,普通缺陷的ds值為2,輕微缺陷的ds值為1。使用公式(1)量化得到第i個測試用例發(fā)現(xiàn)不同嚴(yán)重性缺陷的能力值ESi。
式(1)中,Si表示第i個測試用例發(fā)現(xiàn)的所有缺陷的嚴(yán)重性值和,由表達式(2)量化得到,max(S)表示測試用例集中,單個用例發(fā)現(xiàn)的缺陷嚴(yán)重性值和的最大值。
式(2)中,dsj表示第i個測試用例發(fā)現(xiàn)的第j個缺陷的嚴(yán)重性的量化值,k標(biāo)識第i個測試用例發(fā)現(xiàn)的缺陷個數(shù)。
1.2.2 缺陷優(yōu)先級
根據(jù)處理缺陷的緊迫性來劃分缺陷優(yōu)先級,一般分為四個等級:緊急、高級、中級、低級。具體定義如下:
緊急:需要立即解決的缺陷,可以對應(yīng)嚴(yán)重度為致命的缺陷,但不絕對,或者是客戶需要馬上實現(xiàn)的特殊要求。
高級:需要盡快解決的缺陷,可以對應(yīng)嚴(yán)重度為嚴(yán)重的缺陷,但不絕對,或者是會影響測試進行的缺陷。
中級:需要較快解決的缺陷,可能是某個不影響到其他功能的單個功能失效缺陷。
低級:可以稍遲處理或者在往后版本中處理,甚至不進行處理也可以的缺陷。
為每種缺陷優(yōu)先級定義一個1到4之間的值。dp代表不同缺陷優(yōu)先級對應(yīng)的量化值,其中緊急缺陷的dp值為4,高級別缺陷的dp值為3,中級別缺陷的dp值為2,低級別缺陷的dp值為1。使用公式(3)量化得到第i個測試用例發(fā)現(xiàn)不同優(yōu)先級缺陷的能力值EPi。
式(3)中,Pi表示第i個測試用例發(fā)現(xiàn)的所有缺陷的優(yōu)先級值和,由表達式(4)量化得到,max(P)表示測試用例集中,單個用例發(fā)現(xiàn)的缺陷優(yōu)先級值和的最大值。
式(4)中,dpj表示第i個測試用例發(fā)現(xiàn)的第j個缺陷的優(yōu)先級的量化值,k表示第i個測試用例發(fā)現(xiàn)的缺陷個數(shù)。
1.2.3 出錯原因
每個缺陷都有其出錯原因,一般可以劃分為四類:需求缺陷、設(shè)計缺陷、代碼缺陷、其他缺陷。具體定義如下:
需求缺陷:系統(tǒng)未滿足用戶的要求而導(dǎo)致的缺陷。
設(shè)計缺陷:系統(tǒng)設(shè)計與需求規(guī)格中的功能說明不相符而導(dǎo)致的缺陷。
代碼缺陷:代碼未按設(shè)計說明書中的要求設(shè)計,或代碼本身的邏輯錯誤導(dǎo)致的缺陷。
其他缺陷:不在需求缺陷、設(shè)計缺陷、代碼缺陷之列的其他缺陷。endprint
為每種出錯原因定義一個1到10之間的值。dr代表不同出錯原因?qū)?yīng)的量化值,其中需求缺陷的dr值為8,設(shè)計缺陷的dr值為6,代碼缺陷的dr值為4,其他缺陷的dr值為2。使用公式(5)量化得到第i個測試用例發(fā)現(xiàn)不同出錯原因缺陷的能力ERi。
式(5)中,Ri表示第i個測試用例發(fā)現(xiàn)的所有缺陷的出錯原因值和,由表達式(6)量化得到,max(R)表示測試用例集中,單個用例發(fā)現(xiàn)的缺陷出錯原因值和的最大值。
式(6)中,drj表示第i個測試用例發(fā)現(xiàn)的第j個缺陷的出錯原因的量化值,k表示第i個測試用例發(fā)現(xiàn)的缺陷個數(shù)。
至此,回歸測試中第i個測試用例的優(yōu)先級取值DDAi可通過式(7)來計算:
其中WS、WP、WR分別是ESi、EPi、ERi對應(yīng)的權(quán)值,它們的取值可以根據(jù)實際情況來調(diào)整。
測試用例優(yōu)先級排序方法就是在得到每個測試用例的優(yōu)先級取值后,按從高到底的順序重排測試用例集,利用排序后的測試用例集來執(zhí)行新一輪的回歸測試。
2 度量標(biāo)準(zhǔn)及實驗分析
2.1 度量標(biāo)準(zhǔn)
研究者利用缺陷檢測加權(quán)平均百分比APFD(average of the percentage of faults detected)來驗證不同優(yōu)先級排序方法的測試效率,通過繪制缺陷檢測曲線圖來計算APFD值,橫坐標(biāo)代表測試用例的運行情況,縱坐標(biāo)代表每個測試用例對應(yīng)的缺陷檢測情況,一般而言,APFD的值越大,說明對應(yīng)的測試用例排序方法檢測到缺陷的速度越快。Elbaum給出了APFD的計算公式,如式(8)所示。
式(8)中,n表示測試用例集T中測試用例的總數(shù),m表示缺陷集F中缺陷的總數(shù),TF_i表示檢測到缺陷i的第一個測試用例在T中的位置。
2.2 實驗分析
為了比較和評價基于缺陷的測試用例優(yōu)先級排序方法的有效性,我們選取了某地震采集軟件進行測試和分析,為其設(shè)計10個測試用例,測試得到10個軟件缺陷,初次測試時,測試用例的缺陷檢測情況如表1所示,其中Ti (i=1,2,3,4,5,6,7,8,9,10)為測試用例,F(xiàn)i (i=1,2,3,4,5,6,7,8,9,10)為檢測到的軟件缺陷。
每個缺陷的缺陷影響因子量化值如表2所示。
利用測試用例優(yōu)先級排序方法,式7中WS、WP、WR的取值均設(shè)定為1/3,計算每個用例的優(yōu)先級取值DDA,得到回歸測試用例優(yōu)先級排序集(T10,T6,T7,T8,T5,T9,T4,T3,T2,T1)。未排序測試用例集的APFD如圖1所示,值為0.56。排序后測試用例集的APFD如圖2所示,值為0.86。測試用例未排序和排序后的缺陷檢測情況圖如圖3所示。
通過實驗發(fā)現(xiàn):
(1)與不進行排序的測試用例集相比,采用基于缺陷的優(yōu)先級排序算法得到的測試用例集,其執(zhí)行效率得到了明顯的改善,能夠提高缺陷的檢測效率。
(2)從未排序和已排序測試用例缺陷檢測情況圖可見,排序后的測試用例集在執(zhí)行到40%的測試用例時就檢測出了軟件的全部缺陷,而未排序的測試用例集在執(zhí)行完所有的測試用例時才檢測出所有的缺陷。
3 結(jié)論
本文中的基于缺陷的測試用例優(yōu)先級排序方法,將軟件缺陷作為測試用例優(yōu)先級排序的影響因素,通過計算缺陷嚴(yán)重性、缺陷優(yōu)先級和出錯原因等與軟件缺陷相關(guān)的因子的影響值,最終得到測試用例優(yōu)先級的取值,按照測試用例優(yōu)先級取值的大小決定測試用例的執(zhí)行順序。通過這種優(yōu)先級排序方法,能夠盡快檢測到軟件缺陷,提高測試用例的檢測效率;能夠盡快達到測試的覆蓋率標(biāo)準(zhǔn),降低測試的時間成本和人力開銷。
在實際測試中,由于測試用例排序本身也存在一定的成本開銷,所以下一步的工作主要是在測試用例范圍選擇的基礎(chǔ)上進行優(yōu)先級排序,從而降低一部分的排序開銷。
參考文獻
[1]W E Wong,J R Horgan,S London and H Agrawal.A study of effective regression testing in practice[C].Proceedings of the 8th IEEE International Symposium on Software Reliability Engineering,1997:230-238.
[2]J M Kim,A Porter.A history-based test prioritization technique for regression testing in resource constrained environments[C]. Proceedings of the 24th International Conference on Software Engineering,2002:119-129.
[3]Srikanth H,Williams L,Osborne J. System test case prioritizationofnew and regression test cases[C].Noosa Heads,Australia,Proceedings ofthe 4th International Symposium on Empirical SoftwareEngineering,2005:64-73.
[4]Walcott K Sofia M L,Kapfhammer G M,et a1.Time-awaretestsuite prioritization [C].Portland,Maine,USA:Proceedings of theInternational Symposium on Software Testing and Analysis,2006:1-12.
[5]KeZhai,Bo Jiang,Chan W K,etal.Taking Advantage of service selection:A Study on the testing of location-based web services through test case prioritizationa[C]. Miami,F(xiàn)lorida,USA:Proceedings of the IEEE International Conference on Web Services,2010:211-218.
[6]潘偉豐,李兵,馬于濤等.基于復(fù)雜軟件網(wǎng)絡(luò)的回歸測試用例優(yōu)先級排序[J].電子學(xué)報,2012,40(12):2456-2465.
[7]Rothermel G,Untch R H,Chu C Y,et a1.PrioritizingTest Cases for Regression Testing[J].IEEE Transactions on Software Engineering,2001,27(10):929-948.
[8]屈波,聶長海,徐寶文.回歸測試中測試用例優(yōu)先級技術(shù)研究綜述[J].計算機科學(xué)與探索,2009,3(03):225-233.
[9]Elbaum S,Rothermel G,Kanduri S,et a1.Selecting aCost-effective Test Case Prioritization Technique[J].Software Quality Journal,2004,12(03):185-210.
作者單位
中國石油化工股份有限公司石油物探技術(shù)研究院 江蘇省南京市 211103endprint