基于活動(dòng)圖的回歸測(cè)試方法研究碩士畢業(yè)論文_第1頁(yè)
基于活動(dòng)圖的回歸測(cè)試方法研究碩士畢業(yè)論文_第2頁(yè)
基于活動(dòng)圖的回歸測(cè)試方法研究碩士畢業(yè)論文_第3頁(yè)
基于活動(dòng)圖的回歸測(cè)試方法研究碩士畢業(yè)論文_第4頁(yè)
基于活動(dòng)圖的回歸測(cè)試方法研究碩士畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩66頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于活動(dòng)圖的回歸測(cè)試研究摘要隨著信息技術(shù)的深入發(fā)展,社會(huì)的各個(gè)領(lǐng)域的信息電子化進(jìn)程進(jìn)行的非常迅速。許多系統(tǒng)都是非常復(fù)雜和龐大的,而且更新?lián)Q代的速度非常驚人。那么怎么保證這些系統(tǒng)是高效、安全、可靠的,軟件的回歸測(cè)試是非常必要的。但是回歸測(cè)試是一個(gè)成本昂貴的過(guò)程。而在回歸測(cè)試中回歸測(cè)試用例的選擇是最重要的一個(gè)步驟,如何選擇一個(gè)盡可能小并且又能覆蓋所有改變和影響的測(cè)試用例集來(lái)進(jìn)行回歸測(cè)試用例選擇是一個(gè)重要的課題。本文對(duì)回歸測(cè)試選擇方法進(jìn)行了研究,提出了基于UML活動(dòng)圖的回歸測(cè)試用例選擇技術(shù)和基于風(fēng)險(xiǎn)的回歸測(cè)試選擇技術(shù)。這兩個(gè)技術(shù)是相輔相成的,能很好地完成回歸測(cè)試用例的選擇。主要研究容與成果包括以下幾個(gè)方面:1)分析了需求的可跟蹤性對(duì)于進(jìn)行和管理回歸分析和測(cè)試的重要性。2)提出了一個(gè)基于活動(dòng)圖的回歸測(cè)試選擇策略,用來(lái)選擇回歸測(cè)試用例。將需求里的功能特征一一對(duì)應(yīng)到活動(dòng)圖上,再通過(guò)活動(dòng)圖很直觀地進(jìn)行測(cè)試用例的選擇。3)分析和描述了在回歸測(cè)試中的風(fēng)險(xiǎn)分析,同時(shí)提供了風(fēng)險(xiǎn)敞口(RiskExposure)作為度量回歸測(cè)試用例集的質(zhì)量的指標(biāo)。提出了基于風(fēng)險(xiǎn)的回歸測(cè)試選擇技術(shù),是基于活動(dòng)圖的回歸選擇技術(shù)的有益補(bǔ)充。4)用一個(gè)股票交易系統(tǒng)作為實(shí)驗(yàn)對(duì)象,驗(yàn)證了我們提出的方法的有效性,高效性。關(guān)鍵詞:回歸測(cè)試,風(fēng)險(xiǎn)敞口,活動(dòng)圖AbstractAlongwiththedeeplydevelopmentofinformationtechnology,lotsofindustrialandfinancialentitiesinvolveinformationtechnologyintotheirdailybusiness.Regressiontestingisessentialtoensuresoftwarequality.Atestteamappliesaregressiontestsuitetoensurethatnewormodifiedfeaturesdonotregress(makeworse)existingfeatures.Althoughexistingresearchhasaddressedmanyrelatedproblemsandputforwardsomesolutions,mostregressiontesttechniquesarecode-based.Code-basedregressiontestselectionisgoodforunittesting,butithasascalabilityproblem.Whenthesizeoftheobjectundertestgrows,itbecomeshardtomanageallrelevantRiskExposureinformationandtocreatecorrespondingtraceabilitymatricesforvalidationandcoverageassessment.Weproposeamethodforregressiontestselectionbasedonactivitydiagramandrisk.Therearetwomajorpartsofourwork:Weproposeandjustifyanewregressionteststrategybasedonactivitydiagram.Weprovidesystematicmethodsforselectingregressiontestcases.Weapplyregressionanalysistorequirementtocheckthroughoutconsistencyof“requirementfollowedbyablank”,anddesignmodels.Thebasicmodelweusefordescribingrequirementsbasedoncustomerfeaturesorbehaviorsistheactivitydiagram,whichisanotationoftheUML.Aprocessispresentedforidentifyingthetestcasesaffectedbychanges.Atthesametime,weuseriskanalysisandpresentamethodofchoosingrisk-basedtestcases.Ourriskanalysisisbasedonapracticalriskmodel,andissimilartothatusedbysomeorganizations.Keywords:Regressiontest,Activitydiagram,Riskexposure目錄摘要iAbstractii第1章緒論11.1課題背景11.2國(guó)外研究現(xiàn)狀與進(jìn)展21.2.1以前相關(guān)研究21.2.2現(xiàn)存理論存在的問(wèn)題41.3研究容和研究目標(biāo)41.4本文結(jié)構(gòu)組織5第2章回歸測(cè)試62.1引言62.2回歸分析和測(cè)試概念62.3回歸測(cè)試技術(shù)62.4回歸分析的討論72.5回歸測(cè)試模式92.6軟件維護(hù)的分類和回歸測(cè)試的類型102.7本章小結(jié)11第3章方法1:基于活動(dòng)圖的回歸測(cè)試133.1引言133.2需求的可追溯性133.3UML的活動(dòng)圖143.3.1活動(dòng)圖的元素163.3.2活動(dòng)圖和測(cè)試用例關(guān)系213.3.3簡(jiǎn)化復(fù)雜的活動(dòng)圖223.3.4基于活動(dòng)圖設(shè)計(jì)測(cè)試用例233.4建立基于活動(dòng)圖的需求可追溯性233.4.1需求測(cè)試,設(shè)計(jì)測(cè)試和活動(dòng)圖263.4.2跟蹤測(cè)試用例到活動(dòng)圖元素273.5基于活動(dòng)圖進(jìn)行測(cè)試用例的選擇303.5.1糾正性維護(hù)中測(cè)試用例的選擇303.5.2基礎(chǔ):基于CFG的回歸測(cè)試選擇技術(shù)313.5.3基于活動(dòng)圖的回歸測(cè)試選擇343.5.4糾正性和改進(jìn)性維護(hù)同時(shí)發(fā)生時(shí)測(cè)試用例選擇353.6本章小結(jié)36第4章風(fēng)險(xiǎn)和風(fēng)險(xiǎn)分析374.1引言374.2風(fēng)險(xiǎn)性測(cè)試374.3風(fēng)險(xiǎn)分析374.4風(fēng)險(xiǎn)分析活動(dòng)384.5一個(gè)實(shí)用的風(fēng)險(xiǎn)模型394.6本章小結(jié)40第5章方法2:基于風(fēng)險(xiǎn)的回歸測(cè)試415.1引言415.2基于風(fēng)險(xiǎn)的回歸測(cè)試方法415.3基于風(fēng)險(xiǎn)的回歸測(cè)試用例選擇技術(shù)425.3.1評(píng)估測(cè)試用例相對(duì)應(yīng)的潛在的錯(cuò)誤的成本(第1步)435.3.2評(píng)估每個(gè)測(cè)試用例嚴(yán)重度(第2步)485.3.3計(jì)算每個(gè)測(cè)試用例的風(fēng)險(xiǎn)敞口(第3步)495.3.4選擇測(cè)試用例作為基于風(fēng)險(xiǎn)的測(cè)試用例505.4本章總結(jié)51第6章實(shí)驗(yàn)分析和比較526.1引言526.2實(shí)驗(yàn)設(shè)計(jì)526.3實(shí)驗(yàn)結(jié)果和分析54第7章結(jié)束語(yǔ)55參考文獻(xiàn)56作者簡(jiǎn)歷59致60圖目錄TOC\h\z\c"圖"圖2.1回歸測(cè)試技術(shù)7圖2.2回歸測(cè)試用例選擇9圖3.1活動(dòng)圖例子20圖3.2同步行為23圖3.3一個(gè)取得匯率報(bào)價(jià)的模塊的活動(dòng)圖24圖3.4簡(jiǎn)化后的活動(dòng)圖25圖3.5建立需求特征和測(cè)試用例之間的可跟蹤的聯(lián)系26圖3.6需求特征和測(cè)試用例間的可跟蹤性的聯(lián)系鏈30圖3.7取得報(bào)價(jià)的功能模塊實(shí)施中發(fā)生錯(cuò)誤和變化32圖3.8控制流圖C和改變后的C’33圖3.9圖4-5中的活動(dòng)圖的改變35圖4.1風(fēng)險(xiǎn)分析活動(dòng)39表目錄TOC\h\z\c"表"表3.1活動(dòng)圖的標(biāo)識(shí) 18表3.2從圖4-5得來(lái)的滿足節(jié)點(diǎn)和邊界覆蓋標(biāo)準(zhǔn)的測(cè)試集 25表3.3測(cè)試用例和活動(dòng)圖元素 28表3.4對(duì)應(yīng)測(cè)試用例的活動(dòng)圖的可跟蹤性模型 29表3.5CFGC的測(cè)試集T的edge覆蓋模型 34表5.1一些測(cè)試用例的CC 45表5.2測(cè)試用例的CV值 47表5.3一些測(cè)試用例的成本 48表5.4測(cè)試用例的可能性嚴(yán)重度 49表5.5測(cè)試用例的風(fēng)險(xiǎn)敞口 50表5.6測(cè)試用例選擇 51表6.1原始測(cè)試用例規(guī)模 53表6.2原始和補(bǔ)充測(cè)試用例的規(guī)模 53表6.3完全測(cè)試時(shí)測(cè)試用例和錯(cuò)誤規(guī)模 53表6.4幾種回歸測(cè)試的實(shí)驗(yàn)數(shù)據(jù) 54表6.5幾種回歸測(cè)試的比較 54緒論課題背景隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,計(jì)算機(jī)應(yīng)用的領(lǐng)域越來(lái)越廣,軟件系統(tǒng)功能越來(lái)越強(qiáng)大,其系統(tǒng)的規(guī)模也越來(lái)越大,越來(lái)越復(fù)雜。計(jì)算機(jī)已經(jīng)普遍地應(yīng)用在航空、航天、工業(yè)控制、金融、醫(yī)療、交通和電子商務(wù)等各個(gè)領(lǐng)域,這些軟件系統(tǒng)的運(yùn)行是否正確,已經(jīng)影響到社會(huì)生活得各個(gè)方面。一旦這些軟件失效,就會(huì)造成巨大的損失。尤其是這幾年,電子商務(wù)與金融產(chǎn)品的網(wǎng)上交易平臺(tái)等這些基于Web應(yīng)用的系統(tǒng)的快速發(fā)展,軟件產(chǎn)品的一點(diǎn)瑕疵就可能導(dǎo)致客戶的巨額財(cái)產(chǎn)損失。軟件測(cè)試就是減少這種損失,保證軟件質(zhì)量的重要手段。隨著人們對(duì)軟件測(cè)試的重要性的認(rèn)識(shí)的不斷加深,軟件測(cè)試階段在整個(gè)軟件開(kāi)發(fā)周期中所占得比重會(huì)日益增大。根據(jù)Boehm的統(tǒng)計(jì),目前軟件測(cè)試在軟件開(kāi)發(fā)中的總成本中,其開(kāi)銷占到了30%~50%[1],在某些重大軟件項(xiàng)目占得比重更大?;貧w測(cè)試是軟件測(cè)試中一個(gè)很重要的環(huán)節(jié)。其目的是保證程序在修改后不會(huì)引入新的錯(cuò)誤[2]。而隨著軟件規(guī)模的日益龐大,回歸測(cè)試的成本也相應(yīng)增大,甚至達(dá)到整個(gè)測(cè)試成本的一半以上[3]。所以回歸測(cè)試成為整個(gè)軟件測(cè)試的關(guān)鍵,是軟件質(zhì)量的重要保證?;貧w測(cè)試可以重用以前的測(cè)試過(guò)程,是一種比較有效地測(cè)試方法。但是,回歸測(cè)試需要前期投入,如何減少回歸測(cè)試的代價(jià),是整個(gè)軟件回歸測(cè)試研究的難點(diǎn)和重點(diǎn)。在所有的難點(diǎn)和重點(diǎn)中,回歸測(cè)試用例選擇(RegressionTestSelection)是重點(diǎn)中的重點(diǎn)?;貧w測(cè)試選擇是復(fù)用已有用例基進(jìn)行測(cè)試的方法。其目的是選擇一個(gè)盡可能小并且又能覆蓋所有改變和影響的代碼的測(cè)試用例集。目前回歸測(cè)試選擇的研究,主要包括:1)基于代碼信息的回歸測(cè)試選擇。該方法主要研究在已知代碼的情況下,對(duì)代碼相關(guān)的用例進(jìn)行選擇。2)基于歷史記錄的回歸測(cè)試選擇。該方法主要是根據(jù)測(cè)試的歷史記錄進(jìn)行回歸測(cè)試選擇。統(tǒng)模語(yǔ)言(UML)在軟件工程發(fā)展進(jìn)程中具有里程碑的意義,統(tǒng)模語(yǔ)言(UML)的正式發(fā)展是從1994年開(kāi)始的,它匯集了近20多年來(lái)各種建模技術(shù)。自提出以來(lái),后成為研究熱點(diǎn),并且迅速在工業(yè)界得到廣泛的應(yīng)用。UML對(duì)開(kāi)發(fā)高質(zhì)量軟件起了很大的促進(jìn)作用,同時(shí)也給軟件測(cè)試以與回歸測(cè)試帶來(lái)新的研究領(lǐng)域。目前大多數(shù)回歸用例選擇技術(shù)多是基于代碼的,有些是基于歷史記錄的?;诖a的回歸測(cè)試選擇對(duì)測(cè)試人員要求很高,需要測(cè)試人員閱讀并理解代碼,這需要很多的時(shí)間花費(fèi),并且是依賴于編程語(yǔ)言的。而基于歷史記錄的回歸測(cè)試選擇要求測(cè)試的所有記錄非常完善,很多時(shí)候我們達(dá)不到要求。而基于UML設(shè)計(jì)的回歸測(cè)試選擇不依賴于編程語(yǔ)言,比代碼級(jí)的回歸測(cè)試選擇更加容易且效率高。所以本文吸收前人的研究成果,結(jié)合UML活動(dòng)圖的特點(diǎn),提出了基于UML活動(dòng)圖的回歸測(cè)試選擇技術(shù),為了對(duì)軟件質(zhì)量更有信心,又提出了基于風(fēng)險(xiǎn)的回歸測(cè)試選擇技術(shù),作為基于活動(dòng)圖的回歸測(cè)試的有益補(bǔ)充。國(guó)外研究現(xiàn)狀與進(jìn)展以前相關(guān)研究回歸測(cè)試作為軟件生命周期的一個(gè)組成部分,在整個(gè)軟件測(cè)試過(guò)程中占有很大的工作量比重,軟件開(kāi)發(fā)的各個(gè)階段都會(huì)進(jìn)行多次回歸測(cè)試。在漸進(jìn)和快速迭代開(kāi)發(fā)中,新版本的連續(xù)發(fā)布使回歸測(cè)試進(jìn)行的更加頻繁,而在極端編程方法中,更是要求每天都進(jìn)行若干次回歸測(cè)試。許多研究人員研究了回歸測(cè)試技術(shù)。他們的研究包含很廣泛的課題。例如,Brown和Hoffman[8]研究了測(cè)試環(huán)境和自動(dòng)化回歸測(cè)試過(guò)程。Harrold,Gupta和Soffa[9]研究了測(cè)試用例管理技術(shù)。Rothermel和Harrold[10]研究了回歸測(cè)試選擇技術(shù)。最近幾年,大家的注意力被集中到回歸測(cè)試測(cè)試用例選擇領(lǐng)域。大部分的技術(shù)是針對(duì)白盒測(cè)試的,他們選擇測(cè)試用例是基于代碼的相關(guān)信息[11-12]。只有少數(shù)的技術(shù)是針對(duì)黑盒測(cè)試,測(cè)試用例選擇基于系統(tǒng)本身特征[13-16]。目前,回歸測(cè)試選擇的研究主要包括以下兩個(gè)方面:基于代碼的回歸測(cè)試選擇。該方法主要研究在已知代碼的情況下,對(duì)代碼相關(guān)的測(cè)試用例進(jìn)行選擇。這個(gè)方法是通過(guò)比較修改前后對(duì)應(yīng)代碼對(duì)基線測(cè)試用例進(jìn)行選擇,從而得到回歸測(cè)試用例集的一種技術(shù)[28]。先采用一些分解術(shù)將復(fù)雜的程序分解成一個(gè)個(gè)相對(duì)較小的片段來(lái)進(jìn)行分析和維護(hù)。這些片段就叫做程序切片。任何一個(gè)程序都可以等價(jià)于一組程序切片的并集,而這些切片都是根據(jù)某個(gè)切片變量和切片準(zhǔn)則計(jì)算出來(lái)的。根據(jù)切片的定義:所有能夠影響到的語(yǔ)句、謂詞等都被包含到該切片變量的切片中了。所以對(duì)某個(gè)切片變量的修改一定不會(huì)影響到其他切片變量的切片。那么基于代碼方法的回歸測(cè)試思想可以描述如下:針對(duì)修改后的程序,首先找出被修改的變量信息,然后運(yùn)用切片方法找到由于這些變量的變化所引起的直接定義一使用關(guān)系和間接定義一使用關(guān)系(通常是一些語(yǔ)句或者控制流和數(shù)據(jù)流信息),將這些信息提取出來(lái),組成一個(gè)程序片段,設(shè)計(jì)測(cè)試用例對(duì)這些程序片段進(jìn)行測(cè)試,最后把這些測(cè)試用例加人到原程序測(cè)試用例中,構(gòu)成新的回歸測(cè)試用例集?;跉v史記錄的回歸測(cè)試選擇。就是以測(cè)試用例執(zhí)行的歷史記錄數(shù)據(jù)為依據(jù)進(jìn)行回歸測(cè)試選擇[29]。每一輪測(cè)試都有一個(gè)測(cè)試狀態(tài)與之相對(duì)應(yīng),該測(cè)試狀態(tài),該測(cè)試狀態(tài)涵蓋了當(dāng)前測(cè)試中影響策略選擇的因素,包括測(cè)試用例錯(cuò)誤檢測(cè)率要求、測(cè)試成本、測(cè)試頻次。這些就是測(cè)試的歷史信息?;谶@些測(cè)試歷史信息,并根據(jù)當(dāng)前測(cè)試情況來(lái)選擇較為合適的回歸測(cè)試用例,再將生成的回歸測(cè)試用例進(jìn)行用例優(yōu)先排序,最后利用排序后的用例來(lái)進(jìn)行測(cè)試,以進(jìn)一步提高回歸測(cè)試效率?,F(xiàn)存理論存在的問(wèn)題對(duì)于基于代碼的回歸測(cè)試選擇技術(shù)來(lái)說(shuō)存在一些問(wèn)題?;诖a的回歸測(cè)試技術(shù)可以有效的應(yīng)用到回歸測(cè)試中的單元級(jí)別。但是當(dāng)我們?cè)噲D測(cè)試一個(gè)大的或更加復(fù)雜的組件,比如一個(gè)子系統(tǒng),我們要用基于代碼的回歸測(cè)試技術(shù)從代碼中取得所有所需信息就很困難,因此,基于代碼的回歸測(cè)試技術(shù)就很難適應(yīng)較大的組件的測(cè)試,例如子系統(tǒng)的測(cè)試。而且,基于代碼的回歸測(cè)試技術(shù)需要測(cè)試人員在一定程度上進(jìn)入和理解代碼[17]。這個(gè)需要就會(huì)產(chǎn)生一些實(shí)際的問(wèn)題。測(cè)試人員不得不去花很多時(shí)間去讀懂代碼,而且對(duì)測(cè)試人員的要求會(huì)很高。這是很費(fèi)時(shí),高成本的方法。最后,基于代碼的回歸測(cè)試技術(shù)是有編程語(yǔ)言的限制。在一些軟件系統(tǒng)里面,會(huì)使用超過(guò)一種的編程語(yǔ)言,比如,在Web系統(tǒng)里,我們可能會(huì)用到Java,JSP,HTML等語(yǔ)言。這會(huì)導(dǎo)致分析代碼的過(guò)程非常復(fù)雜。同樣的對(duì)于基于歷史信息的回歸測(cè)試選擇技術(shù)也存在著一些問(wèn)題。因?yàn)樵谶@個(gè)選擇過(guò)程中完全是根據(jù)測(cè)試的歷史記錄來(lái)進(jìn)行的,那么就必定要求這個(gè)歷史記錄是完整,正確的。但是,實(shí)際情況是,很多項(xiàng)目的測(cè)試歷史記錄是不完整的。研究容和研究目標(biāo)在我們的研究中,我們提出采用基于活動(dòng)圖的回歸測(cè)試選擇技術(shù)和基于風(fēng)險(xiǎn)的回歸測(cè)試選擇技術(shù),作為有效和高效的解決以上所列問(wèn)題的途徑。下面是本論文的主要工作:我們說(shuō)明了需求可追溯性對(duì)于進(jìn)行和管理回歸分析和測(cè)試的重要性。我們分析了在需求和測(cè)試用例之間的聯(lián)系。我們提供了一種新的選擇回歸測(cè)試用例的策略。我們的策略是基于活動(dòng)圖的。將需求里的功能特征一一對(duì)應(yīng)到活動(dòng)圖上,再通過(guò)活動(dòng)圖很直觀地進(jìn)行測(cè)試用例的選擇。我們分析和描述了風(fēng)險(xiǎn)分析的用處,怎么使用風(fēng)險(xiǎn)敞口(RE)可以用來(lái)衡量回歸測(cè)試集的質(zhì)量。提供了基于風(fēng)險(xiǎn)的回歸測(cè)試選擇技術(shù),作為基于活動(dòng)圖的回歸測(cè)試技術(shù)的有效補(bǔ)充。本文結(jié)構(gòu)組織文章剩下部分組織結(jié)構(gòu)如下:第二章:主要描述回歸測(cè)試的背景知識(shí),相關(guān)技術(shù)。第三章:討論了建立基于活動(dòng)圖的需求可跟蹤性的方法,在次基礎(chǔ)上建立了對(duì)回歸分析和選擇技術(shù)。第四章:討論了風(fēng)險(xiǎn)分析,給出一個(gè)實(shí)用的風(fēng)險(xiǎn)模式,可以在回歸分析中使用。第五章:討論了基于風(fēng)險(xiǎn)的回歸測(cè)試策略,并使用例子說(shuō)明。第六章:用一個(gè)實(shí)驗(yàn)來(lái)驗(yàn)證我們提出的回歸測(cè)試方法。第七章:總結(jié)全文?;貧w測(cè)試引言Myers發(fā)現(xiàn)對(duì)已經(jīng)存在的程序進(jìn)行修改比整個(gè)系統(tǒng)重新進(jìn)行編碼更容易產(chǎn)生bug[18]?;貧w測(cè)試是被用來(lái)確認(rèn)被修復(fù)的bug已經(jīng)真正的被修復(fù)了,同時(shí)在這個(gè)過(guò)程中沒(méi)有產(chǎn)生新的bug,系統(tǒng)的功能還要符合需求的規(guī)定。回歸分析和測(cè)試概念回歸分析和測(cè)試是軟件系統(tǒng)發(fā)生改變后的一個(gè)軟件過(guò)程[19]。回歸測(cè)試通常就是發(fā)生在被測(cè)試的系統(tǒng)發(fā)生改變時(shí),原來(lái)的bug已經(jīng)被完全修復(fù),不會(huì)產(chǎn)生新的問(wèn)題?;貧w測(cè)試和開(kāi)發(fā)過(guò)程中的測(cè)試最主要的區(qū)別是回歸測(cè)試的測(cè)試用例集會(huì)不斷的重用。使用回歸測(cè)試選擇技術(shù),我們僅僅重新運(yùn)行被壓縮過(guò)的回歸測(cè)試用例,這些測(cè)試用例根據(jù)修改過(guò)的組件或系統(tǒng)而變化。如果選擇測(cè)試用例的代價(jià)少于重新測(cè)試所有測(cè)試用例的代價(jià),那就說(shuō)明測(cè)試用例選擇技術(shù)是經(jīng)濟(jì)有效的[20]?;貧w測(cè)試技術(shù)Rothermel和Harrold在自己的研究中描述回歸測(cè)試技術(shù)如下所述[9]:程序P,修改后的程序p’,程序P的測(cè)試用例集T,回歸分析和測(cè)試技術(shù)就是讓T的子集能滿足程序P’的質(zhì)量要求,而從p到P’的對(duì)應(yīng)未改變部分功能不變?;貧w測(cè)試基本上包含下面幾個(gè)步驟:確定從P到P’的改變的容選擇子集T’∈T,T’是基于P到P’改變的測(cè)試集用T’測(cè)試P’,確認(rèn)P’的正確性如果需要,建立T’’,是關(guān)于P’的新的功能的或架構(gòu)的測(cè)試用例集用T’’測(cè)試P’,確認(rèn)P’的準(zhǔn)確性建立T’’’,是P’的回歸測(cè)試集,結(jié)合了T’和T’’。圖2.1回歸測(cè)試技術(shù)回歸分析的討論對(duì)僅僅發(fā)生少量變化的軟件系統(tǒng)進(jìn)行完全的測(cè)試是很昂貴的行為,尤其是對(duì)于大型系統(tǒng)。利用回歸分析和測(cè)試,我們可以僅僅重新測(cè)試受到影響到得那部分軟件系統(tǒng)?;貧w分析和測(cè)試必須列出下面的這些基本問(wèn)題[21]:怎么確定因?yàn)槟承┙M件代碼的改變而受到影響的所有組件?要采取什么策略去重新測(cè)試這些受到影響的組件。對(duì)于這些重新測(cè)試的組件的覆蓋標(biāo)準(zhǔn)是什么?怎么選擇回歸測(cè)試用例或改變?cè)瓉?lái)的測(cè)試用例?為了解決上述問(wèn)題,對(duì)于回歸分析和測(cè)試策略,下列的行動(dòng)是很重要的。下面是一個(gè)實(shí)用的回歸測(cè)試策略:確定被影響的組件和選擇回歸測(cè)試覆蓋標(biāo)準(zhǔn)。選擇測(cè)試用例去測(cè)試被影響的組件。執(zhí)行選擇好的測(cè)試用例。獲取和評(píng)估測(cè)試結(jié)果,包括評(píng)估發(fā)生改變的軟件系統(tǒng)的運(yùn)行情況,報(bào)告回歸測(cè)試集的覆蓋率。修改測(cè)試計(jì)劃以符合下一個(gè)階段的回歸分析和測(cè)試。第2點(diǎn)是關(guān)于選擇測(cè)試用例去重新執(zhí)行的。這些被執(zhí)行的測(cè)試用例可能會(huì)是新的測(cè)試用例,當(dāng)然也會(huì)有選出來(lái)的適當(dāng)?shù)睦系臏y(cè)試用例。在我們的研究當(dāng)中,我們僅僅關(guān)注從原來(lái)的完整測(cè)試集中選擇合適的測(cè)試用例的技術(shù)方法。Luiu將完整測(cè)試集中的測(cè)試用例分成兩類[19]:可以重新使用的測(cè)試用例:這些測(cè)試用例是用來(lái)測(cè)試沒(méi)有更改部分的規(guī)格說(shuō)明和相應(yīng)未改變部分的執(zhí)行。當(dāng)規(guī)格說(shuō)明和執(zhí)行改變后,這些測(cè)試用例都保持有效性,不需要重新運(yùn)行。被影響到得測(cè)試用例:這些測(cè)試用例是同發(fā)生改變的那些規(guī)格說(shuō)明和執(zhí)行相關(guān)的。它們有兩個(gè)分類:可以重新測(cè)試的測(cè)試用例:這些測(cè)試用例是依然有效,應(yīng)當(dāng)被重新執(zhí)行的。過(guò)時(shí)的測(cè)試用例:這些測(cè)試用例對(duì)于發(fā)生改變的規(guī)格說(shuō)明和執(zhí)行已經(jīng)是不相關(guān)或已經(jīng)過(guò)時(shí)了。測(cè)試用例選擇過(guò)程圖2-2所示。圖2.2回歸測(cè)試用例選擇回歸測(cè)試模式RobertBinder總結(jié)當(dāng)前的回歸測(cè)試選擇策略,分成三個(gè)模式[7]:再測(cè)試全部用例

:選擇基線測(cè)試用例庫(kù)中的全部測(cè)試用例組成回歸測(cè)試包,這是一種比較安全的方法,再測(cè)試全部用例具有最低的遺漏回歸錯(cuò)誤的風(fēng)險(xiǎn),但測(cè)試成本最高。全部再測(cè)試幾乎可以應(yīng)用到任何情況下,基本上不需要進(jìn)行分析和重新開(kāi)發(fā),但是,隨著開(kāi)發(fā)工作的進(jìn)展,測(cè)試用例不斷增多,重復(fù)原先所有的測(cè)試將帶來(lái)很大的工作量,往往超出了我們的預(yù)算和進(jìn)度。

基于操作剖面選擇測(cè)試:如果基線測(cè)試用例庫(kù)的測(cè)試用例是基于軟件操作剖面開(kāi)發(fā)的,測(cè)試用例的分布情況反映了系統(tǒng)的實(shí)際使用情況?;貧w測(cè)試所使用的測(cè)試用例個(gè)數(shù)可以由測(cè)試預(yù)算確定,回歸測(cè)試可以優(yōu)先選擇那些針對(duì)最重要或最頻繁使用功能的測(cè)試用例,釋放和緩解最高級(jí)別的風(fēng)險(xiǎn),有助于盡早發(fā)現(xiàn)那些對(duì)可靠性有最大影響的故障。這種方法可以在一個(gè)給定的預(yù)算下最有效的提高系統(tǒng)可靠性,但實(shí)施起來(lái)有一定的難度。再測(cè)試修改的部分:當(dāng)測(cè)試者對(duì)修改的局部化有足夠的信心時(shí),可以通過(guò)相依性分析識(shí)別軟件的修改情況并分析修改的影響,將回歸測(cè)試局限于被改變的模塊和它的接口上。通常,一個(gè)回歸錯(cuò)誤一定涉與一個(gè)新的、修改的或刪除的代碼段。在允許的條件下,回歸測(cè)試盡可能覆蓋受到影響的部分。

再測(cè)試全部用例的策略是最安全的策略,但已經(jīng)運(yùn)行過(guò)許多次的回歸測(cè)試不太可能揭示新的錯(cuò)誤,而且很多時(shí)候,由于時(shí)間、人員、設(shè)備和經(jīng)費(fèi)的原因,不允許選擇再測(cè)試全部用例的回歸測(cè)試策略,此時(shí),可以選擇適當(dāng)?shù)牟呗赃M(jìn)行縮減的回歸測(cè)試。

每種回歸測(cè)試模式都有其優(yōu)點(diǎn)和缺點(diǎn)。一種模式可能在某些情況下比另一種好,但是并不是在所有情況下都好。軟件維護(hù)的分類和回歸測(cè)試的類型在軟件開(kāi)發(fā)和維護(hù)階段,當(dāng)軟件進(jìn)行打補(bǔ)丁,升級(jí)或微調(diào)時(shí),軟件系統(tǒng)可能會(huì)發(fā)生許多變化。根據(jù)軟件維護(hù)預(yù)期目的的不同,White將軟件維護(hù)分成三類[22]:糾錯(cuò)性維護(hù)(Correctivemaintenance):糾錯(cuò)性維護(hù)是為診斷和改正軟件系統(tǒng)中潛藏的錯(cuò)誤而進(jìn)行的活動(dòng)。由于軟件測(cè)試不可能排除大型軟件系統(tǒng)中所有的錯(cuò)誤,測(cè)試階段隱藏下來(lái)的軟件錯(cuò)誤,有可能在軟件投入實(shí)際運(yùn)行之后,才逐步暴露出來(lái)并造成系統(tǒng)故障。軟件交付使用后,用戶將成為新的測(cè)試人員,在使用過(guò)程中,一旦發(fā)現(xiàn)錯(cuò)誤,他們會(huì)向開(kāi)發(fā)人員報(bào)告并要求維護(hù)。適應(yīng)性維護(hù)(AdaptiveMaintenance):適應(yīng)性維護(hù)是為使軟件系統(tǒng)適應(yīng)不斷變化的運(yùn)行環(huán)境而進(jìn)行修改的活動(dòng)。一般應(yīng)用軟件的使用壽命很容易超過(guò)十年(比如,波音公司的CobolOS/VS已經(jīng)運(yùn)行了22年),但其運(yùn)行環(huán)境卻更新很快。近年來(lái),硬件基本是一年半一代,操作系統(tǒng)的版本也在不斷地更新,外部設(shè)備,外存儲(chǔ)器和其他系統(tǒng)元素也頻繁地升級(jí)和變化,因此為了使老的軟件能夠在新的運(yùn)行環(huán)境下正常工作,適應(yīng)性維護(hù)是必須且經(jīng)常發(fā)生的。完善性維護(hù)(PerfectiveMaintenance):完善性維護(hù)是根據(jù)用戶在使用過(guò)程中提出的一些建設(shè)性意見(jiàn)而進(jìn)行的維護(hù)活動(dòng)。在一個(gè)應(yīng)用軟件成功運(yùn)行期間,用戶也可能請(qǐng)求增加新功能、建議修改已有功能或提出某些改進(jìn)意見(jiàn),以便使軟件的功能和質(zhì)量得到進(jìn)一步的完善。軟件的版本更新就是完善性維護(hù)的一種。完善性維護(hù)是軟件維護(hù)的主要部分,通常占所有軟件維護(hù)工作量的一半以上。在適應(yīng)性維護(hù)和完善性維護(hù)階段里,軟件系統(tǒng)的變化是由于用戶需求或者系統(tǒng)的規(guī)格說(shuō)明的變化。經(jīng)常是增加了新的功能。這兩種維護(hù)中發(fā)生的變化同開(kāi)發(fā)階段發(fā)生的變化很類似。Leung和White稱適應(yīng)性維護(hù)和完善性維護(hù)都被認(rèn)為是改進(jìn)性的維護(hù)(ProgressiveMaintenance)基于上面的分類,我們可以將回歸測(cè)試分成兩類:糾錯(cuò)性回歸測(cè)試:就是在糾錯(cuò)性維護(hù)后進(jìn)行的回歸測(cè)試,這時(shí)軟件系統(tǒng)的需求規(guī)格說(shuō)明沒(méi)有發(fā)生變化。改進(jìn)性回歸測(cè)試:就是在改進(jìn)性維護(hù)后進(jìn)行的回歸測(cè)試,這時(shí)相應(yīng)的需求規(guī)格說(shuō)明已經(jīng)發(fā)生變化。在論文里,我們的討論主要針對(duì)這個(gè)分類展開(kāi)。本章小結(jié)在這章中,我們提供了回歸分析和測(cè)試的背景信息,列出了一般的回歸測(cè)試模式。同時(shí)也將軟件系統(tǒng)的改變,回歸測(cè)試進(jìn)行了分類。方法1:基于活動(dòng)圖的回歸測(cè)試引言軟件的規(guī)說(shuō)明階段(specificationphase)對(duì)于軟件的整體開(kāi)發(fā)過(guò)程來(lái)說(shuō)是一個(gè)非常重要的階段,UML方法是目前比較流行的軟件工程開(kāi)發(fā)方法,它對(duì)軟件整體開(kāi)發(fā)過(guò)程提供了一套有用的模型。在我們的研究中,我們使用UML中的活動(dòng)圖作為需求分析和設(shè)計(jì)的工具,尤其是作為工作流的標(biāo)記。設(shè)計(jì)測(cè)試用例是基于活動(dòng)圖,這些活動(dòng)圖來(lái)自設(shè)計(jì)文檔。我們的方法是基于項(xiàng)目文檔,包括設(shè)計(jì)文檔,系統(tǒng)變化的歷史文檔,測(cè)試執(zhí)行的log記錄。如果這些文檔是不完全或不正確的,我們的方法不可能覆蓋所有可能的變化。需求的可追溯性測(cè)試人員的任務(wù)是在產(chǎn)品中發(fā)現(xiàn)高優(yōu)先級(jí)的問(wèn)題。風(fēng)險(xiǎn)是問(wèn)題可能發(fā)生的衡量。問(wèn)題越可能發(fā)生,問(wèn)題發(fā)生后的影響越大,那么風(fēng)險(xiǎn)級(jí)別越高。風(fēng)險(xiǎn)是所有測(cè)試的動(dòng)力所在。從某種意義上說(shuō),沒(méi)有風(fēng)險(xiǎn)就沒(méi)有測(cè)試,就像沒(méi)有空氣就沒(méi)有生命一樣。在第2章中,我們已經(jīng)指出任何回歸分析和測(cè)試策略中我們首先要做的是識(shí)別出受系統(tǒng)變化影響的組件。在糾正性維護(hù)中,我們可以通過(guò)哪些組件里的代碼發(fā)生變化來(lái)識(shí)別哪些組件受到影響。對(duì)于改進(jìn)性維護(hù),因?yàn)橄到y(tǒng)的變化是因?yàn)樾枨蠡蛘呤且?guī)說(shuō)明的變化,我們需要明白需求,規(guī)說(shuō)明和系統(tǒng)行為之間的聯(lián)系,以識(shí)別受到影響的組件。然后,當(dāng)在第一步中識(shí)別出哪些組件受到影響后,我們?cè)诘?步中選擇測(cè)試這些組件的回歸測(cè)試用例。要清楚這些組件和測(cè)試用例之間的聯(lián)系。關(guān)于需求的可追溯性,簡(jiǎn)單的,普遍的觀點(diǎn)是通過(guò)記賬的方法,這可以防止很多問(wèn)題[7]。需求的可追溯性是為了找出因?yàn)樾枨笞兓艿接绊懙慕M件和選擇出相應(yīng)的測(cè)試用例的一個(gè)基本要求?!靶枨蟮目勺匪菪浴边@個(gè)專用名詞最初是來(lái)自美國(guó)國(guó)防部。需求的可追溯性的一個(gè)普遍可以接受的定義是:描述和跟蹤需求的整個(gè)生命的能力,包括向前的和向后的方向[24]。也就是說(shuō),可追溯性是這么一種能力:跟隨需求從最原始狀態(tài),經(jīng)過(guò)它們的規(guī)說(shuō)明和開(kāi)發(fā),到產(chǎn)品的隨后的開(kāi)發(fā)和使用,再通過(guò)一段時(shí)間的不斷完善,當(dāng)然也包括在這些階段中任何一個(gè)遍歷過(guò)程。需求的可追溯性已經(jīng)廣泛被認(rèn)為是有效的軟件項(xiàng)目管理和軟件質(zhì)量保證的一個(gè)重要因素。在過(guò)去幾年中,軟件需求可追溯性的研究還是挺多的。許多可追溯性的模式被提了出來(lái)。根據(jù)Spanoudaki的說(shuō)法[25],需求的可追溯性可以被用到:協(xié)助驗(yàn)證系統(tǒng)滿足需求的要求。確認(rèn)軟件需求說(shuō)明變化的影響。記錄和理解各種文檔的變化過(guò)程。上面的需求的可追溯性的第2點(diǎn)用處剛好很好地滿足我們的情況。我們用它來(lái)解決回歸分析和測(cè)試的第一個(gè)問(wèn)題:識(shí)別受到影響的組件。從用戶需求到軟件產(chǎn)品的第一個(gè)Release,一個(gè)軟件開(kāi)發(fā)過(guò)程通常包含四個(gè)主要階段:需求分析,設(shè)計(jì),實(shí)施,測(cè)試。結(jié)果是,系統(tǒng)的相關(guān)信息轉(zhuǎn)化成不同的形式和在不同階段的不同代碼。我們使用UML的活動(dòng)圖區(qū)描述我們研究中的分析和設(shè)計(jì)模式。UML的活動(dòng)圖活動(dòng)圖是UML用于對(duì)系統(tǒng)的動(dòng)態(tài)行為建模的一種常用工具。統(tǒng)模語(yǔ)言(UML是UnifiedModelingLanguage的縮寫)是用來(lái)對(duì)軟件密集系統(tǒng)進(jìn)行可視化建模的一種語(yǔ)言。UML為面向?qū)ο箝_(kāi)發(fā)系統(tǒng)的產(chǎn)品進(jìn)行說(shuō)明、可視化、和編制文檔的一種標(biāo)準(zhǔn)語(yǔ)言。統(tǒng)模語(yǔ)言(UML)是非專利的第三代建模和規(guī)約語(yǔ)言。UML是在開(kāi)發(fā)階段,說(shuō)明,可視化,構(gòu)建和書寫一個(gè)面向?qū)ο筌浖芗到y(tǒng)的制品的開(kāi)放方法。UML展現(xiàn)了一系列最佳工程實(shí)踐,這些最佳實(shí)踐在對(duì)大規(guī)模,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效。UML可以貫穿軟件開(kāi)發(fā)周期中的每一個(gè)階段。被OMG采納作為業(yè)界的標(biāo)準(zhǔn)。UML最適于數(shù)據(jù)建模,業(yè)務(wù)建模,對(duì)象建模,組件建模。UML作為一種模型語(yǔ)言,它使開(kāi)發(fā)人員專注于建立產(chǎn)品的模型和結(jié)構(gòu),而不是選用什么程序語(yǔ)言和算法實(shí)現(xiàn)。當(dāng)模型建立之后,模型可以被UML工具轉(zhuǎn)化成指定的程序語(yǔ)言代碼。UML活動(dòng)圖是UML語(yǔ)言中描述系統(tǒng)動(dòng)態(tài)行為的一種方法,它廣泛地運(yùn)用于業(yè)務(wù)建模。它描述活動(dòng)的順序,展現(xiàn)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流?;顒?dòng)圖在本質(zhì)上是一種流程圖?;顒?dòng)圖的應(yīng)用非常廣泛,它既可以用來(lái)描述操作(類的方法)的行為,也可以描述用例和對(duì)象部的工作過(guò)程。活動(dòng)圖是由狀態(tài)圖變化而來(lái)的,他們各自用于不同的目的。活動(dòng)圖中一個(gè)活動(dòng)結(jié)束后立即進(jìn)入下一個(gè)活動(dòng)?;顒?dòng)圖用途與優(yōu)缺點(diǎn):活動(dòng)圖用于對(duì)系統(tǒng)的動(dòng)態(tài)行為建模,它是系統(tǒng)行為狀態(tài)的一種可視化形式。另一種可視化形式是狀態(tài)圖?;顒?dòng)圖描述了從活動(dòng)到活動(dòng)的流,活動(dòng)是狀態(tài)機(jī)中進(jìn)行的非原子操作。活動(dòng)圖實(shí)際上是狀態(tài)圖的特殊形式,它的每個(gè)狀態(tài)都有入口動(dòng)作,用以說(shuō)明進(jìn)入該狀態(tài)發(fā)生的操作。優(yōu)點(diǎn):最適合支持并行行為,而且也是支持多線程編程的有力工具。缺點(diǎn):很難清楚地描述動(dòng)作與對(duì)象之間的關(guān)系?;顒?dòng)圖有很多作用:分析用例:在項(xiàng)目中,我們需要理解什么行為會(huì)發(fā)生,按照什么順序發(fā)生等等。理解工作流:即使我們?cè)谏钊肓私庥美?,我們可以協(xié)同商業(yè)專家畫出活動(dòng)圖,理解業(yè)務(wù)流程與其如何變化的。描述一個(gè)復(fù)雜的連續(xù)的運(yùn)算法則處理多線程應(yīng)用:活動(dòng)圖有一系列的元素去描述多線程應(yīng)用的系統(tǒng)行為。許多公司,比如IBM公司多年前就開(kāi)始在系統(tǒng)設(shè)計(jì)中使用活動(dòng)圖。它是描述系統(tǒng)行為和工作流的很有力工具。許多研究人員錯(cuò)誤理解活動(dòng)圖的概念,覺(jué)得它僅僅就是一個(gè)控制流圖(ControlFlowGraph(CFG))。但是實(shí)際上,活動(dòng)圖不僅僅是控制流圖。有如下兩個(gè)原因:活動(dòng)圖可以用來(lái)表達(dá)控制流和數(shù)據(jù)流,但是CFG僅僅可以用來(lái)表達(dá)控制流?;顒?dòng)圖可以用來(lái)表達(dá)大型系統(tǒng),而CFG不能表達(dá)大型系統(tǒng)。在我們的研究中,我們使用活動(dòng)圖來(lái)詳細(xì)描述系統(tǒng)的需求,以達(dá)到回歸分析的目的。因?yàn)樵诿嫦驅(qū)ο箝_(kāi)發(fā)過(guò)程中,需求分析和設(shè)計(jì)工作有時(shí)候相互混合在一起,所以活動(dòng)圖,作為分析和設(shè)計(jì)階段的成果,可以比最原始的需求包含更多的信息?;顒?dòng)圖的元素一個(gè)活動(dòng)圖的核心標(biāo)志是活動(dòng)狀態(tài)或者說(shuō)是簡(jiǎn)單的活動(dòng)。一個(gè)活動(dòng)就是做某個(gè)事情的狀態(tài)。它可以是真實(shí)的過(guò)程,比如打印一個(gè)字母,或者是執(zhí)行一個(gè)軟件程序,比如是執(zhí)行一個(gè)類的方法[26]。一個(gè)活動(dòng)圖可能包括以下元素:活動(dòng)(Activity):由人或者軟件系統(tǒng)做的一個(gè)任務(wù)。在活動(dòng)圖中,同步線程也可以被叫做同步活動(dòng)(SynchActivity)。子活動(dòng)(Sub-activity):就是一個(gè)活動(dòng)下來(lái)可以有幾個(gè)同步的進(jìn)程,每個(gè)進(jìn)程叫做子活動(dòng)。起點(diǎn)(StartMarker):活動(dòng)圖的人口(最開(kāi)始的狀態(tài))。每個(gè)活動(dòng)圖只有一個(gè)起點(diǎn)。終點(diǎn)(StopMarker):標(biāo)志活動(dòng)圖的出口(最終的狀態(tài))。每個(gè)活動(dòng)圖只有一個(gè)終點(diǎn)。決策點(diǎn)(DecisionPoint):通過(guò)條件來(lái)判定該走那條分支同步示意條(SynchronizationBar):同步示意條是用于顯示平行分支流。同步示意條能夠顯示業(yè)務(wù)用例的工作流程中的并行線程。信號(hào)發(fā)射(SignalSender):當(dāng)前面的活動(dòng)終止,指定的信號(hào)發(fā)射。信號(hào)接收(SignalReceiver):當(dāng)信號(hào)被接收,后續(xù)的活動(dòng)才能被激活。轉(zhuǎn)移(Transition):表示各種活動(dòng)狀態(tài)的先后順序。這種轉(zhuǎn)移可稱為完成轉(zhuǎn)移。它不同于一般的轉(zhuǎn)移,因?yàn)樗恍枰黠@的觸發(fā)器事件,而是通過(guò)完成活動(dòng)(用活動(dòng)狀態(tài)表示)來(lái)觸發(fā)。防衛(wèi)條件(GuardCondition):防衛(wèi)條件可以在轉(zhuǎn)移上指定,以限制該轉(zhuǎn)移的使用。將條件放在轉(zhuǎn)移箭頭附近的方框中。在你可以遵循相關(guān)的轉(zhuǎn)移進(jìn)入下一個(gè)活動(dòng)前,該條件的測(cè)試必須為真。對(duì)象(Object):對(duì)象是系統(tǒng)中相互關(guān)系的參與者。對(duì)象可能是一個(gè)組件,一個(gè)子系統(tǒng),也可能是外面系統(tǒng)的接口。信息(Message):一些發(fā)送到對(duì)象的或者從對(duì)象中發(fā)出的信息。泳道和時(shí)標(biāo):活動(dòng)圖中泳道區(qū)分了其中活動(dòng)的不同職責(zé),在泳道圖中,每一個(gè)活動(dòng)都只能明確地屬于一個(gè)泳道。泳道和時(shí)標(biāo)相組合的方法:橫向按時(shí)標(biāo)分組;縱向按泳道分組。活動(dòng)圖主要元素的圖標(biāo)列在表3-1中。表3.1活動(dòng)圖的標(biāo)識(shí)活動(dòng)圖描述活動(dòng)的先后順序。這種技術(shù)對(duì)于熟悉軟件開(kāi)發(fā)和測(cè)試的人員來(lái)說(shuō)同流程圖非常相似??梢员挥脕?lái)描述系統(tǒng)運(yùn)行中的基本流,備選流和額外流?;顒?dòng)圖既支持條件行為,也支持并行行為:條件行為用分支(Branch)和融合(Merge)表示分支:一個(gè)分支有一個(gè)單獨(dú)的進(jìn)來(lái)的轉(zhuǎn)移和幾個(gè)出來(lái)的轉(zhuǎn)移。用If/Else條件來(lái)控制分支的進(jìn)行。融合:一個(gè)融合有多個(gè)進(jìn)入的轉(zhuǎn)移和一個(gè)出來(lái)的轉(zhuǎn)移。它標(biāo)志著用分支標(biāo)識(shí)的條件行為的結(jié)束。并行行為用分叉(Fork)和會(huì)和(Join)表示分叉:一個(gè)分叉有一個(gè)進(jìn)入的轉(zhuǎn)移和幾個(gè)出來(lái)的轉(zhuǎn)移。當(dāng)這個(gè)進(jìn)來(lái)的轉(zhuǎn)移被觸發(fā),所有的出來(lái)的轉(zhuǎn)移都并發(fā)進(jìn)行。會(huì)和:一個(gè)回合有多個(gè)進(jìn)去的轉(zhuǎn)移和一個(gè)出來(lái)的轉(zhuǎn)移。只有當(dāng)所有的進(jìn)去的轉(zhuǎn)移都完成他們的行為,出來(lái)的轉(zhuǎn)移才會(huì)進(jìn)行。圖3-1是一個(gè)簡(jiǎn)單的活動(dòng)圖的例子。描述的是航空公司的一個(gè)簡(jiǎn)單的訂票系統(tǒng)的系統(tǒng)行為。實(shí)心圓表示活動(dòng)圖的起點(diǎn),實(shí)際上是一個(gè)占位符,帶邊框的實(shí)心圓表示終點(diǎn)。圓角矩形表示執(zhí)行的過(guò)程或活動(dòng)。菱形表示判定點(diǎn),雖然在此示例中判定點(diǎn)只有兩種可能結(jié)果;但即使有更多可能結(jié)果,它也同樣容易。箭頭表示活動(dòng)之間的轉(zhuǎn)換,各種活動(dòng)之間的流動(dòng)次序。箭頭上的文字表示繼續(xù)轉(zhuǎn)換所必須滿足的條件,總是使用格式“[條件]”來(lái)描述。粗線條表示可能會(huì)并行進(jìn)行的過(guò)程的開(kāi)始和結(jié)束。圖3.1活動(dòng)圖例子在這個(gè)例子中,消費(fèi)者可以用已經(jīng)存在的系統(tǒng)賬戶預(yù)定機(jī)票,也可以在沒(méi)有系統(tǒng)賬戶的情況下單獨(dú)定票。如圖3-1所示,在收到訂單后,下面是一個(gè)分支。如果這個(gè)訂單是個(gè)預(yù)定,系統(tǒng)會(huì)根據(jù)消費(fèi)者的賬戶信息找到指定銀行賬號(hào),用這個(gè)銀行賬號(hào)支付相應(yīng)的訂單的數(shù)額,同時(shí)會(huì)在這個(gè)賬戶上增加獎(jiǎng)勵(lì)的點(diǎn)數(shù)。如果是個(gè)無(wú)賬戶的單獨(dú)的訂票,會(huì)隨著訂單出來(lái)需要支付的信息,客戶再去支付。在預(yù)定過(guò)程中,系統(tǒng)會(huì)并行處理支付和獎(jiǎng)勵(lì)點(diǎn)數(shù)的行為。因此,這是個(gè)同步行為,就是fork。下面是一個(gè)join。系統(tǒng)是預(yù)定和單獨(dú)訂單后的共同行為,當(dāng)消費(fèi)者填完訂單后都會(huì)到系統(tǒng)。這里就是一個(gè)融合(Merge)。因?yàn)橄到y(tǒng)必須跟蹤沒(méi)一個(gè)訂單,所以消息就被發(fā)送到對(duì)象LogFile中。UML活動(dòng)圖記錄單個(gè)操作或方法的邏輯、單個(gè)用例或商業(yè)過(guò)程的邏輯流程。在很多方面,活動(dòng)圖是結(jié)構(gòu)化開(kāi)發(fā)中流程圖和數(shù)據(jù)流程圖(DFD)的面向?qū)ο蟮韧w?;顒?dòng)圖和測(cè)試用例關(guān)系在基于需求規(guī)說(shuō)明的測(cè)試中,測(cè)試用例是基于需求規(guī)說(shuō)明設(shè)計(jì)出來(lái)的,而需求規(guī)說(shuō)明是需求分析和設(shè)計(jì)階段的成果。作為需求和設(shè)計(jì)文檔的一部分,活動(dòng)圖給開(kāi)發(fā)人員詳細(xì)的設(shè)計(jì)和實(shí)施信息,同時(shí)給測(cè)試人員提供基于規(guī)說(shuō)明的測(cè)試用例的準(zhǔn)備材料。在我們的研究當(dāng)中,我們主要關(guān)注的是活動(dòng)圖和測(cè)試用例之間的關(guān)系,而且我們利用這種關(guān)系到回歸測(cè)試選擇中。一個(gè)圖可以通過(guò)兩個(gè)簡(jiǎn)單的結(jié)構(gòu)來(lái)表現(xiàn)對(duì)象間的關(guān)系:節(jié)點(diǎn)和邊界。節(jié)點(diǎn)通過(guò)邊界連接其他節(jié)點(diǎn)。一個(gè)圖的節(jié)點(diǎn)和邊界表達(dá)一種關(guān)系,這是另外一種簡(jiǎn)單但有力的數(shù)學(xué)概念?;顒?dòng)圖可以看成這么一種圖,它可以表達(dá)許多東西,尤其是控制流關(guān)系,因此也為設(shè)計(jì)測(cè)試提供豐富的信息。在我們的研究中,活動(dòng)圖的元素可以分成節(jié)點(diǎn)和邊界兩類。節(jié)點(diǎn)(Nodes):在活動(dòng)圖中,一個(gè)節(jié)點(diǎn)用一個(gè)圓角矩形表示。一個(gè)節(jié)點(diǎn)可能連接到其他圖形元素也可能是單獨(dú)的。在活動(dòng)圖中的標(biāo)記:起點(diǎn)和終點(diǎn),活動(dòng),決策點(diǎn),同步條,對(duì)象,信號(hào)發(fā)送,信號(hào)接收。邊界(Edges):在節(jié)點(diǎn)間的抽象的連接。在活動(dòng)圖中的標(biāo)記:轉(zhuǎn)移和消息當(dāng)要準(zhǔn)備基于需求規(guī)說(shuō)明的測(cè)試用例時(shí),我們要么基于活動(dòng)圖進(jìn)行設(shè)計(jì),要么基于需求的文檔。在這章中,我們假定我們的測(cè)試用例都是基于活動(dòng)圖來(lái)設(shè)計(jì)的。 每個(gè)測(cè)試用例設(shè)計(jì)出來(lái)都是有一定得測(cè)試目的。一個(gè)測(cè)試目的可能與控制流,數(shù)據(jù)流相關(guān)。基于活動(dòng)圖設(shè)計(jì)測(cè)試用例,我們就可以通過(guò)圖中特定的活動(dòng)或路徑來(lái)表示一定得功能。圖形化工具的使用,我們可以很直觀地了解整個(gè)系統(tǒng)的運(yùn)行情況。在一個(gè)圖中,我們可以看到很多路徑,每個(gè)測(cè)試目的對(duì)應(yīng)一條路徑?;谔囟康牡臏y(cè)試用例可能會(huì)覆蓋到同一條路徑,但是可能會(huì)產(chǎn)生不同的測(cè)試數(shù)據(jù)。在設(shè)計(jì)測(cè)試用例時(shí),我們總是應(yīng)用一個(gè)或多個(gè)測(cè)試策略,定義合適的測(cè)試覆蓋標(biāo)準(zhǔn)。一個(gè)測(cè)試覆蓋標(biāo)準(zhǔn)是軟件測(cè)試完整性的衡量標(biāo)準(zhǔn)。Binder總結(jié)了對(duì)應(yīng)每一個(gè)UML圖的測(cè)試策略,提供了完整的供參考的UML圖和測(cè)試設(shè)計(jì)步驟[7]。我們?cè)诒疚闹胁挥懻摶诨顒?dòng)圖的測(cè)試用例設(shè)計(jì)過(guò)程。簡(jiǎn)化復(fù)雜的活動(dòng)圖在一個(gè)程序流程中,有時(shí)會(huì)有很多并行的行為,會(huì)導(dǎo)致路徑太多,所以我們引入同步行為的概念,來(lái)簡(jiǎn)化復(fù)雜的活動(dòng)圖,以便于以后的測(cè)試用例選擇。同步行為是存在于同步配對(duì)之間的行為,同步配對(duì)是指一個(gè)fork,一個(gè)Join。圖3-2中的虛線框表示的是圖3-1中系統(tǒng)中的同步行為。為了識(shí)別這些路徑,我們?cè)趫D中標(biāo)識(shí)了所有節(jié)點(diǎn)。邊界可以用下面的表示方法:Edge=(S,D)S表示這個(gè)Edge來(lái)自哪個(gè)節(jié)點(diǎn),D表示這個(gè)節(jié)點(diǎn)的目的地。對(duì)于同步行為,一旦系統(tǒng)到達(dá)同步fork的時(shí)候,所有在fork和它對(duì)應(yīng)的join之間的行為都在同步進(jìn)行,直到下一個(gè)出來(lái)的行為被激發(fā)。這些同步線程執(zhí)行是由在執(zhí)行的系統(tǒng)控制。所以在執(zhí)行虛線盒里面的測(cè)試用例總是執(zhí)行盒所有的行為,不受測(cè)試人員的控制。測(cè)試人員通常采用“/”表示同步行為。例如在這個(gè)例子中,我們使用a,bc/d,e來(lái)表示這個(gè)過(guò)程的路徑。因?yàn)樵谔摼€框中的部分是不受控制的,所以最好的一個(gè)方法是將整個(gè)虛線框中的部分當(dāng)成一個(gè)節(jié)點(diǎn)(node)。我們將這種框叫做同步框(SynchronizationBox)。圖3-3是一個(gè)活動(dòng)圖,這個(gè)活動(dòng)圖描述的是一個(gè)外匯系統(tǒng)里的一個(gè)查詢報(bào)價(jià)功能塊。我們用它來(lái)進(jìn)行基于活動(dòng)圖的測(cè)試用例設(shè)計(jì),回歸分析和測(cè)試。這是個(gè)在線外匯交易系統(tǒng)。這個(gè)系統(tǒng)幫助用戶去進(jìn)行加拿大元和美元之間的交換。這個(gè)活動(dòng)圖描述的是這個(gè)交換系統(tǒng)從多個(gè)銀行取得當(dāng)前匯率的值。先發(fā)請(qǐng)求,圖中我們可以看到同步發(fā)了3個(gè)請(qǐng)求到3個(gè)銀行。我們將這幾個(gè)請(qǐng)求定義為3個(gè)節(jié)點(diǎn)(node):d1,d2,d3。圖3.2同步行為當(dāng)我們使用同步框d去表示當(dāng)前的3個(gè)同步線程(d1,d2,d3)。那么活動(dòng)圖3-3就簡(jiǎn)化成了圖3-4。基于活動(dòng)圖設(shè)計(jì)測(cè)試用例在我們的例子中,我們基于圖3-4設(shè)計(jì)了5個(gè)測(cè)試用例,都列在表3-2中。在測(cè)試集中,每個(gè)測(cè)試用例都對(duì)應(yīng)一個(gè)從起點(diǎn)到終點(diǎn)的路徑,都測(cè)試一個(gè)特定的系統(tǒng)功能。這個(gè)測(cè)試集覆蓋了圖中所有的node和edge,滿足了我們基于規(guī)說(shuō)明的測(cè)試覆蓋標(biāo)準(zhǔn),我們稱之為節(jié)點(diǎn)和邊界覆蓋標(biāo)準(zhǔn)。建立基于活動(dòng)圖的需求可追溯性我們已經(jīng)詳細(xì)討論了在回歸分析和測(cè)試中需求的可追溯性的所處的角色,上節(jié)還詳細(xì)描述了活動(dòng)圖。在本節(jié)中,我們提供了基于活動(dòng)圖,獲取需求可追溯性的方法。圖3.3一個(gè)取得匯率報(bào)價(jià)的模塊的活動(dòng)圖圖3.4簡(jiǎn)化后的活動(dòng)圖表3.2從圖3-4得來(lái)的滿足節(jié)點(diǎn)和邊界覆蓋標(biāo)準(zhǔn)的測(cè)試集TestCasePatht1a,b,c,d,e,f,g,h,it2a,b,c,d,e,j,k,e,f,g,h,it3a,b,c,d,e,j,k,e,j,f,g,h,it4a,b,c,d,e,j,k,e,j,e,k,e,f,g,h,it5a,b,c,l,m需求測(cè)試,設(shè)計(jì)測(cè)試和活動(dòng)圖在開(kāi)發(fā)的不同階段,我們可以用不同的標(biāo)識(shí)來(lái)表示系統(tǒng)的不同階段。在我們的方法中,我們使用活動(dòng)圖來(lái)表示理想的系統(tǒng)行為。需求測(cè)試需求分析的目的是準(zhǔn)確地,清楚地定義要解決的問(wèn)題。因此,需求測(cè)試的目標(biāo)是驗(yàn)證每個(gè)分析階段的結(jié)果。測(cè)試需求包括下面3個(gè)方面的基本問(wèn)題[27]:正確性:需求必須清楚地表達(dá)客戶的真實(shí)意愿。分析需求必須確保不會(huì)有歧義的單詞出現(xiàn)在需求文檔。需求的正確性是系統(tǒng)設(shè)計(jì)的基本前提。完整性:需求必須滿足客戶的所有希望的需求,當(dāng)然不能超出條件許可圍。一致性:一個(gè)很普遍的情況是在需求中會(huì)出現(xiàn)很多先后沖突的需求,或者是冗余的需求。這些不一致的需求和冗余的需求在需求測(cè)試階段必須就被抓出來(lái),并被消除,避免后續(xù)的系統(tǒng)設(shè)計(jì)階段的問(wèn)題。需求測(cè)試最主要的可接受的標(biāo)準(zhǔn)是用戶滿意度。但是,需求必須符合項(xiàng)目開(kāi)發(fā)時(shí)間和預(yù)算的要求。一旦客戶同意這個(gè)需求,就到了設(shè)計(jì)階段。設(shè)計(jì)測(cè)試在系統(tǒng)設(shè)計(jì)階段,設(shè)計(jì)人員要嘗試找出解決在需求階段提出的問(wèn)題。他們的目標(biāo)是使用一系列的工具和語(yǔ)言產(chǎn)生一個(gè)完整的系統(tǒng)規(guī)說(shuō)明。設(shè)計(jì)階段是需求分析階段的后續(xù)階段,將需求的要求完整地轉(zhuǎn)換成一個(gè)完整的計(jì)劃,以進(jìn)行后續(xù)的實(shí)施階段?;谠O(shè)計(jì)階段的成果,有5個(gè)主要的目標(biāo)需要測(cè)試[27]:一致性:非一致性的設(shè)計(jì)是后續(xù)階段主要的錯(cuò)誤來(lái)源,會(huì)成為軟件維護(hù)階段的噩夢(mèng)。因此,測(cè)試設(shè)計(jì)的第一個(gè)目標(biāo)是消除非一致性。完整性:一個(gè)好的設(shè)計(jì)的重要特征是提供一個(gè)完整的解決方案解決所有問(wèn)題。在設(shè)計(jì)測(cè)試階段,測(cè)試人員必須保證設(shè)計(jì)不僅符合需求的功能性,還要符合需求的性能要求。適用性:對(duì)于一個(gè)項(xiàng)目來(lái)說(shuō),時(shí)間和預(yù)算總是有限的。一個(gè)好的設(shè)計(jì)必須可以在有限的時(shí)間和預(yù)算中實(shí)施。正確性:設(shè)計(jì)中必須解決這個(gè)問(wèn)題。就是說(shuō)輸入和輸出結(jié)果是正確的。可跟蹤性:我們必須說(shuō)明可跟蹤性是保證軟件質(zhì)量的重要性。設(shè)計(jì)的可跟蹤性同樣是一個(gè)項(xiàng)目的可跟蹤性中的重要組成部分。為了測(cè)試可跟蹤性,測(cè)試人員必須找到設(shè)計(jì)階段的前后關(guān)聯(lián)。設(shè)計(jì)一個(gè)面向?qū)ο蟮能浖到y(tǒng)在系統(tǒng)發(fā)布前都不會(huì)完結(jié)。在進(jìn)行下一個(gè)階段之前,必須達(dá)到下面兩個(gè)方面的標(biāo)準(zhǔn):開(kāi)發(fā)團(tuán)隊(duì)必須有足夠的信心根據(jù)設(shè)計(jì)的架構(gòu)將系統(tǒng)開(kāi)發(fā)出來(lái),同時(shí)要充分考慮到存在的風(fēng)險(xiǎn)。測(cè)試團(tuán)隊(duì)必須有足夠的信心設(shè)計(jì)的測(cè)試集是完整的,一致的和正確的。完整性:測(cè)試集覆蓋了系統(tǒng)所有的需求要求。一致性:對(duì)于同一個(gè)需求點(diǎn),不會(huì)有兩個(gè)互相沖突的測(cè)試用例。正確性:正確的輸入會(huì)有正確的輸出?;顒?dòng)圖是項(xiàng)目實(shí)施和測(cè)試用例設(shè)計(jì)的基礎(chǔ)。活動(dòng)圖是需求分析和系統(tǒng)設(shè)計(jì)階段的成果的一部分。我們假設(shè)無(wú)論是需求測(cè)試還是設(shè)計(jì)測(cè)試都完成得很好,通過(guò)了所有的可接受的標(biāo)準(zhǔn)。但是,安全起見(jiàn),我們規(guī)定了如下的假設(shè):假設(shè):我們假設(shè)活動(dòng)圖已經(jīng)被基線測(cè)試檢測(cè)過(guò)了。這些活動(dòng)圖已經(jīng)正確地,完全地,一致地,可行地表現(xiàn)了系統(tǒng)的規(guī)說(shuō)明。甚至,它們也是可跟蹤的?;顒?dòng)圖的各個(gè)元素可以一一映射到項(xiàng)目需求的每個(gè)特征。跟蹤測(cè)試用例到活動(dòng)圖元素在需求和測(cè)試用例之間建立聯(lián)系的目的是抓住需求特征和測(cè)試用例之間的關(guān)系。換句話說(shuō),就是我們必須設(shè)計(jì)測(cè)試用例用來(lái)測(cè)試需求的每個(gè)點(diǎn)。在我們的活動(dòng)圖假定中,我們假設(shè)活動(dòng)圖的每個(gè)元素都一一映射到每個(gè)需求特征。如果我們找到一個(gè)方法可以去跟蹤測(cè)試用例到活動(dòng)圖各個(gè)元素的關(guān)系,那么我們就可以建立需求特征和測(cè)試用例之間的聯(lián)系。(看圖3-5)。圖3-5:建立需求特征和測(cè)試用例之間的可追溯性的聯(lián)系當(dāng)我們?cè)O(shè)計(jì)測(cè)試用例時(shí),我們列出了對(duì)應(yīng)每個(gè)測(cè)試用例的路徑。一個(gè)路徑就是相關(guān)聯(lián)的一系列活動(dòng)圖元素。因此,我們說(shuō)測(cè)試用例是用來(lái)測(cè)試相關(guān)的一系列活動(dòng)圖元素的。在我們的方法中,我們建立了可跟蹤性模型來(lái)發(fā)現(xiàn)測(cè)試用例和活動(dòng)圖元素之間的關(guān)系。我們已經(jīng)列出了表3-2中每個(gè)測(cè)試用例對(duì)應(yīng)圖3-5中的路徑。對(duì)于每個(gè)測(cè)試用例,我們可以識(shí)別出所有的node和edge。這可以看表3-3:表3-3:測(cè)試用例和活動(dòng)圖元素TestCaseNodeCoveredEdgesCoveredt1a,b,c,d,e,f,g,h,i(a,b),(b,c),(c,d),(d,e),(e,f),(f,g),(g,h),(h,i)t2a,b,c,d,e,j,k,e,f,g,h,i(a,b),(b,c),(c,d),(d,e),(e,j),(j,k),(k,e),(e,f),(f,g),(g,h),(h,i)t3a,b,c,d,e,j,k,e,j,f,g,h,i(a,b),(b,c),(c,d),(d,e),(e,j),(j,k),(k,e),(j,f),(f,g),(g,h),(h,i)t4a,b,c,d,e,j,k,e,j,f,g,h,i(a,b),(b,c),(c,d),(d,e),(e,j),(j,k),(k,e),(j,f),(f,g),(g,h),(h,i)t5a,b,c,l,m(a,b),(b,c),(c,l),(l,m)通過(guò)將表3-3中的信息重新排列,我們建立了一個(gè)測(cè)試用例可追溯性模型,用來(lái)顯示和檢查測(cè)試用例和活動(dòng)圖元素之間的聯(lián)系。在這個(gè)模型中,測(cè)試用例作為因變數(shù)。對(duì)于每個(gè)node和edge,我們列出了相對(duì)應(yīng)的測(cè)試用例。例如,對(duì)于nodej,測(cè)試用例t2,t3,t4相對(duì)應(yīng)。表3-4:對(duì)應(yīng)測(cè)試用例的活動(dòng)圖的可追溯性NodeTestCaseEdgeTestCaseat1,t2,t3,t4,t5(a,b)t1,t2,t3,t4,t5bt1,t2,t3,t4,t5(b,c)t1,t2,t3,t4,t5ct1,t2,t3,t4,t5(c,d)t1,t2,t3,t4dt1,t2,t3,t4(c,l)t5et1,t2,t3,t4(d,e)t1,t2,t3,t4ft1,t2,t3,t4(e,f)t1,t2gt1,t2,t3,t4(e,j)t2,t3,t4ht1,t2,t3,t4(f,g)t1,t2,t3,t4it1,t2,t3,t4(g,h)t1,t2,t3,t4jt2,t3,t4(h,i)t1,t2,t3,t4kt2,t3,t4(j,f)t3,t4lt5(j,k)t2,t3,t4mt5(k,e)t2,t3,t4(l,m)t5這個(gè)模型提供了測(cè)試用例和活動(dòng)圖元素間的聯(lián)系。如圖3-6所示。在本文中,我們用這個(gè)模型來(lái)進(jìn)行回歸分析。這種可跟蹤性也提供了對(duì)于所有的需求特征的一種可檢測(cè)性。在最近幾年,出現(xiàn)了需求的“可檢測(cè)性(testability)”這個(gè)名詞,慢慢地也被廣泛地接受。需求的可檢測(cè)性表示每個(gè)需求特征擁有至少一個(gè)測(cè)試用例。我們?cè)谛枨筇卣骱蜏y(cè)試用例之間建立的聯(lián)系可以作為需求的可檢測(cè)性的依據(jù)。從另一方面,我們也可以說(shuō)一個(gè)測(cè)試用例必須對(duì)應(yīng)至少一個(gè)需求特征。圖3-6:需求特征和測(cè)試用例間的可跟蹤性的聯(lián)系鏈基于活動(dòng)圖進(jìn)行測(cè)試用例的選擇在這節(jié)中,我們討論基于活動(dòng)圖進(jìn)行測(cè)試用例的選擇。我們?cè)诠?jié)2.4中指出,在分析軟件系統(tǒng)中的改變,Leung和White認(rèn)為只有兩種類型的改變[22]:糾正性維護(hù)和改進(jìn)性維護(hù)。在糾正性維護(hù)中,改變僅僅發(fā)生在實(shí)施階段,而不影響需求規(guī)說(shuō)明,也就是說(shuō)在這個(gè)階段活動(dòng)圖不改變。在改進(jìn)性維護(hù)中,改變發(fā)生在需求或設(shè)計(jì)中,活動(dòng)圖會(huì)發(fā)生相應(yīng)的變化。對(duì)于僅僅是代碼發(fā)生變化,我們假設(shè)活動(dòng)圖保持不變。我們會(huì)在下一節(jié)描述這個(gè)假設(shè)。糾正性維護(hù)中測(cè)試用例的選擇就像2.4節(jié)指出的那樣,糾正性維護(hù)并不會(huì)影響規(guī)說(shuō)明(需求)。這種維護(hù)經(jīng)常發(fā)生在開(kāi)發(fā)階段,比如說(shuō),開(kāi)發(fā)人員修復(fù)錯(cuò)誤,他們通常只是改變下代碼,不會(huì)對(duì)規(guī)說(shuō)明有什么影響。在這種情況下,原來(lái)的系統(tǒng)行為(需求和規(guī)說(shuō)明)不會(huì)發(fā)生改變。因此,這種時(shí)候不用改變活動(dòng)圖。但是,有時(shí)候,代碼改變會(huì)對(duì)系統(tǒng)行為產(chǎn)生極影響,這種影響必須被記錄下來(lái)。對(duì)于大部分的開(kāi)發(fā)人員,任何代碼上的變化都必須在代碼變化歷史記錄文檔中被記錄下來(lái)。在我們的方法中,如果這個(gè)變化影響到活動(dòng)圖中的node和edge,我們就必須在活動(dòng)圖中有所體現(xiàn)。對(duì)于測(cè)試人員,我們必須在測(cè)試用例和錯(cuò)誤歷史記錄中建立可追溯性。我們稱之為測(cè)試檔案。在我們的方法中,每個(gè)錯(cuò)誤必須對(duì)應(yīng)相應(yīng)的活動(dòng)圖元素(node和edge)。實(shí)際上,開(kāi)發(fā)人員可能錯(cuò)過(guò)許多錯(cuò)誤,代碼改變歷史文檔也可能是不完整的。在我們的方法中,測(cè)試人員選擇回歸測(cè)試用例不僅僅可以依賴開(kāi)發(fā)人員的文檔,而且可以依據(jù)測(cè)試人員自己寫的測(cè)試檔案。舉個(gè)例子來(lái)說(shuō),在圖3-7中,一個(gè)錯(cuò)誤發(fā)生在節(jié)點(diǎn)K上,還有一些改變發(fā)生在邊界edge(c,l)上。從表3-4可以看出,我們知道測(cè)試用例t2,t3,t4對(duì)應(yīng)節(jié)點(diǎn)K,測(cè)試用例t5與edge(c,l)關(guān)聯(lián)。因此,測(cè)試用例t2,t3,t4,t5必須被選擇到回歸測(cè)試集中。我們知道活動(dòng)圖概念是來(lái)自流程圖。所以活動(dòng)圖支持所有流程圖中的元素。在控制流圖(CFG)中,node是用來(lái)表示狀態(tài)的,而edge是用來(lái)表示過(guò)程中狀態(tài)間的控制流的。我們畫了個(gè)簡(jiǎn)單的控制流圖,看圖3-8。比較圖3-5和圖3-8,我們會(huì)發(fā)現(xiàn)活動(dòng)圖和控制流圖是很類似的?;A(chǔ):基于CFG的回歸測(cè)試選擇技術(shù)本文中基于活動(dòng)圖的回歸測(cè)試技術(shù)是由基于CFG的回歸測(cè)試選擇方法變化而來(lái)的。Rothermel,Harrold,Dedhia研究出了基于CFG的回歸測(cè)試選擇方法。他們使用CFG表現(xiàn)程序P和后續(xù)版本P’,同時(shí)使用edge作為潛在的受影響的實(shí)體[11]。通過(guò)比較程序P的CFG和程序P’的CFG,受影響的實(shí)體就被選擇出來(lái)了。在圖3-8中,我們有控制流圖C和改變后的版本C’。在C’中,一個(gè)node4a已經(jīng)被插入,還有edge(6,2)已經(jīng)被改變?yōu)閑dge(6.3)。當(dāng)程序到達(dá)node3時(shí),我們發(fā)現(xiàn)分支“T”后的目標(biāo)變了。當(dāng)程序到達(dá)node6后,我們發(fā)現(xiàn)后續(xù)的node從2變成了3。因此,我們將edge(6,2)加入已經(jīng)發(fā)生變化的實(shí)體??赡苓€有其他的額外的變化發(fā)生在在這個(gè)路徑中,但是我們目前先不考慮。當(dāng)所有的受影響的edge被識(shí)別出來(lái)后,可以用這些來(lái)指導(dǎo)測(cè)試用例的選擇。圖3-7:取得報(bào)價(jià)的功能模塊實(shí)施中發(fā)生錯(cuò)誤和變化舉個(gè)例子,看圖3-8,假設(shè)C有一個(gè)測(cè)試集T,T中包含測(cè)試用例t1,t2,t3。對(duì)于這個(gè)測(cè)試集的edge覆蓋模型如表3-5所示。我們發(fā)現(xiàn)edge覆蓋模型很像表3-4所示的可跟蹤性模型。圖3-8:控制流圖C和改變后的C’使用這個(gè)edge覆蓋模型,我們可以很容易地選擇出相應(yīng)的回歸測(cè)試用例。在我們的例子中,受影響的實(shí)體是edge(3,4)和edge(6,2),所以測(cè)試用例t1和t2應(yīng)該被加入回歸測(cè)試用例集中。我們采用這個(gè)方法去實(shí)施在活動(dòng)圖基礎(chǔ)上的回歸分析。表3-5:CFGC的測(cè)試集T的edge覆蓋模型EdgeTestCase(entry,1)(1,2)t1,t2,t3(2,3)(3,4)(4,exit)t1,t2(3,5)(5,6)(6,2)t2(2,7)(7,8)(8,exit)t3基于活動(dòng)圖的回歸測(cè)試選擇我們的回歸測(cè)試選擇技術(shù)是基于活動(dòng)圖。因?yàn)榛顒?dòng)圖與CFG是非常類似,我們使用基于CFG的算法來(lái)分析基于活動(dòng)圖的回歸測(cè)試選擇技術(shù)。像先前的描述基于CFG的技術(shù),我們的技術(shù)也有兩個(gè)主要的步驟。首先是我們通過(guò)活動(dòng)圖來(lái)辨識(shí)那些edge受到影響。然后我們選擇這些與受到影響的edge相關(guān)的測(cè)試用例。將這些測(cè)試用例收集好加入到我們的回歸測(cè)試用例集中。有個(gè)活動(dòng)圖A,A的改變版本A’。取得回歸測(cè)試用例的方法如下: 第1步.獲取受影響的實(shí)體集從A和A’的起點(diǎn)開(kāi)始,比較兩個(gè)圖中的路徑。發(fā)現(xiàn)有什么不同,當(dāng)出現(xiàn)edge的出口有不同的目標(biāo)時(shí),將A中的這個(gè)edge加入到受影響的實(shí)體集中。比較所有的路徑,將發(fā)現(xiàn)的所有受影響的edge加入到受影響的實(shí)體集中。 第2步.選擇目標(biāo)性測(cè)試用例對(duì)于每一個(gè)受影響的實(shí)體,研究可跟蹤性模型,選擇相應(yīng)的測(cè)試用例作為回歸測(cè)試用例。圖3-9是一個(gè)簡(jiǎn)單的例子。規(guī)說(shuō)明或者需求的改變使得圖3-4中的活動(dòng)圖發(fā)生了改變,變成了圖3-9中的活動(dòng)圖。edge(j,f)改變成edge(j,n)。從A和A’的起點(diǎn)開(kāi)始,我們從各個(gè)路徑開(kāi)始比較兩個(gè)活動(dòng)圖。當(dāng)?shù)竭_(dá)nodeJ時(shí),我們發(fā)現(xiàn)j的目標(biāo)發(fā)生了變化。所以我們將edge(j,f)加入到受影響的實(shí)體集中。沒(méi)有其他的受影響的edge被發(fā)現(xiàn)。從表3-4中,我們發(fā)現(xiàn)測(cè)試用例t3和t4覆蓋edge(j,f)。因此,測(cè)試用例t3和t4被加入到回歸測(cè)試用例集中。通過(guò)以上的方法,我們選擇測(cè)試用例到回歸測(cè)試用例集中。糾正性和改進(jìn)性維護(hù)同時(shí)發(fā)生時(shí)測(cè)試用例選擇實(shí)際上,糾正性維護(hù)和改進(jìn)性維護(hù)可能有時(shí)會(huì)同時(shí)發(fā)生。在這種情況下,相應(yīng)的活動(dòng)圖會(huì)發(fā)生改變,活動(dòng)圖中許多node和edge都會(huì)發(fā)生變化。為了處理這種情況,我們將因?yàn)榧m正性維護(hù)和改進(jìn)性維護(hù)產(chǎn)生的不同變化區(qū)圖3-9:圖3-4中的活動(dòng)圖的改變分開(kāi)來(lái),各自選擇這兩種不同的測(cè)試用例。舉個(gè)例子,在圖3-9中,除了從edge(j,f)到edge(j,n)的變化,nodek同樣發(fā)生了變化。首先,我們選擇與nodek相關(guān)的測(cè)試用例t2,t3,t4。然后,我們選擇對(duì)應(yīng)edge(j,n)的測(cè)試用例t3,t4。最后,聯(lián)合對(duì)應(yīng)nodek和edge(j,n)的測(cè)試用例,測(cè)試用例包括t2,t3,t4。本章小結(jié)在這章中,我們首先討論了需求的可追溯性和它在回歸測(cè)試中的角色。接著,我們引入了活動(dòng)圖作為我們的基礎(chǔ)研究方向,提供了一個(gè)方法,去評(píng)估和記錄基于活動(dòng)圖的需求可跟蹤性。最后,我們定義和描述了基于活動(dòng)圖的回歸測(cè)試選擇技術(shù)。風(fēng)險(xiǎn)和風(fēng)險(xiǎn)分析引言風(fēng)險(xiǎn)指得是任何威脅到一個(gè)項(xiàng)目達(dá)到預(yù)期目標(biāo)的事情。特別是指這個(gè)事件的可能會(huì)發(fā)生,而發(fā)生后會(huì)導(dǎo)致一些損失[6]。軟件系統(tǒng)發(fā)布時(shí)可能包含很多bug。因?yàn)槟承╋L(fēng)險(xiǎn)導(dǎo)致的損失越嚴(yán)重,這些風(fēng)險(xiǎn)的級(jí)別越高。風(fēng)險(xiǎn)性測(cè)試的基本原理是對(duì)軟件系統(tǒng)作更高風(fēng)險(xiǎn)的測(cè)試以發(fā)現(xiàn)和找到一些潛在的錯(cuò)誤。風(fēng)險(xiǎn)性測(cè)試測(cè)試人員的任務(wù)是在產(chǎn)品中發(fā)現(xiàn)高優(yōu)先級(jí)的問(wèn)題。風(fēng)險(xiǎn)是問(wèn)題可能發(fā)生的衡量。問(wèn)題越可能發(fā)生,問(wèn)題發(fā)生后的影響越大,那么風(fēng)險(xiǎn)級(jí)別越高。風(fēng)險(xiǎn)是所有測(cè)試的動(dòng)力所在。從某種意義上說(shuō),沒(méi)有風(fēng)險(xiǎn)就沒(méi)有測(cè)試,就像沒(méi)有空氣就沒(méi)有生命一樣。風(fēng)險(xiǎn)分析McGregor指出[6]:風(fēng)險(xiǎn)分析是一個(gè)識(shí)別風(fēng)險(xiǎn)的過(guò)程,以與找出合理方法如何防止這些潛在的問(wèn)題變?yōu)楝F(xiàn)實(shí)。風(fēng)險(xiǎn)分析的結(jié)果是列出一系列風(fēng)險(xiǎn),根據(jù)風(fēng)險(xiǎn)級(jí)別排好,以便測(cè)試人員利用有限的資源做出優(yōu)先級(jí)先后的決定。風(fēng)險(xiǎn)分析方法包括3個(gè)任務(wù):識(shí)別出對(duì)應(yīng)系統(tǒng)每個(gè)功能或特征的風(fēng)險(xiǎn)。確定風(fēng)險(xiǎn)的數(shù)量。產(chǎn)生一個(gè)根據(jù)風(fēng)險(xiǎn)級(jí)別排列的風(fēng)險(xiǎn)列表,一一對(duì)應(yīng)系統(tǒng)功能或特征客觀的風(fēng)險(xiǎn)分析是為了識(shí)別出潛在的問(wèn)題,這些問(wèn)題可能會(huì)影響項(xiàng)目的價(jià)值或成果。為了達(dá)到這個(gè)目的,統(tǒng)計(jì)學(xué)模型會(huì)被用到,可能有時(shí)還會(huì)用到故障模式分析(最普遍的風(fēng)險(xiǎn)評(píng)估分析技術(shù)[23])。風(fēng)險(xiǎn)分析活動(dòng)Karolak在他1996年的書《SoftwareEngineeringRiskManagement》中定義了一種風(fēng)險(xiǎn)分析活動(dòng)的模式。Amland在這個(gè)模式基礎(chǔ)上增加了相關(guān)的因素[23],把測(cè)試過(guò)程中的風(fēng)險(xiǎn)性測(cè)試加入到Karolak的模式中。圖4.1描繪了風(fēng)險(xiǎn)分析活動(dòng)模式。橢圓的是Amland增加的部分。下面會(huì)討論每個(gè)活動(dòng)。風(fēng)險(xiǎn)識(shí)別:收集項(xiàng)目相關(guān)信息,將這些信息分類分析以確定在測(cè)試階段和未來(lái)產(chǎn)品階段潛在風(fēng)險(xiǎn)的數(shù)量。按照系統(tǒng)的功能和特征模塊等級(jí)評(píng)估風(fēng)險(xiǎn)。風(fēng)險(xiǎn)策略:識(shí)別和評(píng)估風(fēng)險(xiǎn)。根據(jù)系統(tǒng)的每個(gè)功能定義適當(dāng)?shù)臏y(cè)試級(jí)別。這為以后制定測(cè)試計(jì)劃做準(zhǔn)備。測(cè)試策略根據(jù)項(xiàng)目不同而變化。這主要根據(jù)開(kāi)發(fā)和測(cè)試項(xiàng)目的類型,開(kāi)發(fā)和用戶環(huán)境,以與其他質(zhì)量和商業(yè)需求不同決定。風(fēng)險(xiǎn)評(píng)估:確定潛在的發(fā)現(xiàn)在系統(tǒng)功能和特征上的影響。包括失敗的可能性以與失敗后對(duì)每個(gè)功能產(chǎn)生的不利后果。風(fēng)險(xiǎn)減輕:基于上面的一些行為,減輕和避免風(fēng)險(xiǎn)或者減少風(fēng)險(xiǎn)產(chǎn)生的影響。將測(cè)試關(guān)注在關(guān)鍵性的功能上是減少風(fēng)險(xiǎn)的一個(gè)有效方法。風(fēng)險(xiǎn)報(bào)告:傳統(tǒng)的報(bào)告信息包括錯(cuò)誤數(shù)目,每個(gè)功能對(duì)應(yīng)的錯(cuò)誤,錯(cuò)誤的分類,每個(gè)錯(cuò)誤測(cè)試花的時(shí)間等。風(fēng)險(xiǎn)預(yù)測(cè):根據(jù)先前已經(jīng)確定的風(fēng)險(xiǎn)的歷史和信息預(yù)測(cè)當(dāng)前風(fēng)險(xiǎn).。圖4.1風(fēng)險(xiǎn)分析活動(dòng)模式一個(gè)實(shí)用的風(fēng)險(xiǎn)模型風(fēng)險(xiǎn)因?yàn)轫?xiàng)目的不同而變化。也可能在同一個(gè)項(xiàng)目中因?yàn)閮?yōu)先級(jí)和開(kāi)發(fā)的策略的變化而變化。在面向?qū)ο箜?xiàng)目中,風(fēng)險(xiǎn)都是同項(xiàng)目的架構(gòu)特征,對(duì)象間復(fù)雜的交互,類的復(fù)雜行為和項(xiàng)目需求的變化相關(guān)的。我們的研究是基于需求規(guī)說(shuō)明的。我們不考慮風(fēng)險(xiǎn)和代碼之間的關(guān)系。Amland引入了專用名詞:風(fēng)險(xiǎn)敞口(RiskExposure)[23],介紹了一種簡(jiǎn)單的風(fēng)險(xiǎn)模型,這種風(fēng)險(xiǎn)模型僅僅需要兩個(gè)風(fēng)險(xiǎn)敞口的要素。我們?cè)谘芯恐惺褂眠@個(gè)模式。看下面:缺陷出現(xiàn)的可能性。Myers說(shuō)[18]:隨著被發(fā)現(xiàn)的錯(cuò)誤數(shù)量增加,沒(méi)被發(fā)現(xiàn)的錯(cuò)誤數(shù)量也可能增加。因?yàn)槊總€(gè)錯(cuò)誤都可能導(dǎo)致更多的錯(cuò)誤。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論