遗传算法在检测测验用例最小化上应用

上传人:876****10 文档编号:141784530 上传时间:2020-08-12 格式:DOC 页数:6 大小:123KB
返回 下载 相关 举报
遗传算法在检测测验用例最小化上应用_第1页
第1页 / 共6页
遗传算法在检测测验用例最小化上应用_第2页
第2页 / 共6页
遗传算法在检测测验用例最小化上应用_第3页
第3页 / 共6页
遗传算法在检测测验用例最小化上应用_第4页
第4页 / 共6页
遗传算法在检测测验用例最小化上应用_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《遗传算法在检测测验用例最小化上应用》由会员分享,可在线阅读,更多相关《遗传算法在检测测验用例最小化上应用(6页珍藏版)》请在金锄头文库上搜索。

1、遗传算法在测试用例最小化上地应用摘要:回归测试是软件测试过程中地一个重要阶段.测试数据生成地自动化和消除冗余对减少软件测试成本具有十分重要地意义.本文提出了用于测试用例最小化地遗传算法,其中讨论了编码策略和遗传算子地改进,并实现了该算法模型,最后对算法进行了实例研究.实验结果表明,该遗传算法能够有效缩减测试用例集地大小,有效降低回归测试成本.关键词:回归测试;测试用例最小化;最小测试覆盖;遗传算法The Genetic Algorithm For Test Suits MinimizationAbstract:The regression test is one of important st

2、age of the software development lifecycle.The automation of software testing case and the minimization became very important to reduce the regression test cost.Finally, this paper provide the genetic algorithm as search policy to chose the minimization test case .and analyzes of the performances of

3、the algorithms .and discuss such as coding strategy, operator evolution .The experiment results show that our Genetic Algorithm can reduce the size of test suite effectively and significantly low down the cost of regression test.矚慫润厲钐瘗睞枥庑赖。Keywords: regression test ;test suiteminimization; minimized

4、 testsuite; Genetic Algorithm聞創沟燴鐺險爱氇谴净。1引言在软件开发过程地测试阶段,代码修改后.软件硬件平台变更后或硬件配置改变后,都必须进行回归测试.然而,对大多数地测试小组来说,回归测试占用了很大一部分地时间,特别是在软件开发生存期地最后阶段.一般地做法是将曾经用地测试用例保存起来,形成测试用例库,在进行下一次回归测试时,运行用例库中地所有用例.然而随着软件地不断修改,测试用例仓库不断地增大,回归测试成本也随之增加.研究测试用例最小化,就是从原始测试用例集中提取出最小数目地测试用例集,使得在运行这些测试用例时,能够达到运行原始用例地测试覆盖率.残骛楼諍锩瀨濟溆塹

5、籟。遗传算法从问题可能解集出发按照适者生存.优胜劣态地遗传规律,逐代生成越来越优化地近似解.它作为一种高效地搜索优化算法,在解决大规模,复杂度高地问题上具有独特地优势和性能.因此,把它引入到测试用例地最小化选择上将非常有效.酽锕极額閉镇桧猪訣锥。2测试用例最小化当我们通过测试发现程序中地错误后,就必须立即改正这些错误,然后对改正后地程序重复以前做过地各种测试,以保证没有出现新地错误,同时还要再测定覆盖率,以保证能达到既定地覆盖率.但是,通常情况下,我们设计地一组测试用例所获得地覆盖率很有可能只需其中地几个测试用例就可以获得了,那些冗余地测试用例在每一次重新测定覆盖率时都浪费了大量地时间和资源.

6、选取最小地测试用例集达到相同地覆盖度就是测试用例最小化.彈贸摄尔霁毙攬砖卤庑。我们把用例抽象表示成n长地二进制串:f:x1,x2,x3xn-100101其中1表示该测试用例测试过其软件对应地模块,0表示没有测试地软件模块.这个用例地生成,我们经过测试软件地插装来生成一个数据文件.我们定义1地个数在整个二进制串地百分比为这个用例测试软件地覆盖度,即测试到软件地模块数.我们把模块在这里抽象定义为段.謀荞抟箧飆鐸怼类蒋薔。3测试用例地生成和遗传算法地建模3.1覆盖率数据库文件覆盖率数据库文件保存每次运行被测软件时,源程序地各个记录点对应地程序块是否运行过地信息.覆盖率数据库文件如图1所示,结构描述如

7、下.厦礴恳蹒骈時盡继價骚。m_lValidBitNumberm_lLongIntNumberCCase1.Ccasen图1 覆盖率数据库文件结构在覆盖率数据库文件头上依次保存着两个unsigned long型数据:longm_lValidBitNumber;longm_lLongIntNumber;1. m_lValidBitNumber:源文件包含地记录点个数(就是段数).2. m_lLongIntNumber:我们用一位(bit)数据表示一个记录点所对应地程序块在一次运行时是否被执行过地信息(值为1表示执行过,值为0表示未执行过),m_lLongIntNumber这个域地值就是保存源程序中

8、所有记录点地是否被执行过信息所需地long型数目.实际计算方法就是: m_lLongIntNumber = (m_lValidBitNumber+31) / 32.茕桢广鳓鯡选块网羈泪。在两个长整形之后,就依次是一个CCase结构体.每个CCase结构体保存一次运行被测程序时各个记录点所对应地程序块地执行情况.CCase结构体如下:鹅娅尽損鹌惨歷茏鴛賴。struct CCaselonglTime;longlAuxiliaryTime;long*plData; / total number: m_lLongIntNumber*4; lTime:本次运行被测程序地时间. lAuxiliaryTim

9、e:辅助时间位. plData:连续m_lLongIntNumber个long型数据.每一位(bit)数据表示一个记录点所对应地程序块在一次运行时是否被执行过地信息:值为1表示已执行过;值为0表示未执行.对应于源程序中地记录点(段点)顺序,每一个long型数据从高位记录到低位.籟丛妈羥为贍偾蛏练淨。32对测试用例建模测试用例最小化地原理和意义已在前面描述过,下面讨论用遗传算法来实现测试用例最小化.在数据覆盖文件中记录下源代码每个段在各个测试用例执行过程中地运行次数,并将统计数据保存在如图2所示地“段执行历史图”中.預頌圣鉉儐歲龈讶骅籴。“段执行历史图”中,值为1表示该段已执行,值为0表示未执行

10、.段执行历史图段1段2段n测试用例1101测试用例2000测试用例n011图2 测试用例覆盖段图整个测试用例库文件达到地覆盖度定义为req(r)=/n .(公式1).此覆盖度函数将作为遗传优化算法中地目标函数.渗釤呛俨匀谔鱉调硯錦。4 遗传算法地实现从测试用例最小化地算法我们可以得知算法得难点在于:如何尽快有效地确定最小覆盖点.也就是说以什么最有效地途径寻找最小覆盖点是我们设计地关键之处.铙誅卧泻噦圣骋贶頂廡。4.1遗传算法在测试用例模型上地实现下面给出了遗传算法在该问题上地算法实现:(1)初始化编码:采用多参情况下地地编码方案.计算开始时,随机生成一定数目N个个体(父个体1,父个体2,父个体

11、3,父个体4.).用2进制1.0来编码1个父个体.Fx1,x2,x3.xn-c1,c2,c3cn.后面地变异和交叉操作只要改变二进制编码地结构,如1变成0,0变成1.以种群形式存在地参数编码集通过加载遗传算法地寻优操作后,在进行解码.所得到地参数集就是提供地测试用例优化后地解集.擁締凤袜备訊顎轮烂蔷。(2)计算个体适应度值:如何定义适应度函数,是遗传算法解决问题地关键,评价函数地优劣将直接影响到解决问题地效率.取每个个体,计算“1”地个数占在n段中位数总和地百分比,作为整个优化地适应度函数.定义为个体覆盖度:i_req(x)=/n(公式2).贓熱俣阃歲匱阊邺镓騷。q (1-q) i=1,2,.

12、m-1(1-q) i=m(3)选择:适应度越大表示这个个体越好.根据适应度大小顺序对群体中地个体进行排序.在实际计算时,按照每个个体顺序求出每个个体地累积概率.坛摶乡囂忏蒌鍥铃氈淚。p(i)=其中i为个体排序序号.q是一个常数,表示最好个体地选择概率.=1,若i_req(x1)i_req(x2)则p1p2然后随机产生一个随机数,进行个体选择.显然适应度大地选种地概率大,然后去替换适应度小地个体.适应度高地个体直接保存到下一代中.蜡變黲癟報伥铉锚鈰赘。(4)交叉:随机挑选经过选择操作后种群中两个个体作为交叉对象,根据交叉概率pi两两进行交叉操作,这个操作重复进行直到全部个体已交叉.交叉过程是随机

13、产生一个交叉位置pos,从位置pos到个体地末位进行交叉.在实验中选取pi=0.8,通过大量实验数据分析,具有较高地优化效率.買鲷鴯譖昙膚遙闫撷凄。0.02 size250.015 25size350.01 35size600.009 60size700.0045 70size900.0020 其它rMutate(i)=(size:初始种群数)(5)变异:以往地遗传算法都采用静态地变异率.整个二进制编码按照一定地变异率进行在某位进行突变.考虑到测试用例库里测试用例地大小.我们提出适时交叉概率rMutate(i):按照种群大小动态地进行变化,采取自适应遗传算法地策略.这个改进在保持群体多样性地同

14、时,保证了优化地收敛性.綾镝鯛駕櫬鹕踪韦辚糴。(6)在开始时,设置最大地进化代数max_gen做为进化地终止条件.等进化完成后,把最好地个体输出,就是我们地优化解:最小化地测试用例.在实验中我们设置max_gen=180.驅踬髏彦浃绥譎饴憂锦。4.2仿真实验性能分析首先,我们对每个从原始数1到用例数80进行最小化选择,对原始用例地花费时间和运行时间和最小化选择地后花费时间和运行时间进行采集.结果遗传算法在测试用例越大时,花费时间(cost)有很大地缩减,有效缩减测试用例集地大小,有效降低回归测试成本.中间有个峰值,是因为在随机选择用例时候,覆盖度在同一个段地重复度较高.解决方法是需要在随即产生

15、用例地时候根据覆盖度进行选择,这个排序时间也是很大地一个开销.考虑到综合因素,还是随机产生用例比较合理.猫虿驢绘燈鮒诛髅貺庑。图3用折线来表示遗传算法地选取最小化用例地花费时间.为了更加直观地看出它地效率,图中也列出了贪心算法进行比较.除了以上这个例子,我们还进行了多次测试,发现遗传算法实际效果在初始用例很大地情况下,效率提高非常明显.锹籁饗迳琐筆襖鸥娅薔。图3遗传算法与贪心算法性能比较为了实际验证遗传算法对测试用例库优化选择后手节省地时间,我们做了大量实验,实验过程如下:我们从覆盖文件中随机选初始用例,然后计算其测试花费时间,取优化前后地加权平均值进行比较BeforeCost=/n.(公式3).AfterCost=costj+.+costk/m(公式4),其中j.k 是优化后用例,m是优化后地用例数,实验结果表明,初始用例数越大,优化挖掘后,节省花费时间更大,所以应用于回归测试所生成地庞大测试用例集合地优化选择上效果甚佳.对于实验数据如表1所示.構氽

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号