两两组合覆盖测试用例生成分析及优化.docx
- 文档编号:8838556
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:78
- 大小:1.81MB
两两组合覆盖测试用例生成分析及优化.docx
《两两组合覆盖测试用例生成分析及优化.docx》由会员分享,可在线阅读,更多相关《两两组合覆盖测试用例生成分析及优化.docx(78页珍藏版)》请在冰豆网上搜索。
两两组合覆盖测试用例生成分析及优化
两两组合覆盖测试用例生成分析及优化
上海师范大学硕士学位论文两两组合覆盖测试用例生成研究及优化
摘要
软件测试作为软件开发过程中的重要环节,是保证软件质量,提高软件可靠性的重要手段。
由于计算机技术的不断发展,软件的规模和复杂度的不断提高,软件测试也渐渐成为一项耗费大量资源的活动。
由此,用最少的代价达到最大的测试效果是软件测试中最重要的问题之一。
经验以及实践表明,两两组合覆盖测试是对各种软件系统测试的一个实际而有效的方法。
目前国内外对两两组合覆盖测试用例生成方法已有了广泛的研究,主要有以下六种算法:
正交拉丁方算法、AETG算法、口0算法、williams算法、PSST算法和K曲ayashi算法。
P0算法以参数为对象,在每次扩展时都能保持测试用例的最优化,具有很好的扩展性。
虽然IPO算法有不少优势,但是其还存在以下几个影响性能的问题,例如:
测试用例水平扩展次序的问题、测试用例覆盖两两组合个数安排的问题和待扩展参数扩展次序的问题等。
就上述问题,本文在分析总结国内外现有两两组合覆盖测试生成方法优缺点的基础上,提出了一种以PO算法思想为基础的混合IP0算法(H口O算法)。
HIPO算法继承IPO算法高可扩展性的优点,引入测试用例贡献度的概念,采用
优先排序、最小化算法等方法。
论文深入研究和优化上述提出的三个问题,使得算法获得更优的结果。
本文利用.net技术实现了一个基于该方法的测试用例生成工具,并在随后的
初步实验中证明了HIPO算法是有效的。
。
.
最后本文将HIPO算法应用到银行反洗钱系统的测试用例生成中去,获得了比以往优秀的结果。
关键词:
软件测试;测试数据;两两组合覆盖测试;IPO算法
II
Abstract
Sof细aretestingisanimportantpanOfsoftwaredeVelopment.Itisals0anessentialme锄stoensurethequality0fsof细afeandt0improvethereliability0fsOftware.Duetothedevelopment0finfo姗ationtechnology’mescaleandcomplexity
ofsof时arekeeponincreasing.Asaresult,sof研aretesting伊aduallyConsumesmofeandmoreresources.ToobtainthebesttestingresultwjththeleastCostis伽eofthe
mostimponantissueiIltesting.Itisprovedmatpaif-wisetestingisapracticalalldeffectivewaytotestallkindsofsoft、^,aresystems.
Extensiveresearcheshavebcenmadeonthegenerationofpair.wisetesting.Therearesixmainalgorithmsonthat,Onhogonalarmys,AETGalgorithm,口O
algoritlull,Willi锄s’algoritlun,PSSTalgoritluIl锄dKobayashi’salgoritllm.
Comparedwithoth盯sixalg耐tllIns,IPOalgorit虹isbasedonparameters觚dcaJlensuretheoptimizationoftestc蕊esineachexp觚sion.ThougllIP0algoritllInhasa
lotofadv柚tages,itstillhasseveraJdefectswhicha疵ctsitspe—b彻aIlce.For
iIlst柚ce,thehOrizontal母Dwthofpa*wisetestin岛thecombinatiOn0fpamwise
testingcaseSandtheextensionsequenCe0ftheparameterst0beextendedall柚陀ctits
perfb珊ancc.
A血eranalyzing孤dsummarizingthemeritsanddefects0fpair-wisetesting,weproposeaHIP0a190rithmbasedon口0a190rithmtosolVethoseproblems.TheHIPOa190fithmiI山eritStheadvaIltageo仆i曲eXtensionoftheIPOalgoritllIll.Andit
iIltroducesthecontributionextentoftestingcaseswhichprovidesthebasisforjudgingtestingcases.Meanwhile,theHIPOalgoritluIladoptstllemethodsofpreferentialsequence嬲weUasminimizatjonalgoritlunt0optimizetheproblems
above.Asaresult,itpe怕衄smuchbetter.
Wedevelopthetestcase星renerationtoolbasedonth9HIP0algorithmbymeans
0f.nettechn0109y.WeproveitseffectivenessinthefollOwingexperiment.
TheHIP0algorithmw嬲usedi11theanti—mOneylaundefingsystemaIldgeneratesabetterresult.
Keywords:
softwaretesting;testingdata;pairwisetesting;IPOa190rithm
Ⅲ
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
论文独创性声明
本论文是我个人在导师指导下进行的研究工作及取得的研究成果。
论文中除了特别加以标注和致谢的地方外,不包含其他人或机构已经发表或撰写过的研究成果。
其他同志对本研究的启发和所做的贡献均已在论文中做了明确的声明并表示了谢意。
作者日期:
沙多.b.、岬
论文使用授权声明
本人完全了解上海师范大学有关保留、使用学位论文的规定,即:
学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其它手段保存论文。
保密的论文在解密后遵守此规定。
储吲新虢砰飙沙孑.6、(1[J
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
第一章绪论
1.1研究背景
随着现代信息技术的发展,计算机的应用已经渗透到社会生活的各个方面,甚至人类生活的各个领域。
软件在航空、航天、通讯、交通、金融等关键领域的应用也日益广泛,这些领域对软件可靠性和安全性都有很高的要求,为保证软件能够安全、可靠的运行,必须选择合适的测试方法对软件进行充分的测试。
-
由于软件的规模和复杂程度的不断加剧,软件测试也逐渐演变成耗费巨大资源的活动。
对软件系统进行全覆盖测试是相当困难的。
统计表明,在典型的软件开发项目中,软件测试的工作量往往占软件开发工作总量的50%以上,并因此而开销30%~50%的总成本l¨。
与此同时,测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作。
这些操作都不是人类所擅长的,而计算机却能够自动高速而又精确地处理各类信息和数据,从而避免测试人员因为厌烦和疲倦而产生的错误。
对于那些步骤与方法相对固定的测试完全可以采用自动测试方法,由计算机代替人工去完成。
由此可见,如何能高效的自动的生成尽量少测试用例并实施,用尽可能少的代价达到最大的测试效果成为众多研究机构和人员关注的问题。
实践表明:
软件系统的故障往往是由一些难以预料的系统因素及其相互作用而引起的。
软件测试就是对系统因素的各种组合情况进行充分覆盖的测试。
研究发现,有20%一40%左右的软件故障是由某个系统参数引发,20%~40%左右的故障由某两个参数的相互作用引发,由此存在大约70%的软件故障是由一个或两个参数的作用引起的【21。
因此,两两组合覆盖测试是对各种软件系统测试的一个实际而有效的方法
【3圳。
两两组合覆盖测试要求系统的任何一对输入参数,它们每一个有效值的组合都必须被至少一个测试用例所覆盖。
为了简要说明它的概念,我们考察这样一个系统,该待测系统中有三个参数
A(A。
,A2)、B(B-,B2)和C(C1,C2,C3),括号内是它们的有效取值。
对于参数A和B,它们之间的两两组合共有A181、A182、A281和A2,B2四对,那么测试集合(A1,B1)、(A,,B2)、(&,B1)和(&,B2)就是满足两两组合覆盖要求的测试用例集合。
若再加入参数C,则集合将进一步扩大。
假定T=.【(A1,Bl,C1),(A1,B2,C2),(A2,B1,C3),(A2,B2,C1),(A1,B2,C3),(赴,B-,C2)}。
由于三个参数间所有的两两组合都被包含于
集合T中,所以集合T就是满足两两组合覆盖要求的测试用例集合。
很显然,
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
满足两两组合覆盖要求的测试用例集合不是唯一的,例如T’={(A1,B1,C2),
(Al,B2,C2),(A2,B1,C3),O电,B2,C1),(A1,B2,C3),(A2,B1,C2),(A1,B2,C1),O电,B1,C1)】.、T”={(A1,B1,C2),(A1,B2,C2),(A2,B1,C3),(A2,B2,C1),(A1,B2,C3),(A2,B1'C2),
(A1,B2,C1),(&,B1,c2))等。
为了减少测试开销,我们希望能得到一个尽可能小的,满足两两组合覆盖要
求的测试集。
然而可以证明,要获得这样一个最优的测试集合是一个NPC问题
【71。
由此,我们的目标是采用一定的策略和算法来获得一个最优或接近于最优的
测试集。
1.2国内外研究现状
基于两两组合覆盖的测试用例集合生成技术研究,主要是研究应用组合设计方法对软件进行组合测试。
一开始,主要是将数学中正交拉丁方的特性应用于软件测试,取得了比较好的效果,形成了正交拉丁方算法【9。
17J。
随后在两两组合覆盖测试数据生成技术的发展中,生成方法主要有启发式方
法和代数方法。
美国贝尔实验室的D.M.Cohen与S.R.Dalal等提出的AETG算法
【7】【搏21】和北卡罗莱纳卅I大学的Yki与K.C.Tai等提出的IPO算法【22】【冽都属于启发式方法,它的特点是非常灵活、有效。
同时加拿大渥太华大学的A.w:
w_illi锄s提出了williams方法【弘”】和日本大阪大学的N.Kobayashi和TTsuchiya等提出了K曲avashi方法【28】。
上述两种方法都属于代数方法,都可以有效地生成满足要求
的测试数据,并且在某些情况下其效果要比启发式方法好。
代数方法是启发式方法的一种重要补充,它的特点是非常简洁。
我国的史亮等提出的PSST算法【29】将解空间映射成一个树,它的基本思想是找出相互间重叠数不超过1的所有解,这种算法给我们提供了一个解决问题的新思路。
上述六种主要算法都有各自的优缺点,总结如下:
(1)正交拉丁方算法利用组合数学中拉丁方的特殊性质来构造满足两两组合
覆盖要求的测试集。
它的优点在于构造简单,存在现实中的数学模型【30】,并且在已知参数个数及可取值情况下就可准确计算出满足两两组合覆盖要求的测试集大小。
不足之处是在实际系统中,往往为了满足拉丁方数学上的特性,因此在构造算法中常常需要添加“无关值”,从而导致增加额外的测试用例。
(2)AETG算法先产生一组待测的测试用例,然后利用贪心算法(Greedy
~gorithm)选择其中一个能覆盖最多未被覆盖到的两两组合13¨。
循环迭代直至所有的两两组合都被覆盖。
相对于其它算法,它获得的结果是较优的瞄】。
但是AETG算法的在时间复杂性上不如口O算法。
D)IPO算法采用贪心算法,是基于参数顺序的渐进扩展的两两组合覆盖测
2
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
试用例生成方法。
与其它算法一次生成所有测试用例的方式不同,IPO算法是以参数为中心的,这样就有利于系统的扩展,且该方法在时间复杂度上略优于AETG算法,但是结果不是较优的。
(4)willi锄s算法以正交拉丁方算法为基础,在正交矩阵的基础上加入了分
区等因素。
它改进的算法在时间复杂度上比较稳定,受参数规模等因素影响较小,且生成测试用例集合的规模同IPO算法基本相当【25】;不足之处是该算法只适合参数规模较小的系统。
(5)PSST算法将解空间映射成一个树,它的基本思想是找出相互间重叠数不超过1的所有解,然后对其进行扩展。
PSST算法将启发式方法和代数方法的优点结合起来,并尽量克服两者的不足。
该算法也可以允许测试人员预先指定一组测试用例,然后在此基础上进行扩展以生成两两组合覆盖表。
该算法具有较强的针对性和灵活性。
但由于该算法终究还是属于启发式算法,所以不能保证每次测试用例生成的结果是最优的。
(6)同、矾11j锄s算法相似,K0bayaslli算法也是通过一些基本正交表和特征块作为基本成分,来构造满足要求的复杂两两组合覆盖表。
Kobavashi算法的基本成分是正交表O表,并通过。
表的交叉重叠来构造新的两两组合覆盖表。
虽
然K|0bayashj算法在某些情况下能获得最优解,但是其还是不能避免由于拉丁方
特性所带来的缺陷。
1.3论文研究内容
论文首先详细介绍和分析了六种主要的两两组合覆盖测试数据生成算法,并通过分析比较,总结出每种算法的优缺点。
在研究各种算法的同时,我们发现相对于其它算法,IPO算法兼顾了性能和效率,且具有更好的可扩展性,但是口O算法缺少了对影响其性能相关问题的研究,包括测试用例水平扩展次序的问题、
测试用例集合整体覆盖安排的问题和待扩展参数的扩展次序问题。
本文通过实验分析和总结,提出了一个新的混合算法——-HIPO算法。
HIPO
算法在继承m0算法优势的基础上,弥补了上述三个不足,取得了较优的实验结果。
HIPO算法引用了遗传算法中个体适应度的思想,对测试用例集合中的每一个测试用例都设置了一个贡献度的指标(详见第3.2.1节),以此来评价该测试用例对整个集合的贡献程度,为以后的策略提供了评价的基础。
最后本文利用.net技术实现了一个基于该方法的测试用例生成工具,并在之后的初步实验以及AML应用中,验证HIPO算法的有效性。
3
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
1.4主要创新点
本文从理论联系到实际,深入分析了两两组合覆盖问题和各种生成策略,在此基础上提出了改进算法一一HIPO算法,并用.net实现了一个测试工具,通过实例验证了算法的有效性。
本文主要的创新点如下:
(1)通过实验证明了影响口O算法的几个因素:
测试用例水平扩展次序的问题、测试用例集合整体覆盖安排的问题和待扩展参数的扩展次序问题。
(2)提出测试用例贡献度的概念,为评价测试用例提供了方法。
(3)提出了一个口O算法的改进算法(HIPO),使它解决了现有IPO算法的三
个缺陷。
(4)用.net实现了两两组合覆盖测试集的自动生成工具。
(5)将H口O算法应用到银行反洗钱系统中,获得了良好的效果。
1.5章节安排
本文共分六章,具体章节安排如下:
第一章是全文的概述,介绍了研究的背景、意义和现状。
第二章介绍了两两组合覆盖问题,以及它的描述与分析。
介绍了当前国内外
主要的六种两两组合覆盖测试用例生成算法,并通过分析总结了优缺点。
第三章提出了一个针对口O算法的改进算法:
HIP0算法,很好的解决了上
文提出的问题。
第四章介绍了如何在设计和实现HIPO算法的测试工具,并通过实验证明了
该算法的有效性。
第五章将HIP0算法应用到银行反洗钱系统的测试用例生成中去,获得了良
好的效果。
第六章对论文进行了总结和展望。
在强调了本文的几个重要结论的同时,还总结了本文的创新点以及将来的研究方向。
4
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
第二章两两组合覆盖测试数据生成
两两组合覆盖测试是一种面向应用的测试方案,所要达到的目标是在最终生成的测试用例集中,对所有软件系统外部输入参数可能取值的两两组合(两两配对)至少覆盖一次。
本章首先通过一个例子对两两组合覆盖作了说明,然后研究分析了当前国内外相关的研究成果。
2.1问题的提出
目前,对于组合覆盖的测试用例集生成技术研究主要是研究应用组合设计方法对软件进行组合测试。
一开始主要是将正交拉丁方应用于软件测试,取得了比较好的效果。
正交拉丁方算法是一种比较成熟、有效的测试用例选择方法,它可以实现对各个参数可取值的两两组合的等概率覆盖,而且提供了一整套试验结果分析方法。
后来,人们关于组合测试的研究主要集中在两两组合覆盖测试用例的生成方面,主要有以下四个方面原因:
第一,在软件测试中,对各个参数及其相互间组合,只要求覆盖,并不需要等概率覆盖;第二,正交拉丁方算法的设计依赖于正交表,但正交表构造还存在很多未解决的问题,这给该算法的使用带来一定的限制;第三,使用正交拉丁方算法所需要的测试用例数量在多数情况下要远远多于实现两两组合覆盖所需要的测试用例的数量,这无疑将增加软件测试的成本;第四,在测试实践中发现,大约70%的软件错误是由系统的一个或两个输入参数的相互作用引起【2】【321。
由于以上四个原因,人们对于组合测试的研究主要关注于两两组合覆盖测试
用例的生成测试方法。
2.2两两组合覆盖测试示例
两两组合覆盖的目标是在最终生成的测试用例集中,对所有软件系统外部输入参数可能取值的两两组合至少覆盖一次。
为了便于描述,我们考察以下这个例子:
例如,为了测试一个电话交换机系统,表1给出了所定义的测试模型的4个参数及每个参数的可能取值。
这4个参数为:
CallType(呼叫类型)、Billing(付费种类)、Access(接入方式)和Status(状态)。
参数CmlType的可能取值为Local、LongDist锄cc和IIltemational,其它参数的可能取值见表1中所列。
因为表1中每个参数有3个值,所以总共有34=81个不同的测试情况。
要测
5
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
试所有这些可能的情况,其测试成本是昂贵的。
特别是当测试参数的个数或每个参数的可能取值的个数增加时,不同的测试组合个数会迅速增加。
但是如果知道错误是由被测试系统参数的两两相互作用引起,我们就可以设计两两组合覆盖测试用例集,此测试用例集所含测试用例的个数就会大大减少。
例如对于表1中给出的测试系统参数,其满足两两组合覆盖测试条件的一个测试用例集在表2中给出,它仅含有9个测试用例。
其覆盖了任何两个可能参数取值的组合,满足了两两组合覆盖的要求。
1’able1Thepa髓mete巧柚dV蚰u姻oftes“ngmodeIintdephone跚itcMngsystem
表1电话交换机系统测试模型的参数及取值CallTypeBillingAccessStatus
LocalCallerLoopSuccessLongDistanceC011ectISDNBusyInternational800PBXBlocked
1’aMe2Thepair-wiset姻Ung傀s器oftestingmodel缸telephoneswitc帖ngsystem
表2电话交换机系统测试模型的两两组合覆盖测试用例集CallTypeBillingAccessStatus
LocalC01lectLoopBusy
LongDistance800LoopBusyInternationalCallerISDNBusy
Local800ISDNBlockedLongDistanceCallerPBXB10ckedInternationalCollectLoopBlockedLocalCallerLoopSuccessLongDistanceCollectISDNSuccessInternational800PBXSuccess
2.3两两组合覆盖问题的描述与分析
考察一个含有k个参数的系统S(k≥2),参数a与参数B是系统S中任意两个参数。
参数a的有效取值为(a1,a2,a3,,am),参数B的有效取值为(B1,B2,B3,,Bn),
那么集合T={(ai,Bi)11sism,1司sn,i∈N,j∈N,i乒j)就是一个符合两两组合覆盖要求
的测试用例集合。
从两两组合覆盖测试的目的出发,将系统S表示为nP),其中T是所有可能的测试用例集合,P是所有有效的两两组合集合。
一个满足两两组合覆盖的测试集T-是T的一个子集,且任意一个参数值对(ai,Bi)∈T。
我们用ITfI表示为T中含有的测试用例总数,那么两两组合覆盖问题就是:
对于一个给定系统,找到一个满足两两组合覆盖且|T1.I为最小的测试集T’。
为了方便理解,我们用图形方式来表示两两组合覆盖问题,图1即是两两组合覆盖问题的一个实例。
6
上海师范大学硕士研究生学位论文两两组合覆盖测试用例生成研究及优化
关于图1中的相关图案,我们给出以下定义:
定义1:
若图G的在水平线上的每一层表示一个参数,这层中的各项点表示为该参数的各个有效取值,每一条边代表参数值的一个需要被覆盖的两两组合,那么我们称图G为某个软件系统的两两组合图,简称PCG图(Pair-CombinatorialGraph)。
很显然,由于同一个参数的不同取值是不可能形成两两组合的,因此同一层的顶点之间没有连线。
定义2:
令G是一个软件系统的PCG图,若G的子图G’在每一层中只有一个顶点,则称该子图G’是两两组合覆盖测试用例图,简称PTC图俾air-wiseTestCase)。
PTC图即是对应的测试用例在图G上的映射。
图2是某系统的PTC图集
合。
图1某软件系统A的PCG图示例
Figl11l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组合 覆盖 测试 生成 分析 优化