999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于實(shí)例的自動(dòng)測(cè)試維護(hù)代價(jià)研究

2008-12-31 00:00:00闞紅星胡春玲

摘 要:不考慮自動(dòng)測(cè)試的維護(hù)代價(jià),盲目進(jìn)行自動(dòng)化測(cè)試是有風(fēng)險(xiǎn)的。以畫板程序升級(jí)為例,詳細(xì)介紹了它的修改過(guò)程和相應(yīng)測(cè)試程序的維護(hù)代價(jià),然后利用COCOMO度量方法,對(duì)測(cè)試程序與被測(cè)試程序的維護(hù)代價(jià)作一個(gè)比較,說(shuō)明測(cè)試程序和被測(cè)試程序一樣,需要反復(fù)維護(hù)才能進(jìn)行回歸測(cè)試。通過(guò)實(shí)例和理論分析使測(cè)試者清醒認(rèn)識(shí)自動(dòng)測(cè)試的維護(hù)代價(jià),合理利用自動(dòng)化測(cè)試。

關(guān)鍵詞:軟件升級(jí); 回歸自動(dòng)測(cè)試; 維護(hù)代價(jià); COCOMO

中圖分類號(hào):TP311.56 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1001-3695(2008)08-2374-03

Case study on maintenance cost for regression test automation based on prototype

KAN Hong-xing1,2,CHU Wei2, HU Chun-ling1

(1. Laboratory of Network Intelligent Information Management, Hefei University, Hefei 230022, China; 2.School of Management, Hefei University of Technology, Hefei 230009,China)

Abstract:Carrying on the test automation blindly will have the risk, without considering the test automation maintenance cost. Took the drawing board as the example, this paper introduced its revision process and the corresponding test program maintenance cost in detail. Compared the test program maintenance cost with its test object maintenance by COCOMO measurement method, automation regression test must be maintained repeatedly like its test object before testing. Test automation maintenance cost would be known soberly and test automation would be used reasonably by example and the theoretical analysis.

Key words:software update; regression test automation; maintenance cost; COCOMO

隨著軟件業(yè)的迅速發(fā)展,軟件測(cè)試技術(shù)的自動(dòng)化是軟件測(cè)試的發(fā)展趨勢(shì)。在某些情況下,自動(dòng)測(cè)試確實(shí)有自己的優(yōu)勢(shì),如在分布式系統(tǒng)測(cè)試[1]、完整的代碼覆蓋測(cè)試[1]、大容量數(shù)據(jù)測(cè)試[2]中,手工測(cè)試很難做到完美,甚至根本無(wú)法測(cè)試。但不能因此而認(rèn)為自動(dòng)測(cè)試就是解決測(cè)試問(wèn)題的“銀彈”(silver bullet)[3]。實(shí)際上,即使適合自動(dòng)測(cè)試的軟件項(xiàng)目,如果不能恰當(dāng)?shù)貞?yīng)用自動(dòng)化測(cè)試,其投資的成本會(huì)遠(yuǎn)遠(yuǎn)高于手工測(cè)試,即自動(dòng)測(cè)試存在一定的風(fēng)險(xiǎn)性[4]

Douglas Hoffman的投資回報(bào)(ROI)分析模型指出[5],由于自動(dòng)測(cè)試要編寫測(cè)試程序,一次自動(dòng)測(cè)試成本要遠(yuǎn)大于一次手工測(cè)試,自動(dòng)測(cè)試成本是在反復(fù)回歸測(cè)試中得到回收的。但如果考慮回歸測(cè)試時(shí)測(cè)試程序的維護(hù)成本,則反復(fù)回歸測(cè)試后自動(dòng)測(cè)試成本將不一定會(huì)小于手工測(cè)試,自動(dòng)測(cè)試風(fēng)險(xiǎn)發(fā)生。因此自動(dòng)測(cè)試風(fēng)險(xiǎn)發(fā)生與否,很大程度上取決于每次回歸測(cè)試時(shí)測(cè)試程序的維護(hù)成本[4]

隨著Boehm“軟件工程經(jīng)濟(jì)學(xué)”的推廣[6],人們已經(jīng)認(rèn)識(shí)到軟件系統(tǒng)維護(hù)的代價(jià),但對(duì)于自動(dòng)化測(cè)試程序的維護(hù)卻并不為許多測(cè)試者重視,如Douglas Hoffman在定量分析自動(dòng)測(cè)試的投資回報(bào)過(guò)程中就忽視了測(cè)試程序的維護(hù)代價(jià)[5]; Fewster和Graham通過(guò)實(shí)例說(shuō)明以增量模式開發(fā)的軟件,很適合利用自動(dòng)測(cè)試,但在整個(gè)論述過(guò)程中也沒(méi)有考慮測(cè)試程序的維護(hù)代價(jià)[7];甚至一些知名軟件公司一開始也盲目投資自動(dòng)化測(cè)試,忽視了測(cè)試程序的維護(hù)代價(jià)[8];文獻(xiàn)[4]雖然討論了測(cè)試程序的維護(hù)代價(jià),但卻沒(méi)有分析測(cè)試程序維護(hù)的原因和過(guò)程。實(shí)際上,測(cè)試腳本是交互應(yīng)用或部分非交互應(yīng)用的測(cè)試自動(dòng)化中必要的組成部分,它是由腳本語(yǔ)言編寫的,因此自動(dòng)化測(cè)試是一種編程測(cè)試,測(cè)試程序需要工程化,更需要維護(hù)。

本文通過(guò)實(shí)例和一定的理論分析,使測(cè)試人員清楚地認(rèn)識(shí)到自動(dòng)回歸測(cè)試測(cè)試程序與應(yīng)用程序一樣,在每次回歸測(cè)試之前都需要維護(hù),防止盲目進(jìn)行自動(dòng)化測(cè)試。

1 Drawlet畫板

1.1 畫板程序及其功能

Drawlet畫板是一個(gè)Java版的程序,由Beck和Cunningham共同開發(fā)[9]。畫板具有可擴(kuò)展性,可根據(jù)用戶的需要增加或減少繪畫功能。本文研究的應(yīng)用程序叫做SimpleApplet,它是Drawlet類庫(kù)的一部分。SimpleApplet可以通過(guò)Web瀏覽器運(yùn)行,它支持直線、矩形、自由曲線、圓角巨型、多邊型、橢圓等基本圖形的繪畫,同時(shí)還配有調(diào)色板、填充樣式、文本輸入等功能。SimpleApplet的頂層UML類圖如圖1所示。

1.2 畫板程序的升級(jí)

Rajlich和Gosavi為了研究軟件升級(jí)后代碼所發(fā)生的改變量,他們給畫板程序升級(jí),增加了權(quán)限功能,即讓用戶擁有創(chuàng)造、修改、移動(dòng)自己所畫圖形的權(quán)利,而別的用戶不擁有這一權(quán)限[10]。畫板增加權(quán)限后,運(yùn)行新版SimpleApplet,會(huì)出現(xiàn)一個(gè)會(huì)話框,要求用戶通過(guò)賬號(hào)和密碼登錄,或注冊(cè)一個(gè)新用戶。用戶登錄后在畫布上所畫的任何圖形,別的用戶不能更改和移動(dòng);會(huì)話框還具有偵聽功能,偵聽用戶是否按了某個(gè)按鈕,然后作相應(yīng)的處理。升級(jí)后的SimpleApplet頂層UML類圖如圖2所示。

與圖1比較,圖2中出現(xiàn)了兩個(gè)最新增加的類,即Owner-Identity 和SimpleListener。在類OwnerIdentity中可實(shí)現(xiàn)權(quán)限設(shè)計(jì),包括一些基本用戶數(shù)據(jù),如用戶ID和用戶姓名等,用戶可通過(guò)會(huì)話框修改用戶姓名和ID,也可通過(guò)會(huì)話框偵聽,偵聽用戶是否按了某個(gè)按鈕,然后作相應(yīng)的處理。偵聽是在類SimpleListener中實(shí)現(xiàn)的。

1.3 AbstractFigure類的修改

由上分析可知,升級(jí)后的系統(tǒng)要在抽象的AbstractFigure類中增加三個(gè)新的公共方法,分別是setFigureOwner()、int getFigureOwnerID()和String getFigureOwnerName()。

setFigureOwner()方法設(shè)置用戶ID和用戶姓名;getFigureOwnerID()方法讀取用戶ID; getFigureOwnerName()方法讀取用戶姓名。增加了新方法后,則要對(duì)move(…)和translate(…)方法進(jìn)行修改,增加參數(shù):securemove(…,int FigureOwnerID),securetranslate(…, intFigureOwnerID) 。同樣調(diào)用move和translate方法的函數(shù)也要進(jìn)行修改,增加相應(yīng)的參數(shù)。

就AbstractFigure類來(lái)說(shuō),代碼修改的大致情況如下:

public class AbstractFigure{…

private int FFigureOwnerID; //新增加的成員變量

private String FFigureOwnerName;// 新增加的成員變量

public setFigureOwner(int FigureOwnerID, String FigureOwnerName)

{FFigureOwnerID=FigureOwnerID;

FFigureOwnerName=FigureOwnerName;}//新增加的方法

public int getFigureOwnerID()

{Return FFigureOwnerID;}//新增加的方法

public String getFigureOwnerName()

{Return FFigureOwnerName;}//新增加的方法

public securemove(…,int FigureOwnerID)

{…If FFigureOwnerID=FigureOwnerID

Then …

}//修改的方法

public securetranslate(…,int FigureOwnerID)

{.

If FFigureOwnerID=FigureOwnerID

Then …

}//修改的方法

}

上面的代碼只反映了類AbstractFigure的修改情況,與老版本的AbstractFigure類相比,共修改了10行代碼。實(shí)際上,在升級(jí)中還要修改與AbstractFigure相關(guān)的類,因?yàn)轭愒诨ハ嗾{(diào)用時(shí)會(huì)傳播類的變化,如從類A傳遞信息給類B要通過(guò)類X,當(dāng)類A發(fā)生變化時(shí),類B和類X都要發(fā)生改變[10]。因此,SimpleApplet的升級(jí)將導(dǎo)致大量代碼的修改。

2 自動(dòng)回歸測(cè)試

2.1 回歸測(cè)試程序的維護(hù)

應(yīng)用程序升級(jí)后要進(jìn)行回歸測(cè)試,以保證它們經(jīng)過(guò)修改后仍能正確運(yùn)行。本文的自動(dòng)測(cè)試工具采用的是JUint,它是由 Erich Gamma 和 Kent Beck 編寫的一個(gè)回歸測(cè)試框架。

根據(jù)Mats SkoglundPer和Runeson的研究[8],自動(dòng)回歸測(cè)試的過(guò)程可分為四個(gè)階段,分別是環(huán)境設(shè)置、編譯配置、執(zhí)行單元測(cè)試和執(zhí)行功能測(cè)試。在任一階段,如果測(cè)試程序執(zhí)行不成功的話都要對(duì)其進(jìn)行修改。對(duì)本例來(lái)說(shuō),由于軟件的升級(jí)并沒(méi)有導(dǎo)致運(yùn)行環(huán)境的改變,測(cè)試程序的環(huán)境設(shè)置無(wú)須修改,而在其他幾個(gè)階段測(cè)試程序都要進(jìn)行一定的修改。就AbstractFi-gure類來(lái)說(shuō),其升級(jí)后如要對(duì)它進(jìn)行自動(dòng)測(cè)試,JUnit測(cè)試代碼要做如下修改:

public class TestSample extends TestCase{…

public void testsetFigureOwner()

{AbstractFigure Figure = new AbstractFigure();

result = Figure.setFigureOwnerID(12345, kan);

assertTrue(result);}//新增加類的測(cè)試

public void testgetFigureOwnerID()

{AbstractFigure Figure = new AbstractFigure();

result = Figure.getFigureOwnerID(12345);

assertTrue(result);}//新增加類的測(cè)試

public void testgetFigureOwnerName()

{AbstractFigure Figure = new AbstractFigure();

result = Figure.getFigureOwnerName(12345);

assertTrue(result);}//新增加類的測(cè)試

public void testsecuremove()

{…

AbstractFigure Figure = new AbstractFigure();

result = Figure.getFigureOwnerID();

assertTrue(result);//新增加參數(shù)的測(cè)試

…}

public void testsecuretranslate()

{

AbstractFigure Figure = new AbstractFigure();

result = Figure.getFigureOwnerName();

assertTrue(result);//新增加參數(shù)的測(cè)試

}

…}

從代碼的修改情況看,JUnit測(cè)試程序與回歸測(cè)試之前相比,增加了15行代碼。

2.2 被測(cè)試程序和測(cè)試程維護(hù)代價(jià)的比較

根據(jù)COCOMO軟件維護(hù)量的估算原理[6],軟件維護(hù)的規(guī)模和開發(fā)規(guī)模成正向關(guān)系,即軟件的規(guī)模越大,開發(fā)的時(shí)間越長(zhǎng),維護(hù)的成本也越大。令某程序總的開發(fā)成本為V,第i次維護(hù)的成本為Ci,則有

Ci=αi×V(0<αi<1; i =1,2,…, n)(1)

正常情況下,維護(hù)的成本不會(huì)超過(guò)開發(fā)成本[6],所以0<αi<1。這里稱αi為第i次維護(hù)代價(jià)調(diào)整因子。Boehm認(rèn)為αi可由式(2)確定:

αi=ACT×∏15j=1(VAFj)(2)

其中:ACT表示測(cè)試程序在每次維護(hù)中代碼所發(fā)生的變化;VAF(value adjust factor)表示與維護(hù)成本相關(guān)的15個(gè)成本調(diào)整系數(shù),每個(gè)成本調(diào)整系數(shù)有5個(gè)級(jí)別,每個(gè)級(jí)別都對(duì)應(yīng)一個(gè)具體的數(shù)據(jù)。表1就是15個(gè)成本調(diào)整系數(shù)其相關(guān)值[6]。

根據(jù)表1,15個(gè)成本調(diào)整系數(shù)由四大類組成,分別為產(chǎn)品屬性、計(jì)算機(jī)屬性、人員屬性和項(xiàng)目屬性。由式(1)(2)知,ACT和15個(gè)調(diào)整系數(shù)決定了每次程序維護(hù)的代價(jià)。就本例來(lái)說(shuō),無(wú)論是測(cè)試程序還是被測(cè)試程序,其產(chǎn)品屬性、計(jì)算機(jī)屬性、人員屬性和項(xiàng)目屬性應(yīng)該是大致相同的,因此ACT決定了它們各自維護(hù)代價(jià)的大小。

令V1為測(cè)試程序在維護(hù)前的代碼行數(shù),M1為測(cè)試程序維護(hù)后修改的代碼行數(shù),ACT1為測(cè)試程序代碼修改百分比;令V2為被測(cè)試程序在維護(hù)前(升級(jí)前)的代碼行數(shù),M2為被測(cè)試程序升級(jí)后修改的代碼行數(shù),ACT2為被測(cè)試程序代碼修改百分比;令β為測(cè)試程序和被測(cè)程序維護(hù)代價(jià)的比值,則根據(jù)式(1)(2)有

β=(M1/V1×∏15j=1(VAFj)×V1)/(M2/V2×

∏15j=(VAFj)×V2)=M1/M2(3)

表1 軟件維護(hù)工作量調(diào)整系數(shù)屬

性成本調(diào)整系數(shù)等級(jí)很低低標(biāo)準(zhǔn)高很高產(chǎn)品

屬性RELY可靠性1.351.151.000.981.10DATA數(shù)據(jù)庫(kù)規(guī)模0.941.001.081.16CPLX產(chǎn)品復(fù)雜性0.700.851.001.151.30計(jì)算機(jī)

屬性TIME時(shí)間約束1.001.111.30STO主存儲(chǔ)器約束1.001.061.21VIR虛擬機(jī)易變性0.871.001.151.30TURN周轉(zhuǎn)時(shí)間0.871.001.071.15人員

屬性ACAP分析員能力1.461.191.000.860.71AEXP應(yīng)用經(jīng)驗(yàn)1.291.131.000.910.82PCAP程序員能力1.421.171.000.860.70VEXP虛擬機(jī)經(jīng)驗(yàn)1.211.101.000.90LEXP編程經(jīng)驗(yàn)1.141.071.000.95項(xiàng)目

屬性MODP編程規(guī)范1.241.101.000.910.82TOOL工具使用1.241.101.000.910.83SCED開發(fā)進(jìn)度1.231.081.001.041.10

由實(shí)例分析可知,對(duì)類AbstractFigure來(lái)說(shuō),M1=15,M2=10,利用式(3)可得測(cè)試程序的維護(hù)代價(jià)是被測(cè)試程序的1.5倍。

3 結(jié)束語(yǔ)

投資自動(dòng)測(cè)試不是一勞永逸的,當(dāng)一個(gè)系統(tǒng)升級(jí)后,它的自動(dòng)測(cè)試程序必須要經(jīng)過(guò)維護(hù),然后才能進(jìn)行回歸測(cè)試,這一點(diǎn)在投資自動(dòng)測(cè)試之前必須有清醒認(rèn)識(shí),否則可能會(huì)使得自動(dòng)化測(cè)試的投資永遠(yuǎn)得不到回收。

本文首先通過(guò)一個(gè)畫板程序的實(shí)例說(shuō)明了其升級(jí)和回歸測(cè)試的維護(hù)過(guò)程,通過(guò)實(shí)踐證明自動(dòng)測(cè)試的維護(hù)代價(jià)是不可忽略的;然后又利用COCOMO度量方法,從理論上說(shuō)明了測(cè)試程序的維護(hù)代價(jià)與被測(cè)試程序一樣,是真實(shí)存在的。雖然本文只對(duì)畫板程序的一部分AbstractFigure類進(jìn)行了詳細(xì)的分析,但它足以說(shuō)明測(cè)試程序需要維護(hù)才能進(jìn)行回歸測(cè)試。

本文對(duì)畫板的升級(jí)是個(gè)極端的例子,因?yàn)樯?jí)改變了原來(lái)程序的設(shè)計(jì)結(jié)構(gòu),無(wú)論是對(duì)測(cè)試程序還是被測(cè)程序來(lái)說(shuō),都造成了大量代碼的修改,這也從另一方面說(shuō)明軟件設(shè)計(jì)的重要性,良好的結(jié)構(gòu)設(shè)計(jì)不但有利于系統(tǒng)本身的維護(hù),也有利于自動(dòng)測(cè)試程序的維護(hù)。

參考文獻(xiàn):

[1]STOBIE K. Too darned big to test [J]. Queue, 2005,3(1):30-37.

[2]BERNER S, WEBER R, KELLE R R. Observations and lessons learned from automated testing[C]// Proc of the 27th International Conference on Software Engineering. Missouri: IEEE Press, 2005: 571-579.

[3]Jr BROOKS F P .No silver bullet essence and accidents of software engineering[J]. Computer,1987,20(4):10-19.

[4]楊善林,闞紅星,余本功.一種軟件自動(dòng)測(cè)試成本估算控制模型[J]. 電子學(xué)報(bào),2007,35(8):1588-1591.

[5]HOFFMAN D. Cost benefits ananlysis of test automation[EB/OL]. (1999). http://www.softwarequalitymethods.com/Papers/Star99%20model%20Paper.pdf.

[6]BOEHM B W. 軟件工程經(jīng)濟(jì)學(xué)[M].李師賢,譯.北京:機(jī)械工業(yè)出版社, 2004.

[7]FEWSTER M, GRAHAM D. Software test automation[M]. Boston MA: Addison-Wesley,1999:143-167.

[8]SKOGLUND M,RUNESON P. A case study on testware maintenance and change strategies in system evolution[DB/OL]. (2004). http://www.ieeexplore.ieee.org/iel5/9383/29793/01357831.pdf.

[9]RoleModel Software Inc. Drawlets[DB/OL]. (2007).http://www.rolemodelsoftware.com/drawlets.

[10]RAJLICH V, GOSAVI P. A case study of unanticipated incremental change[C]// Proc of the International Conference on Software Maintenance. Los Alamitos, CA: Computer Society, 2002: 359-368.

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文

主站蜘蛛池模板: 亚洲清纯自偷自拍另类专区| 亚洲第一成年免费网站| 中文字幕免费播放| 欧美区国产区| 国产精品亚欧美一区二区| 亚洲欧洲自拍拍偷午夜色| 国产女人18毛片水真多1| 九九视频在线免费观看| 中文字幕亚洲无线码一区女同| 狂欢视频在线观看不卡| 视频一本大道香蕉久在线播放| 一区二区自拍| 国产精品久久久久久久伊一| 国产成人一区二区| 国产一区三区二区中文在线| 热99精品视频| 日本人又色又爽的视频| 日本伊人色综合网| 日韩国产黄色网站| 亚洲区视频在线观看| 欧美午夜理伦三级在线观看 | 99精品免费在线| 欧美一区二区福利视频| 91小视频在线观看免费版高清| 亚洲人成网站色7777| 欧美日韩国产在线人成app| 婷婷六月天激情| 成人福利在线观看| 伊人精品成人久久综合| h视频在线观看网站| 手机精品福利在线观看| 国产91视频观看| 日韩高清欧美| 日本欧美中文字幕精品亚洲| 福利国产微拍广场一区视频在线| 亚洲一区二区在线无码| 香蕉久久永久视频| 精品一区国产精品| 国产成人av一区二区三区| 中文字幕2区| 青草视频免费在线观看| 正在播放久久| 极品性荡少妇一区二区色欲| 午夜成人在线视频| 91免费观看视频| 国产裸舞福利在线视频合集| 青草视频在线观看国产| 亚洲AV无码乱码在线观看代蜜桃 | 91九色视频网| 日韩免费视频播播| 99热这里只有精品5| 有专无码视频| 亚洲综合一区国产精品| 香蕉视频在线观看www| 国产精品第三页在线看| 精品久久久久久久久久久| 国产一在线| 亚洲国模精品一区| 日韩毛片在线播放| 91热爆在线| 在线看国产精品| www.国产福利| 亚洲综合18p| 亚洲日韩精品无码专区97| 青青青草国产| 国产亚洲欧美在线中文bt天堂| 欧美成人二区| 99在线小视频| 国产经典三级在线| 亚洲最大情网站在线观看| 中文字幕免费在线视频| 国产麻豆精品手机在线观看| 国产老女人精品免费视频| 一区二区自拍| 国产后式a一视频| 久久一日本道色综合久久| …亚洲 欧洲 另类 春色| 青草视频在线观看国产| 亚洲va欧美ⅴa国产va影院| 国产精品成人观看视频国产| 欧美日本在线| 国产白浆在线|