欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于修改影響分析的回歸測(cè)試用例生成方法

文檔序號(hào):6374264閱讀:265來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種基于修改影響分析的回歸測(cè)試用例生成方法
技術(shù)領(lǐng)域
本發(fā)明提出了一種新型的回歸測(cè)試用例生成方法,主要是利用修改影響分析評(píng)估軟件修改所帶來(lái)的影響進(jìn)行回歸測(cè)試用例的生成,屬于軟件測(cè)試中回歸測(cè)試用例生成領(lǐng)域。
背景技術(shù)
軟件系統(tǒng)為了滿(mǎn)足人們的需求、性能的改進(jìn)、功能的增強(qiáng)或者處理系統(tǒng)中發(fā)現(xiàn)的故障等等,都可能需要對(duì)系統(tǒng)進(jìn)行相應(yīng)的修改。在現(xiàn)代軟件系統(tǒng)的生命周期內(nèi),軟件缺陷修復(fù),功能增強(qiáng),性能改進(jìn),需求增加,運(yùn)行環(huán)境改變等均要求軟件系統(tǒng)具有較強(qiáng)的演化能力,從而要求軟件工程人員能夠快速適應(yīng)改變,減少軟件維護(hù)的代價(jià)。軟件維護(hù)活動(dòng)的核心是進(jìn)行軟件修改。由于修改肯定會(huì)對(duì)軟件的其他部分造成一些潛在影響,從而帶來(lái)軟件的不一致。所以在對(duì)軟件進(jìn)行修改之后,需要對(duì)軟件系統(tǒng)進(jìn)行再測(cè)試以保證修改之后的軟件系統(tǒng)仍然是安全的,這個(gè)過(guò)程就是回歸測(cè)試。 在對(duì)軟件實(shí)施一系列的修改過(guò)程中,可以得到此次軟件維護(hù)活動(dòng)的修改集合。在修改過(guò)程中,一些修改又可能給系統(tǒng)帶來(lái)新的影響和波動(dòng),這就需要對(duì)這些修改能傳播到的范圍進(jìn)行再次檢查,確認(rèn)是否需要繼續(xù)實(shí)施修改或者進(jìn)行二次修改。這樣,修改對(duì)軟件系統(tǒng)影響范圍內(nèi)的內(nèi)容就構(gòu)成了此次修改所帶來(lái)的影響集合,這個(gè)過(guò)程就是修改影響分析。為了驗(yàn)證修改之后軟件是否滿(mǎn)足一致性和正確性,需要對(duì)軟件系統(tǒng)進(jìn)行再測(cè)試,也就是回歸測(cè)試。在這個(gè)過(guò)程中,首先需要產(chǎn)生回歸測(cè)試用例集。測(cè)試用例集需要滿(mǎn)足的基本條件是測(cè)試用例在回歸測(cè)試的時(shí)候能夠覆蓋軟件修改的部分,同時(shí)也需要覆蓋修改對(duì)軟件造成影響的部分。這樣,回歸測(cè)試才能夠較充分地驗(yàn)證修改后的軟件系統(tǒng)的一致性和正確性。為了便于對(duì)軟件進(jìn)行修改影響分析,需要將源代碼抽象成一定層次的抽象模型,提取源代碼的基本信息構(gòu)造方法調(diào)用圖是對(duì)程序建模常用的方法。方法調(diào)用圖能夠有效地表示程序控制流關(guān)系,且抽象粒度適中、便于程序分析和軟件工程人員的理解。修改影響分析可以用在軟件維護(hù)過(guò)程中修改方案的評(píng)估和軟件實(shí)施修改后的影響傳播分析,本發(fā)明主要利用修改影響分析對(duì)軟件修改帶來(lái)的影響進(jìn)行評(píng)估,然后利用修改影響分析的結(jié)果進(jìn)行回歸測(cè)試用例生成,使得生成的回歸測(cè)試用例集合能夠覆蓋修改所帶來(lái)的影響范圍,從而驗(yàn)證修改后的軟件的正確性和一致性。

發(fā)明內(nèi)容
本發(fā)明的目的在于提出了一種基于修改影響分析的回歸測(cè)試用例生成方法,該方法利用修改影響分析計(jì)算得到影響集并根據(jù)測(cè)試路徑覆蓋規(guī)則高效地生成測(cè)試用例,用盡量少的測(cè)試用例覆蓋盡量多的修改影響范圍。實(shí)現(xiàn)上述目的,本發(fā)明采用技術(shù)方案如下一種基于修改影響分析的回歸測(cè)試用例生成方法,包括如下步驟I)將源代碼轉(zhuǎn)換成方法調(diào)用圖,通過(guò)特征定位將程序中的修改信息映射到方法調(diào)用圖中的對(duì)應(yīng)元素,映射的元素組成的修改集將作為修改影響分析的輸入;2)在方法調(diào)用圖中進(jìn)行修改影響分析,得到影響集;3)利用修改集和影響集構(gòu)造判定表,判定表的定義為T(mén)S={ □ I DG CSXIS},其中CS為修改集、IS為影響集,□為CS和IS笛卡爾積中的元素;修改集和影響集中的元素都是基于方法的,故判定表中的每ー項(xiàng)表示了影響集中的方法是否受到了被修改的方法的影響;4)利用判定表生成測(cè)試路徑集合,方法如下在方法調(diào)用圖中選取CS(j)和IS(k)間的可達(dá)路徑,構(gòu)造測(cè)試路徑集合Test-Path-Set,測(cè)試路徑集合是由CS(j)和IS (k)之間所有可達(dá)路徑的并集構(gòu)成,若無(wú)法找到判定表中第i行CS(j)和IS(k)之間的可達(dá)路徑,那么將判定表該行刪除;其中,對(duì)于判定表中的第i行,基本覆蓋條件TS⑴={(CS (j),IS (k)) I彡j彡I CS I,I彡k彡IIS I},其中CS(j)為判定表第i行對(duì)應(yīng)的修改集中的元素,IS(k)為判定表第i行對(duì)應(yīng)的影響集中 的元素;5)若測(cè)試路徑集合中的路徑的第一個(gè)元素在方法調(diào)用圖中的出度為I或0,且該路徑是其他路徑的子路徑,即該路徑包含在其他路徑中,那么就將該路徑從測(cè)試路徑集合中刪除,從而得到測(cè)試路徑約簡(jiǎn)后的集合;6)利用測(cè)試路徑約簡(jiǎn)集合生成測(cè)試用例6. I)對(duì)于某ー測(cè)試路徑 test-path={v0, V1, V2, vk},其中 test-path 為方法集合,對(duì)該測(cè)試路徑的每個(gè)方法單獨(dú)進(jìn)行測(cè)試,得到該方法的輸入域劃分和對(duì)應(yīng)的輸出域Unput(Vi), output (Vi)} (0彡i彡k);由于vi+1的輸入域和Vi的輸出域相關(guān)聯(lián),那么由vi+1的輸入域和Vi的輸出域關(guān)聯(lián)分析逆推得到Vi的輸入域,依次逆推就可以得到%的輸出域;6. 2)以方法V。的輸入作為測(cè)試用例就能對(duì)測(cè)試路徑test-path= {vQ, V1, V2, . . vj進(jìn)行覆蓋測(cè)試;最后,對(duì)每條測(cè)試路徑中的第一個(gè)方法按步驟6. I)與步驟6. 2)的方法產(chǎn)生測(cè)試輸入,就得到了測(cè)試用例集。有益效果本發(fā)明提出了一種基于修改影響分析的回歸測(cè)試用例生成方法,在方法層次上進(jìn)行修改影響分析,并利用路徑覆蓋判定生成測(cè)試用例集,主要有以下ー些優(yōu)點(diǎn)(I)基于方法層次的修改影響分析能有效地表示程序的修改信息和程序受到潛在影響的部分。在計(jì)算影響集的時(shí)候,考慮了多處修改的關(guān)聯(lián)關(guān)系,這使得影響集的結(jié)果更加精確;(2)利用修改影響分析過(guò)程中的修改集和影響集生成的判定表有效地表示了回歸測(cè)試用例生成的基本覆蓋條件。在測(cè)試用例生成的過(guò)程中,判定表使得測(cè)試用例生成簡(jiǎn)單、聞效;(3)利用判定表生成測(cè)試路徑集合,便于在方法層次上進(jìn)行回歸測(cè)試,同時(shí)也使得測(cè)試用例生成更加便捷。測(cè)試路徑集合完全覆蓋了受到修改影響的方法,使得測(cè)試能夠更加充分。


圖I是基于修改影響分析的回歸測(cè)試用例生成框架。圖2是基于修改影響分析的回歸測(cè)試用例生成的一般過(guò)程。圖3是修改影響分析法的一般過(guò)程。圖4是利用修改影響分析的結(jié)果構(gòu)造判定表生成測(cè)試用例的過(guò)程示意圖。圖5是本發(fā)明實(shí)施例中程序的方法調(diào)用圖示例。圖6是本發(fā)明實(shí)施例中程序修改操作示例。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
修改影響分析主要的任務(wù)是將修改后的程序和原程序進(jìn)行比較得到修改信息,其中主要包括源代碼的添加、刪除、替換等操作,然后對(duì)原程序進(jìn)行影響分析并計(jì)算得到程序受影響的部分。在回歸測(cè)試階段,需要重新生成一些測(cè)試用例來(lái)覆蓋程序修改后功能更改或新増加特性的部分,同時(shí)也應(yīng)該覆蓋原程序中受到影響的部分,使得修改后的程序和原程序的功能和行為能夠保持一致。本發(fā)明主要利用修改影響分析的結(jié)果生成判定表,并利用判定表來(lái)尋找最優(yōu)覆蓋路徑來(lái)生成測(cè)試用例,使得回歸測(cè)試用例生成簡(jiǎn)單高效。圖I給出了基于修改影響分析的回歸測(cè)試用例生成的一般過(guò)程示意圖。這里的回歸測(cè)試用例生成主要由兩部分組成修改影響分析和測(cè)試路徑覆蓋分析。修改影響分析是根據(jù)原程序修改點(diǎn)分析程序中受到修改影響的部分。在程序修改信息不知的情況下,通常將原程序和修改后的程序進(jìn)行比較,利用語(yǔ)句或控制流等進(jìn)行差異分析。在本發(fā)明中,程序修改信息通過(guò)軟件特征定位方法獲得,在實(shí)際軟件維護(hù)中,修改信息也可以通過(guò)版本控制等手段獲知。測(cè)試路徑覆蓋分析考慮如何生成測(cè)試用例將程序修改點(diǎn)及其受到影響部分進(jìn)行覆蓋。這里,如果我們識(shí)別出的程序修改信息是方法,那么就要對(duì)相應(yīng)的方法進(jìn)行覆蓋分析,才能得到需要重新運(yùn)行的測(cè)試用例。圖4給出了利用修改影響分析后的結(jié)果選取測(cè)試路徑進(jìn)行測(cè)試路徑覆蓋分析的過(guò)程示意圖。結(jié)合圖2中的回歸測(cè)試用例生成流程,下面對(duì)流程中的步驟給予具體的說(shuō)明。I)通過(guò)特征定位技術(shù)將程序的修改點(diǎn)定位到程序的方法中。對(duì)程序源代碼來(lái)講,一般不利于軟件開(kāi)發(fā)人員理解和分析。所以需要先對(duì)源代碼進(jìn)行轉(zhuǎn)換并建模成人們易于理解的模型,常見(jiàn)的有類(lèi)與方法之間的依賴(lài)圖或者方法調(diào)用圖模型。本發(fā)明在修改影響分析中使用的模型是方法調(diào)用圖。方法調(diào)用圖能清楚地描述程序的控制轉(zhuǎn)移流程,以及方法之間的控制依賴(lài)關(guān)系,便于理解和分析程序。特征定位應(yīng)用到修改影響分析中就是將程序的修改點(diǎn)映射到模型中的元素上,這樣就便于后面要進(jìn)行的修改影響分析。在本發(fā)明中,由于所使用的抽象模型為方法調(diào)用圖,所以將程序的修改信息映射到方法中得到的方法集合即為程序的修改集(Change Set, CS)。2)利用修改影響分析技術(shù)計(jì)算程序受到修改影響的部分。修改影響分析的目的是分析程序受到修改影響的程度。附圖3是修改影響分析的一般過(guò)程,給出程序的修改集,通過(guò)修改影響分析得到了程序潛在受到影響的部分也就是影響集(Impact Set,IS)。本發(fā)明使用的修改影響分析技術(shù)是基于方法調(diào)用圖的,修改影響分析的輸入和輸出均是方法集合。修改集中的元素可以很方便的標(biāo)記到方法調(diào)用圖中,通過(guò)影響分析算法在調(diào)用圖中進(jìn)行向上可達(dá)遍歷得到的方法集合就是影響集。3)利用第I)和第2)步中得到修改集和影響集構(gòu)造判定表。影響集(IS)是修改影響分析在修改集(CS)的基礎(chǔ)上計(jì)算得到的。判定表的定義為T(mén)S={ロ I DG CSXIS}.判定表中包括了修改集中每個(gè)修改元素對(duì)影響集中每個(gè)受影響元素的影響關(guān)系。由于修改集和影響集中的元素都是基于方法粒度的,故判定表中的每ー項(xiàng)表示了影響集中的方法是否受到了被修改的方法的影響。4)利用判定表生成測(cè)試路徑集合,對(duì)程序受到修改影響的內(nèi)容進(jìn)行覆蓋判定。判定表中的每一行為ー個(gè)測(cè)試用例基本覆蓋條件,代表一個(gè)測(cè)試用例能夠覆蓋最少方法的情況,即該測(cè)試用例至少覆蓋ー個(gè)被修改的方法和它所能影響的ー個(gè)方法。在下面實(shí)施例中的表I是ー個(gè)判定表的例子。對(duì)判定表中的第i行,基本覆蓋條件TS(i) = {(CS(j),IS(k)) |1彡j彡|CS|,I彡k彡 IS I},其中CS為修改集,CS (j)為判定表第i行對(duì)應(yīng)的修改集中的元素,IS為影響集,IS (k)
為判定表第i行對(duì)應(yīng)的影響集中的元素。在方法調(diào)用圖中選取CS (j)和IS(k)間的可達(dá)路徑,構(gòu)造測(cè)試路徑集合Test-Path-Set。測(cè)試路徑集合時(shí)由CS(j)和IS(k)之間所有可達(dá)路徑的并集構(gòu)成。若無(wú)法找到判定表中第i行CS(j)和IS(k)之間的可達(dá)路徑,那么需要將判定表該行刪除。利用判定表生成測(cè)試路徑,有一定的順序,首先需要先考慮修改集中修改操作為“修改”的元素,然后是修改操作為“增加”的元素,最后是修改操作為“刪除”的元素,因?yàn)椹`個(gè)方法刪除后,就不會(huì)再對(duì)該方法進(jìn)行測(cè)試了。5)刪除測(cè)試路徑集合中的冗余測(cè)試路徑。由于許多方法都被包含在測(cè)試路徑集合Test-Path-Set中的多條測(cè)試路徑中,對(duì)于測(cè)試路徑集合中的路徑的第一個(gè)元素%,若元素Vtl在調(diào)用圖中的出度為I或0,且該路徑是其他路徑的子路徑,即該路徑包含在其他路徑中,那么就將該路徑從測(cè)試路徑集合中刪除。6)生成測(cè)試用例集合。對(duì)于某ー測(cè)試路徑test-path= {v0,V1, V2,. . vk},其中 V0 G IS, vk G CS。在單元測(cè)試的時(shí)候,由于對(duì)每個(gè)方法單獨(dú)進(jìn)行了測(cè)試,知道了該方法的輸入域劃分和對(duì)應(yīng)的輸出域{input (Vi), output (Vi)I (0彡i彡k)。vi+1的輸入域和Vi的輸出域相關(guān)聯(lián),由vi+1的輸入域和Vi的輸出域關(guān)聯(lián)分析逆推得到Vi的輸入域,依次逆推就可以得到V。的輸出域。這樣,以方法vO的輸入作為測(cè)試用例就能對(duì)測(cè)試路徑Ivtl, V1, V2,. . vk}進(jìn)行覆蓋測(cè)試。對(duì)每條測(cè)試路徑中的第一個(gè)方法按上面所述的步驟產(chǎn)生測(cè)試輸入,就得到了測(cè)試用例集。其中概念測(cè)試用例集TestSuit=It 11 G input (v0) A V0 G test-path A test-path GTest-Path-Set}。實(shí)施例為了方便描述,我們假定有如下簡(jiǎn)化的應(yīng)用實(shí)例假定程序P 中有 13 個(gè)方法,分別是{Ml, M2, M3, M4, M5, M6, M7, M8, M9, M10, Mil, M12,M13}。程序P的方法調(diào)用圖見(jiàn)附圖5。當(dāng)對(duì)程序?qū)嵤┬薷暮螅ㄟ^(guò)特征定位將每個(gè)修改操作定位到方法中得到修改集Change Set= {M2, M3, M14},其中包括了方法的修改、刪除和增加。本例中方法M2被修改,方法M3被刪除,添加了方法M14,修改后的方法調(diào)用圖見(jiàn)附圖6。通過(guò)修改影響分析技術(shù)(已公知技術(shù)不進(jìn)一步描述)計(jì)算得到影響集Impact Set= {Ml, M4, M5, M6, M7, Mil, M13}。現(xiàn)在利用修改集和影響集生成如下的判定表表I :程序P的判定表
權(quán)利要求
1.一種基于修改影響分析的回歸測(cè)試用例生成方法,其特征在于,包括如下步驟 1)將源代碼轉(zhuǎn)換成方法調(diào)用圖,通過(guò)特征定位將程序中的修改信息映射到方法調(diào)用圖中的對(duì)應(yīng)元素,映射的元素組成的修改集將作為修改影響分析的輸入; 2)在方法調(diào)用圖中進(jìn)行修改影響分析,得到影響集; 3)利用修改集和影響集構(gòu)造判定表,判定表的定義為T(mén)S={□ I De CSXIS},其中CS為修改集、IS為影響集,□為CS和IS笛卡爾積中的元素;修改集和影響集中的元素都是基于方法的,故判定表中的每一項(xiàng)表示了影響集中的方法是否受到了被修改的方法的影響; 4)利用判定表生成測(cè)試路徑集合,方法如下在方法調(diào)用圖中選取CS(j)和IS(k)間的可達(dá)路徑,構(gòu)造測(cè)試路徑集合Test-Path-Set,測(cè)試路徑集合是由CS(j)和IS (k)之間所有可達(dá)路徑的并集構(gòu)成,若無(wú)法找到判定表中第i行CS(j)和IS(k)之間的可達(dá)路徑,那么將判定表該行刪除;其中,對(duì)于判定表中的第i行,基本覆蓋條件TS⑴={(CS (j),IS (k)) I彡j^ |CS|, |15|},其中05(」)為判定表第i行對(duì)應(yīng)的修改集中的元素,IS (k)為判定表第i行對(duì)應(yīng)的影響集中的元素; 5)若測(cè)試路徑集合中的路徑的第一個(gè)元素在方法調(diào)用圖中的出度為I或O,且該路徑是其他路徑的子路徑,即該路徑包含在其他路徑中,那么就將該路徑從測(cè)試路徑集合中刪除,從而得到測(cè)試路徑約簡(jiǎn)后的集合; 6)利用測(cè)試路徑約簡(jiǎn)集合生成測(cè)試用例。
2.根據(jù)權(quán)利要求I所述的回歸測(cè)試用例生成方法,其特征在于,所述步驟6)利用測(cè)試路徑約簡(jiǎn)集合生成測(cè)試用例,具體實(shí)現(xiàn)步驟如下 . 6.I)對(duì)于某一測(cè)試路徑 test-path= {v0, V1, v2, · · vk},其中 test-path 為方法集合,對(duì)該測(cè)試路徑的每個(gè)方法單獨(dú)進(jìn)行測(cè)試,得到該方法的輸入域劃分和對(duì)應(yīng)的輸出域Unput(Vi), output (Vi)} (O彡i彡k);由于vi+1的輸入域和Vi的輸出域相關(guān)聯(lián),那么由vi+1的輸入域和Vi的輸出域關(guān)聯(lián)分析逆推得到Vi的輸入域,依次逆推就可以得到%的輸出域; .6.2)以方法V。的輸入作為測(cè)試用例就能對(duì)測(cè)試路徑test-path= {v。,V1, V2, . . vk}進(jìn)行覆蓋測(cè)試; .6.3)對(duì)每條測(cè)試路徑中的第一個(gè)方法按步驟6. I)與步驟6. 2)的方法產(chǎn)生測(cè)試輸入,就得到了測(cè)試用例集。
全文摘要
本發(fā)明提出了一種基于修改影響分析的回歸測(cè)試用例生成方法。首先對(duì)程序建模構(gòu)造出源代碼的中間表示,理解源代碼中各元素之間的依賴(lài)關(guān)系,輔助程序理解;然后對(duì)程序的修改信息,利用特征定位技術(shù)識(shí)別修改點(diǎn)在源代碼中對(duì)應(yīng)的修改位置,并將該位置與源代碼的中間表示一一對(duì)應(yīng)起來(lái)從而得到修改集;在源代碼的中間表示和修改集的基礎(chǔ)之上,通過(guò)修改影響分析技術(shù)計(jì)算得到影響集;進(jìn)而利用修改集和影響集生成回歸測(cè)試用例的判定表;最后利用判定表生成測(cè)試路徑集,并將測(cè)試路徑集約簡(jiǎn),將測(cè)試路徑中的輸入作為測(cè)試用例,最終得到一個(gè)能充分覆蓋修改給程序帶來(lái)的影響的測(cè)試用例集合。
文檔編號(hào)G06F11/36GK102831056SQ20121027034
公開(kāi)日2012年12月19日 申請(qǐng)日期2012年7月31日 優(yōu)先權(quán)日2012年7月31日
發(fā)明者李必信, 張前東, 孫小兵, 陶傳奇, 耿國(guó)清, 蘭陽(yáng)陽(yáng) 申請(qǐng)人:東南大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
蓝田县| 镇远县| 茂名市| 千阳县| 辰溪县| 宿松县| 内黄县| 从化市| 衡东县| 钦州市| 曲松县| 琼结县| 桐庐县| 毕节市| 息烽县| 马山县| 白水县| 乌拉特后旗| 弋阳县| 静乐县| 馆陶县| 文山县| 永修县| 阿荣旗| 年辖:市辖区| 友谊县| 临清市| 西青区| 张家川| 南华县| 安塞县| 晋江市| 姜堰市| 炎陵县| 吉木乃县| 玛纳斯县| 南木林县| 平泉县| 商河县| 台南县| 馆陶县|