亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于路徑引導的回歸測試用例集擴增方法*

        2014-09-13 02:20:19殷鵬川賁可榮
        計算機工程與科學 2014年11期
        關鍵詞:測試用例測試數(shù)據(jù)調(diào)用

        殷鵬川,賁可榮

        (海軍工程大學計算機工程系, 湖北 武漢 430033)

        基于路徑引導的回歸測試用例集擴增方法*

        殷鵬川,賁可榮

        (海軍工程大學計算機工程系, 湖北 武漢 430033)

        為了全面測試演化軟件,回歸測試通常需要生成新的測試用例。concolic測試是一種沿著具體執(zhí)行路徑進行符號執(zhí)行的軟件驗證技術,通過生成測試數(shù)據(jù)來執(zhí)行程序的所有可行路徑?;貧w測試中,由于concolic測試關注于程序本身,沒有利用已有測試用例和軟件演化信息,導致生成大量無效測試數(shù)據(jù),浪費資源和時間。為解決此問題,提出一種基于路徑引導的回歸測試用例集擴增方法。該方法將目標路徑作為引導,根據(jù)軟件演化信息選擇有利于覆蓋目標路徑的測試用例,利用已有測試用例跳過重疊初始子路徑,對后續(xù)目標子路徑進行concolic測試并生成覆蓋目標路徑的測試數(shù)據(jù)。案例分析表明,本文方法相比傳統(tǒng)concolic測試,本方法在覆蓋程序可行路徑的同時,可有效減少concolic測試路徑,提高測試數(shù)據(jù)生成效率。

        回歸測試;concolic測試;測試用例集擴增;測試數(shù)據(jù)生成;路徑覆蓋

        1 引言

        回歸測試是指修改現(xiàn)有軟件后,對演化軟件重新測試,以確認新引入的修改沒有妨礙現(xiàn)有未修改部分的功能[1]。為了全面測試演化軟件,需要生成新的回歸測試用例。與傳統(tǒng)測試數(shù)據(jù)生成相比,回歸測試數(shù)據(jù)的生成更有針對性。測試用例集擴增通過利用已執(zhí)行測試用例信息和程序修改信息生成新測試用例集,覆蓋演化程序的修改部分,使新老用例集合滿足演化軟件的測試需求[2]。

        concolic測試技術[3]是一種結合了具體(concrete)執(zhí)行和符號(symbolic)執(zhí)行的自動化測試技術,可以最大化代碼覆蓋率并生成相應測試數(shù)據(jù)。但是,用于測試用例集擴增的傳統(tǒng)concolic測試,僅從程序本身出發(fā)而未利用程序修改信息作為引導,生成、執(zhí)行了大量沒有覆蓋目標路徑的測試輸入,浪費資源時間,測試數(shù)據(jù)生成效率低下??s小concolic測試范圍、提高測試用例集擴增效率對于暴露演化軟件問題、提高軟件質(zhì)量具有重要意義。

        2 研究背景

        出于簡化符號執(zhí)行的目的,Sen K等人[3]最早提出concolic測試,將具體執(zhí)行和符號執(zhí)行結合起來驗證程序,并將實現(xiàn)的CUTE工具應用于含有指針等復雜數(shù)據(jù)結構的C語言程序。在減少concolic測試路徑數(shù)量方面,崔展齊等人[4]將靜態(tài)分析得出的可疑語句作為目標指導concolic測試,安靖等人[5]提取重復的外部調(diào)用的函數(shù)摘要以替代展開測試,王欣等人[6]利用二進制補丁比對結果來指導concolic測試,以上三篇文獻均關注于對concolic測試本身的改進,而本文在改進的同時,將其應用于測試用例集擴增。

        本文相關的另一個領域是面向覆蓋的測試用例集擴增技術,其常用方法有遺傳算法和concolic測試。遺傳算法方面,張巖等人[7]將目標路徑分離出子路徑,固定子路徑對應的輸入分量,縮小遺傳操作范圍,但其只適用于可分路徑的程序;基于文獻[7],鞏敦衛(wèi)等人[8]根據(jù)已有測試數(shù)據(jù)路徑與目標路徑的相似度進一步縮小初始種群范圍。但相比concolic測試,遺傳算法占用資源開銷較多,效率不高[9]。concolic測試方面,Taneja K等人[10]通過避免探索不相關路徑以及優(yōu)先探索更有希望檢測到不同行為的路徑,減少了符號執(zhí)行次數(shù),但其沒有利用已執(zhí)行測試用例信息;Xu Z等人[11]通過重新執(zhí)行現(xiàn)有用例,去除與演化軟件修改部分無關的分支,減少了concolic測試路徑數(shù)量,但只實現(xiàn)了分支覆蓋。

        本文結合文獻[11]的優(yōu)勢,利用已有測試用例信息和程序修改信息,提出了一種基于路徑引導的回歸測試用例集擴增方法,縮小concolic測試范圍,實現(xiàn)對程序可行路徑的高效覆蓋。

        3 回歸測試用例集擴增算法

        建立回歸測試用例集擴增問題的模型。記原來的程序為P,修改后的程序為P′,P的測試用例集為T。已知P和P′的控制流圖CFG(Control Flow Graph),對此處的CFG有如下要求:(1)每個節(jié)點的出度不大于2,將switch等多分支判斷轉(zhuǎn)換成多個嵌套的if分支,且不考慮并行程序;(2)不存在回路,將while、for等循環(huán)(n為最大循環(huán)次數(shù))轉(zhuǎn)換為執(zhí)行循環(huán)0次、1次、2次、m次(m

        因此,本文提出基于路徑引導的回歸測試用例集擴增算法,如算法1所示,分為三個步驟:首先選擇可能發(fā)現(xiàn)演化軟件變化的測試用例(步驟1,調(diào)用3.1節(jié)的算法2);然后,找到目標路徑中與選擇后用例路徑的重疊部分,跳過其中初始子路徑(步驟2,調(diào)用3.2節(jié)的算法3);最后,采用concolic測試覆蓋目標路徑中剩余的子路徑并生成測試數(shù)據(jù)(步驟4,調(diào)用3.3節(jié)的算法4)。

        算法1基于路徑引導的回歸測試用例集擴增算法

        輸出:T′。

        步驟1調(diào)用SelectTC;

        步驟2調(diào)用SameSub;

        步驟4調(diào)用DirectedConcolic;

        步驟5end if

        3.1 選擇有效測試用例

        回歸測試中,T可以覆蓋P′的大部分路徑,對于P′中沒有覆蓋到的路徑,需要利用軟件演化信息,從T中選出有利于覆蓋目標路徑的測試用例,以提高生成覆蓋目標路徑的測試用例的效率。

        算法2測試用例選擇算法SelectTC

        輸入:T、CFGP、CFGP′。

        步驟1調(diào)用DejaVu分析CFGP和CFGP′,找到所有敏感邊eDangerous;

        步驟2重新執(zhí)行T;

        步驟5將T中經(jīng)過這些eDangerous的用例加入TiSelected;

        步驟6endfor

        3.2 處理重疊初始子路徑

        擴增測試用例集時,利用已執(zhí)行測試用例信息可有效減少無效用例的生成,提高測試用例集擴增效率。本節(jié)考察目標路徑中與用例路徑重疊的子路徑(多條邊的序列),利用經(jīng)過重疊初始子路徑的用例數(shù)據(jù),縮小concolic測試范圍,減少需要展開執(zhí)行的邊。

        算法3重疊初始子路徑處理算法SameSub

        步驟2foreachtj∈TiSelecteddo

        步驟3得到重疊子路徑

        步驟5找到重疊子路徑中經(jīng)過e1的子路徑,記錄該子路徑的有向邊數(shù)量;

        步驟6endif

        步驟7endfor

        步驟9endfor

        3.3 路徑引導concolic測試

        傳統(tǒng)concolic測試通過不斷取反路徑條件以期覆蓋CFG中所有可行路徑,但其沒有限制需要取反的路徑條件范圍?;貧w測試中,T可以覆蓋P′與P相同的部分,我們關注的是P′的修改部分能否被覆蓋,沒有必要取反所有路徑條件。因此,在已知目標路徑的前提下,僅需將目標路徑作為引導,縮小需要取反的路徑條件范圍,減少約束求解器的調(diào)用次數(shù)。

        傳統(tǒng)concolic測試流程如下:

        (1)將一組特定的變量選為輸入變量,符號執(zhí)行過程中,這些變量將被視為符號變量。所有其他變量將被視為具體的值。

        (2)插裝待測程序,以便在具體執(zhí)行的同時記錄符號變量值和路徑條件。

        (3)選擇任意測試數(shù)據(jù)開始。

        (4)執(zhí)行程序。

        (5)沿該路徑重新符號執(zhí)行程序,生成了一套符號約束(包括路徑條件)。

        (6)取反最后一個尚未取反的路徑條件,以訪問一個新的執(zhí)行路徑。如果不存在這樣的路徑條件,算法終止。

        (7)調(diào)用約束求解器生成新的測試數(shù)據(jù)。如果沒有測試數(shù)據(jù)能夠滿足約束條件,則返回(6),以嘗試下一個執(zhí)行路徑。

        (8)返回(4)。

        算法4路徑引導concolic測試算法DirectedConcolic

        步驟5取反ej源節(jié)點的路徑條件,調(diào)用約束求解器生成新的測試數(shù)據(jù)tGenerated;

        步驟6if沒有測試數(shù)據(jù)能夠滿足約束條件

        步驟8endif

        步驟10endif

        步驟11endfor

        步驟13endfor

        需要注意的是,算法4每完成一次循環(huán)得到計算結果,算法2和算法3就可以利用這一步結果優(yōu)化下一步的計算,即將算法4最新生成的用例加入到算法2和算法3的用例處理中,可以進一步縮小concolic測試范圍,節(jié)省開銷。

        4 實例分析

        為了驗證本文方法的有效性,采用軟件測試中常用的三角形分類程序作為基準程序P。對比本文方法與傳統(tǒng)concolic測試,以生成覆蓋所有可行路徑的測試數(shù)據(jù)為終止條件,將整個過程中concolic測試取反次數(shù)(或者是concolic測試路徑數(shù)量)作為評價指標,取反次數(shù)越少,則調(diào)用約束求解器次數(shù)越少,concolic測試所需開銷也就越小。

        分析P的CFG,如圖1a所示,輸入三條邊長,輸出“不是三角形”(n2)、“等邊三角形”(n4)、“等腰三角形”(n6)、“不規(guī)則三角形”(n7),分支節(jié)點n1、n3、n5分別判斷是否是三角形、等邊三角形、等腰三角形。修改后程序P′的變化之處如圖1b所示:分支節(jié)點n6、n9、n7、n11分別判斷是否是直角三角形、銳角三角形、直角三角形、銳角三角形。覆蓋P中所有路徑的測試用例t1=(1,2,3),t2=(3,3,3),t3=(2,2,3),t4=(3,4,5)。

        Figure 1 Control flow graphs of the program before and after modification圖1 程序修改前后的控制流圖

        然后使用傳統(tǒng)concolic測試方法。根據(jù)3.3節(jié)給出的傳統(tǒng)concolic測試流程,可以得到concolic測試取反次數(shù)為8。

        通過上述分析知道,在縮小concolic測試范圍方面,本文方法優(yōu)于傳統(tǒng)concolic測試,在覆蓋程序可行路徑的同時,可以有效減少concolic測試路徑數(shù)量。

        5 結束語

        針對回歸測試中concolic測試生成測試數(shù)據(jù)時缺乏指導,導致生成和執(zhí)行大量不能覆蓋目標路徑的測試數(shù)據(jù)、消耗大量測試資源的問題,本文提出一種基于路徑引導的回歸測試用例集擴增方法。以目標路徑為引導,測試經(jīng)過了敏感邊的測試用例,跳過最長的重疊初始子路徑,采用concolic測試覆蓋目標路徑中剩余的子路徑并生成測試數(shù)據(jù),縮小concolic測試范圍,提高測試數(shù)據(jù)生成效率。

        盡管本文方法有效提高了concolic測試用例集擴增效率,但受限于concolic測試采用的約束求解器,只對常規(guī)數(shù)據(jù)類型輸入變量的程序才有明顯的優(yōu)越性。實際軟件可能含有結構體等數(shù)據(jù)類型復雜的輸入變量,如何擴大適用范圍是需要進一步研究的問題。

        [1]YooS,HarmanM.Regressiontestingminimization,selectionandprioritization:Asurvey[J].SoftwareTesting,VerificationandReliability,2012,22(2):67-120.

        [2]ZhangZhi-yi,ChenZhen-yu,XuBao-wen,etal.Researchprogressontestcaseevolution[J].JournalofSoftware,2013,24(4):663-674. (inChinese)

        [3]SenK,MarinovD,AghaG.CUTE:AconcolicunittestingengineforC[C]∥Procofthe13thACMSIGSOFTInternationalSymposiumonFoundationsofSoftwareEngineering,2005:263-272.

        [4]CuiZhan-qi,WangLin-zhang,LiXuan-dong.Target-directedconcolictesting[J].ChineseJournalofComputers,2011,34(6):953-964. (inChinese)

        [5]AnJing,ZhongJin-xin,WeiGeng-yu,etal.Applicationsoffunctionsummaryinconcolictesting[J].JournalofBeijingUniversityofPostsandTelecommunications, 2012, 35(1):24-27. (inChinese)

        [6]WangXin,GuoTao,DongGuo-wei,etal.Concolictestingbasedonpatchcomparisons[J].JournalofTsinghuaUniversity(Science&Technology), 2013, 53(12):1737-1742.(inChinese)

        [7]ZhangYan,GongDun-wei.Evolutionarygenerationoftestdataforpathcoveragebasedonautomaticreductionofsearchspace[J].ChineseJournalofElectronics,2012, 40(5):1011-1016. (inChinese)

        [8]GongDun-wei,RenLi-na.Evolutionarygenerationofregressiontestdata[J].ChineseJournalofComputers, 2014, 37(3):489-499. (inChinese)

        [9]XuZ,KimY,KimM,etal.Directedtestsuiteaugmentation:Techniquesandtradeoffs[C]∥Procofthe18thACMSIGSOFTInternationalSymposiumonFoundationsofSoftwareEngineering,2010:257-266.

        [10] Taneja K,Xie T,Tillmann N,et al.Guided path exploration for regression test generation[C]∥Proc of the 31st International Conference on Software Engineering-Companion, 2009:311-314.

        [11] Xu Z,Rothermel G.Directed test suite augmentation[C]∥Proc of Asia-Pacific Software Engineering Conference,2009:406-413.

        [12] Pressman R S.Software engineering:A practitioner’s approach[M].7th ed.New York:McGraw Hill Higher Education, 2009.

        [13] Rothermel G,Harrold M J.A safe,efficient regression test selection technique[J].ACM Transactions on Software Engineering and Methodology,1997,6(2):173-210.

        附中文參考文獻:

        [2] 張智軼, 陳振宇, 徐寶文, 等. 測試用例演化研究進展[J]. 軟件學報, 2013, 24(4):663-674.

        [4] 崔展齊, 王林章, 李宣東. 一種目標制導的混合執(zhí)行測試方法[J]. 計算機學報, 2011, 34(6):953-964.

        [5] 安靖, 鐘金鑫, 魏更宇, 等. 函數(shù)摘要在Concolic測試方法中的應用[J]. 北京郵電大學學報, 2012, 35(1):24-27.

        [6] 王欣, 郭濤, 董國偉, 等. 基于補丁比對的Concolic測試方法[J]. 清華大學學報(自然科學版), 2013, 53(12):1737-1742.

        [7] 張巖, 鞏敦衛(wèi). 基于搜索空間自動縮減的路徑覆蓋測試數(shù)據(jù)進化生成[J]. 電子學報, 2012, 40(5):1011-1016.

        [8] 鞏敦衛(wèi), 任麗娜. 回歸測試數(shù)據(jù)進化生成[J]. 計算機學報, 2014, 37(3):489-499.

        YINPeng-chuan,born in 1990,MS candidate,his research interest includes software quality assurance.

        Path-directedregressiontestsuiteaugmentation

        YIN Peng-chuan,BEN Ke-rong

        (Department of Computer Engineering,Naval University of Engineering,Wuhan 430033,China)

        To test the evolution software fully,new test cases need to be generated in regression testing typically.concolic testing is a hybrid software verification technique that performs symbolic execution along a concrete execution path,and can perform all the feasible paths of a program by generating test data.Concolic testing only focuses on the program under test with both existing test cases and software evolution information unexploited in regression testing, which results in a large number of invalid test data generation,wasting resources and time.To address this problem,a path-directed regression test suite augmentation approach is proposed. With the guidance of target paths,the approach selects the test cases conducive to cover target paths according to software evolution information,skips initial overlapping sub-paths by using the existing test cases,takes the follow-up target sub-path to guide concolic testing and generates test data covering the target paths.Case analysis demonstrates that the proposed approach can effectively reduce concolic testing paths in comparison to traditional concolic testing, and improves the efficiency of test data generation while covering feasible paths of the program.

        regression testing;concolic testing;test suite augmentation;test data generation;path coverage

        1007-130X(2014)11-2159-05

        2014-07-10;

        :2014-09-10

        國家自然科學基金資助項目(61272108)

        TP311.55

        :A

        10.3969/j.issn.1007-130X.2014.11.018

        殷鵬川(1990),男,湖北孝感人,碩士生,研究方向為軟件質(zhì)量保證。E-mail:ypciehnnu@163.com

        通信地址:430033 湖北省武漢市解放大道717號233信箱

        Address:Mail Box 233,717 Jiefang Avenue,Wuhan 430033,Hubei,P.R.China

        猜你喜歡
        測試用例測試數(shù)據(jù)調(diào)用
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
        核電項目物項調(diào)用管理的應用研究
        測試數(shù)據(jù)管理系統(tǒng)設計與實現(xiàn)
        LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于混合遺傳算法的回歸測試用例集最小化研究
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
        基于自適應粒子群優(yōu)化算法的測試數(shù)據(jù)擴增方法
        計算機應用(2016年9期)2016-11-01 17:57:12
        空間co-location挖掘模式在學生體能測試數(shù)據(jù)中的應用
        體育科技(2016年2期)2016-02-28 17:06:21
        基于依賴結構的測試用例優(yōu)先級技術
        利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
        日本不卡视频一区二区三区| AV永久天堂网| 中文字幕无码免费久久| 亚洲中文字幕第15页| 国产综合色在线视频区| 装睡被陌生人摸出水好爽| 国产成人啪精品视频免费网| 蜜桃成熟时日本一区二区| 欧洲熟妇色xxxx欧美老妇性| 久久久国产一区二区三区四区小说 | 加勒比hezyo黑人专区| 夫妇交换刺激做爰视频| 99精品国产第一福利网站 | 人妻中文字幕在线中文字幕| 三年片大全在线观看免费观看大全| 欧美中文字幕在线| 丰满人妻一区二区三区免费| 久久精品色福利熟妇丰满人妻91| 一本久久伊人热热精品中文字幕 | 亚洲色图视频在线观看,| 亚洲精品中文字幕一二三区| 高潮迭起av乳颜射后入| 国产精品久久久久…| 亚洲乱码中文字幕第一页| 精品露脸国产偷人在视频| 日韩精品无码一区二区中文字幕| 五月天婷婷一区二区三区久久 | 日本骚色老妇视频网站| 黄片视频免费在线观看国产| 男同gay毛片免费可播放| 亚洲国产一区二区三区最新| 一区二区三区在线观看人妖| 无码国内精品久久人妻| 免费人成黄页在线观看视频国产| 91在线观看国产自拍| 国精产品一区一区三区有限在线 | 久久精品中文闷骚内射| 国模精品无码一区二区二区| 国产熟女精品一区二区| 好吊妞视频这里有精品| 永久免费av无码网站性色av|