朱凌燕


摘 要 測(cè)試用例的優(yōu)先級(jí)排序是提高回歸測(cè)試效率的有效手段,針對(duì)回歸測(cè)試用例的選擇和執(zhí)行問(wèn)題,考慮缺陷影響因素,將缺陷嚴(yán)重性、缺陷優(yōu)先級(jí)和出錯(cuò)原因等因子應(yīng)用于測(cè)試用例優(yōu)先級(jí)排序。通過(guò)實(shí)驗(yàn),比較測(cè)試用例排序前和排序后的缺陷檢測(cè)情況。結(jié)果表明,排序后的測(cè)試用例能夠提高回歸測(cè)試的效率,有效保證軟件產(chǎn)品的質(zhì)量。
【關(guān)鍵詞】回歸測(cè)試 測(cè)試用例 優(yōu)先級(jí)排序 軟件缺陷
回歸測(cè)試作為測(cè)試流程的重要環(huán)節(jié),用于驗(yàn)證缺陷是否解決以及缺陷的解決是否引起其他潛在缺陷的出現(xiàn)。回歸測(cè)試階段如果毫無(wú)策略地執(zhí)行已有的測(cè)試用例集,勢(shì)必會(huì)造成大量的時(shí)間和人力資源的浪費(fèi)。為了降低回歸測(cè)試的成本,國(guó)內(nèi)外科研人員將測(cè)試用例優(yōu)先級(jí)排序技術(shù)引入到回歸測(cè)試階段,根據(jù)不同條件充分考慮測(cè)試用例的重要程度,賦予每個(gè)測(cè)試用例一個(gè)優(yōu)先級(jí),根據(jù)優(yōu)先級(jí)從高到底的順序依次執(zhí)行測(cè)試用例,從而提高測(cè)試用例的使用效率。1997年,Wong等最先提出了在回歸測(cè)試選擇技術(shù)基礎(chǔ)上對(duì)測(cè)試用例集進(jìn)行最小化或優(yōu)先級(jí)處理,根據(jù)測(cè)試用例的覆蓋能力對(duì)測(cè)試用例進(jìn)行優(yōu)先級(jí)排序;2002年,Kim等研究了綜合考慮各種測(cè)試歷史的優(yōu)先級(jí)技術(shù);2005年,Srikanth等研究了基于需求的回歸測(cè)試用例優(yōu)先級(jí)技術(shù);2006年,Walcott等研究了與時(shí)間因素相關(guān)的優(yōu)先級(jí)技術(shù);2010年,KeZhai等研究了基于位置的服務(wù)軟件測(cè)試中的測(cè)試用例優(yōu)先級(jí)排序;2012年,潘偉豐等人研究了一種基于復(fù)雜軟件網(wǎng)絡(luò)的回歸測(cè)試用例優(yōu)先級(jí)排序方法。
本文從軟件缺陷角度出發(fā),充分利用上一輪軟件測(cè)試的結(jié)果,引入與軟件缺陷相關(guān)的影響因子,對(duì)測(cè)試用例進(jìn)行優(yōu)先級(jí)排序,提高回歸測(cè)試的效率。
1 測(cè)試用例優(yōu)先級(jí)排序方法
1.1 定義
Rothermel將測(cè)試用例優(yōu)先級(jí)排序定義為:T為給定的測(cè)試用例集,PT為T(mén)中測(cè)試用例所有可能的執(zhí)行順序,f為PT到實(shí)數(shù)集的映射函數(shù),測(cè)試用例優(yōu)先級(jí)的研究目標(biāo)就是找到其中的一個(gè)排列T'∈PT,使得對(duì)于任意的T''∈PT且T''≠T',都有f(T' )>f(T'')。f是對(duì)排序目標(biāo)的定量描述,用來(lái)度量排序的有效性,f的值越大,表明測(cè)試用例的排序越有效。
1.2 影響因子
目前,圍繞回歸測(cè)試用例優(yōu)先級(jí)排序問(wèn)題主要在尋找影響測(cè)試用例優(yōu)先級(jí)的因素等方面展開(kāi)。本文針對(duì)映射函數(shù)f的定義,將測(cè)試用例的缺陷檢測(cè)能力DDA(defect detection ability)作為其優(yōu)先級(jí)排序的取值,將發(fā)現(xiàn)缺陷的嚴(yán)重性、優(yōu)先級(jí)和出錯(cuò)原因等作為缺陷檢測(cè)能力的影響因子。以下針對(duì)各個(gè)影響因子,分別得出其影響缺陷檢測(cè)能力的量化值。
1.2.1 缺陷嚴(yán)重性
根據(jù)缺陷對(duì)軟件運(yùn)行造成的影響來(lái)劃分缺陷的嚴(yán)重性,一般分為四個(gè)等級(jí):致命缺陷、嚴(yán)重缺陷、普通缺陷、輕微缺陷。具體定義如下:
致命缺陷:造成系統(tǒng)或應(yīng)用程序崩潰、死機(jī);造成數(shù)據(jù)丟失;主要功能完全喪失,導(dǎo)致本模塊以及其他模塊異常等問(wèn)題。
嚴(yán)重缺陷:系統(tǒng)的主要功能部分喪失,導(dǎo)致本模塊功能失效或異常退出,但不影響其他模塊;次要功能完全喪失;數(shù)據(jù)丟失,但可以回復(fù)。
普通缺陷:次要功能沒(méi)有完全實(shí)現(xiàn),但不影響系統(tǒng)的基本使用;提示信息不準(zhǔn)確;操作時(shí)間長(zhǎng)等。
輕微缺陷:拼寫(xiě)錯(cuò)誤,界面美觀等問(wèn)題,不影響功能的操作和執(zhí)行。
按嚴(yán)重性從高到低的順序依次定義一個(gè)1到10之間的值。ds代表不同缺陷嚴(yán)重性對(duì)應(yīng)的量化值,其中致命缺陷的ds值為8,嚴(yán)重缺陷的ds值為4,普通缺陷的ds值為2,輕微缺陷的ds值為1。使用公式(1)量化得到第i個(gè)測(cè)試用例發(fā)現(xiàn)不同嚴(yán)重性缺陷的能力值ESi。
式(1)中,Si表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的所有缺陷的嚴(yán)重性值和,由表達(dá)式(2)量化得到,max(S)表示測(cè)試用例集中,單個(gè)用例發(fā)現(xiàn)的缺陷嚴(yán)重性值和的最大值。
式(2)中,dsj表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的第j個(gè)缺陷的嚴(yán)重性的量化值,k標(biāo)識(shí)第i個(gè)測(cè)試用例發(fā)現(xiàn)的缺陷個(gè)數(shù)。
1.2.2 缺陷優(yōu)先級(jí)
根據(jù)處理缺陷的緊迫性來(lái)劃分缺陷優(yōu)先級(jí),一般分為四個(gè)等級(jí):緊急、高級(jí)、中級(jí)、低級(jí)。具體定義如下:
緊急:需要立即解決的缺陷,可以對(duì)應(yīng)嚴(yán)重度為致命的缺陷,但不絕對(duì),或者是客戶需要馬上實(shí)現(xiàn)的特殊要求。
高級(jí):需要盡快解決的缺陷,可以對(duì)應(yīng)嚴(yán)重度為嚴(yán)重的缺陷,但不絕對(duì),或者是會(huì)影響測(cè)試進(jìn)行的缺陷。
中級(jí):需要較快解決的缺陷,可能是某個(gè)不影響到其他功能的單個(gè)功能失效缺陷。
低級(jí):可以稍遲處理或者在往后版本中處理,甚至不進(jìn)行處理也可以的缺陷。
為每種缺陷優(yōu)先級(jí)定義一個(gè)1到4之間的值。dp代表不同缺陷優(yōu)先級(jí)對(duì)應(yīng)的量化值,其中緊急缺陷的dp值為4,高級(jí)別缺陷的dp值為3,中級(jí)別缺陷的dp值為2,低級(jí)別缺陷的dp值為1。使用公式(3)量化得到第i個(gè)測(cè)試用例發(fā)現(xiàn)不同優(yōu)先級(jí)缺陷的能力值EPi。
式(3)中,Pi表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的所有缺陷的優(yōu)先級(jí)值和,由表達(dá)式(4)量化得到,max(P)表示測(cè)試用例集中,單個(gè)用例發(fā)現(xiàn)的缺陷優(yōu)先級(jí)值和的最大值。
式(4)中,dpj表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的第j個(gè)缺陷的優(yōu)先級(jí)的量化值,k表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的缺陷個(gè)數(shù)。
1.2.3 出錯(cuò)原因
每個(gè)缺陷都有其出錯(cuò)原因,一般可以劃分為四類:需求缺陷、設(shè)計(jì)缺陷、代碼缺陷、其他缺陷。具體定義如下:
需求缺陷:系統(tǒng)未滿足用戶的要求而導(dǎo)致的缺陷。
設(shè)計(jì)缺陷:系統(tǒng)設(shè)計(jì)與需求規(guī)格中的功能說(shuō)明不相符而導(dǎo)致的缺陷。
代碼缺陷:代碼未按設(shè)計(jì)說(shuō)明書(shū)中的要求設(shè)計(jì),或代碼本身的邏輯錯(cuò)誤導(dǎo)致的缺陷。
其他缺陷:不在需求缺陷、設(shè)計(jì)缺陷、代碼缺陷之列的其他缺陷。endprint
為每種出錯(cuò)原因定義一個(gè)1到10之間的值。dr代表不同出錯(cuò)原因?qū)?yīng)的量化值,其中需求缺陷的dr值為8,設(shè)計(jì)缺陷的dr值為6,代碼缺陷的dr值為4,其他缺陷的dr值為2。使用公式(5)量化得到第i個(gè)測(cè)試用例發(fā)現(xiàn)不同出錯(cuò)原因缺陷的能力ERi。
式(5)中,Ri表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的所有缺陷的出錯(cuò)原因值和,由表達(dá)式(6)量化得到,max(R)表示測(cè)試用例集中,單個(gè)用例發(fā)現(xiàn)的缺陷出錯(cuò)原因值和的最大值。
式(6)中,drj表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的第j個(gè)缺陷的出錯(cuò)原因的量化值,k表示第i個(gè)測(cè)試用例發(fā)現(xiàn)的缺陷個(gè)數(shù)。
至此,回歸測(cè)試中第i個(gè)測(cè)試用例的優(yōu)先級(jí)取值DDAi可通過(guò)式(7)來(lái)計(jì)算:
其中WS、WP、WR分別是ESi、EPi、ERi對(duì)應(yīng)的權(quán)值,它們的取值可以根據(jù)實(shí)際情況來(lái)調(diào)整。
測(cè)試用例優(yōu)先級(jí)排序方法就是在得到每個(gè)測(cè)試用例的優(yōu)先級(jí)取值后,按從高到底的順序重排測(cè)試用例集,利用排序后的測(cè)試用例集來(lái)執(zhí)行新一輪的回歸測(cè)試。
2 度量標(biāo)準(zhǔn)及實(shí)驗(yàn)分析
2.1 度量標(biāo)準(zhǔn)
研究者利用缺陷檢測(cè)加權(quán)平均百分比APFD(average of the percentage of faults detected)來(lái)驗(yàn)證不同優(yōu)先級(jí)排序方法的測(cè)試效率,通過(guò)繪制缺陷檢測(cè)曲線圖來(lái)計(jì)算APFD值,橫坐標(biāo)代表測(cè)試用例的運(yùn)行情況,縱坐標(biāo)代表每個(gè)測(cè)試用例對(duì)應(yīng)的缺陷檢測(cè)情況,一般而言,APFD的值越大,說(shuō)明對(duì)應(yīng)的測(cè)試用例排序方法檢測(cè)到缺陷的速度越快。Elbaum給出了APFD的計(jì)算公式,如式(8)所示。
式(8)中,n表示測(cè)試用例集T中測(cè)試用例的總數(shù),m表示缺陷集F中缺陷的總數(shù),TF_i表示檢測(cè)到缺陷i的第一個(gè)測(cè)試用例在T中的位置。
2.2 實(shí)驗(yàn)分析
為了比較和評(píng)價(jià)基于缺陷的測(cè)試用例優(yōu)先級(jí)排序方法的有效性,我們選取了某地震采集軟件進(jìn)行測(cè)試和分析,為其設(shè)計(jì)10個(gè)測(cè)試用例,測(cè)試得到10個(gè)軟件缺陷,初次測(cè)試時(shí),測(cè)試用例的缺陷檢測(cè)情況如表1所示,其中Ti (i=1,2,3,4,5,6,7,8,9,10)為測(cè)試用例,F(xiàn)i (i=1,2,3,4,5,6,7,8,9,10)為檢測(cè)到的軟件缺陷。
每個(gè)缺陷的缺陷影響因子量化值如表2所示。
利用測(cè)試用例優(yōu)先級(jí)排序方法,式7中WS、WP、WR的取值均設(shè)定為1/3,計(jì)算每個(gè)用例的優(yōu)先級(jí)取值DDA,得到回歸測(cè)試用例優(yōu)先級(jí)排序集(T10,T6,T7,T8,T5,T9,T4,T3,T2,T1)。未排序測(cè)試用例集的APFD如圖1所示,值為0.56。排序后測(cè)試用例集的APFD如圖2所示,值為0.86。測(cè)試用例未排序和排序后的缺陷檢測(cè)情況圖如圖3所示。
通過(guò)實(shí)驗(yàn)發(fā)現(xiàn):
(1)與不進(jìn)行排序的測(cè)試用例集相比,采用基于缺陷的優(yōu)先級(jí)排序算法得到的測(cè)試用例集,其執(zhí)行效率得到了明顯的改善,能夠提高缺陷的檢測(cè)效率。
(2)從未排序和已排序測(cè)試用例缺陷檢測(cè)情況圖可見(jiàn),排序后的測(cè)試用例集在執(zhí)行到40%的測(cè)試用例時(shí)就檢測(cè)出了軟件的全部缺陷,而未排序的測(cè)試用例集在執(zhí)行完所有的測(cè)試用例時(shí)才檢測(cè)出所有的缺陷。
3 結(jié)論
本文中的基于缺陷的測(cè)試用例優(yōu)先級(jí)排序方法,將軟件缺陷作為測(cè)試用例優(yōu)先級(jí)排序的影響因素,通過(guò)計(jì)算缺陷嚴(yán)重性、缺陷優(yōu)先級(jí)和出錯(cuò)原因等與軟件缺陷相關(guān)的因子的影響值,最終得到測(cè)試用例優(yōu)先級(jí)的取值,按照測(cè)試用例優(yōu)先級(jí)取值的大小決定測(cè)試用例的執(zhí)行順序。通過(guò)這種優(yōu)先級(jí)排序方法,能夠盡快檢測(cè)到軟件缺陷,提高測(cè)試用例的檢測(cè)效率;能夠盡快達(dá)到測(cè)試的覆蓋率標(biāo)準(zhǔn),降低測(cè)試的時(shí)間成本和人力開(kāi)銷。
在實(shí)際測(cè)試中,由于測(cè)試用例排序本身也存在一定的成本開(kāi)銷,所以下一步的工作主要是在測(cè)試用例范圍選擇的基礎(chǔ)上進(jìn)行優(yōu)先級(jí)排序,從而降低一部分的排序開(kāi)銷。
參考文獻(xiàn)
[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ò)的回歸測(cè)試用例優(yōu)先級(jí)排序[J].電子學(xué)報(bào),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]屈波,聶長(zhǎng)海,徐寶文.回歸測(cè)試中測(cè)試用例優(yōu)先級(jí)技術(shù)研究綜述[J].計(jì)算機(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.
作者單位
中國(guó)石油化工股份有限公司石油物探技術(shù)研究院 江蘇省南京市 211103endprint