一种新型组合测试用例生成方法技术

技术编号:9618243 阅读:152 留言:0更新日期:2014-01-30 06:02
本发明专利技术公开了一种新型组合测试用例集生成方法,属于软件测试技术领域。本发明专利技术中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,采用随机方式生成测试用例;在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例;在组合测试用例集生成的后期阶段,采用贪心算法来生成测试用例。使用这种生成方法,既可以提高测试用例生成效率,又可以有效减少组合测试用例的数量,提高软件测试效率。

A new method for generating composite test cases

The invention discloses a method for generating a new set of combined test case sets, which belongs to the technical field of software testing. In the invention, there are three kinds of generation methods of the combined test cases: random generation, differential evolution algorithm generation, and greedy algorithm generation. In the initial stage of combination of test suite generation, randomly generated test cases in the test suite; combination of the middle stage of generation, using differential evolution algorithm to generate test cases in the test suite; combination of late stage generated, using the greedy algorithm to generate test cases. This method can not only improve the efficiency of test case generation, but also effectively reduce the number of combined test cases and improve the efficiency of software testing.

【技术实现步骤摘要】

本专利技术涉及一种组合测试用例生成方法,属于软件测试

技术介绍
组合测试是一种基于规约的软件测试技术,可以在保证缺陷检测能力的基础上,减少测试用例的规模。组合测试是提高软件测试效率的有效方法,是保证软件质量的重要手段。伴随着软件高度可配置化的发展趋势,组合测试已经成为一种应用广泛的有效测试手段。组合测试用例集的生成是组合测试的关键问题,对于同一强度的组合测试来说,测试用例集的规模越小越好。为了减小所生成的组合测试用例集规模,提高组合测试的效率,提出了本专利技术。
技术实现思路
针对组合测试用例生成问题的特点,本专利技术提出了一种基于差分进化算法的新型组合测试用例生成方法。本专利技术的技术方案如下:定义:组态——软件t个输入项的全部组合构成的集合称为强度为t的组态。假设一个系统共有4个输入项,I1, I2, I3, I4 ;则它的强度为3的组态为{(I1, I2, I3),(I1, I2, I4),(I1,工3,工4),(工2,工3,工4)}。组态表一对于组态中的各个元素,覆盖全部可选值的组合构成的集合称为组态表。假设输入项Ir I2均有两个可选值O和1,则组态元素(I1, I2)的覆盖全部可选值的集合为{(0,0), (O, I), (1,0), (I, I)}。数据存储结构:可选值的存储-用链表存储各个输入项的可选值。使用这种存储方式,可以在可选值与其在链表中的位置之间建立一一对应关系。在优化过程中,设定各个输入项先后顺序的基础上,可以使用可选值在链表中的位置值来替代可选值的具体值,来解决DE中解的实数编码问题。假设系统S有3个输入项,人为规定其顺序为I1, 12,13。其中^有〗个可选值V1= {true, false} ; I2 有 3 个可选值 V2= {0,10, 20} ;13 有 2 个可选值 V3= { “PRC”,” USA”}。则测试用例{false,20,“PRC”}的编码为{1,2,0},如附图1所示。组态的存储——按照规定的顺序将系统的各个输入项存储在链表中Li中;以链表的形式将组态中各个输入项在Li中的位置存储起来,就构成了组态的存储方式。系统S的组态存储结构如附图2所示。组态表的存储——使用字典结构来存储组态表,以便通过组态来查询组态表。字典的Key值为组态中的元素,如(O, 1),(1,2)等;Value为组态表中该元素对应的组合构成的链表。系统 S 中,Key=(0,I)时,Value= {(0,O),(O, I), (0,2),(1,0), (I, I), (1,2)}组合覆盖评价方案:通过测试用例覆盖的有效组态元素的数量来评价该测试用例的优劣。假设现有测试用例集TR(i)中包含的测试用例数量为m,组态表中被这m个测试用例覆盖的部分为C,未被覆盖的部分为UC,测试用例Tq能够覆盖UC中的η个,则Tq的适应度为η。组合测试用例生成:在本专利技术中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成η个测试用例存入TR,并从TCon中删除被这η个测试用例覆盖的元素,实验表明,η取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法逐条生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。本专利技术原理及有益效果:在不同的阶段,采用随机生成、使用差分进化算法生成、使用贪心算法生成等三种不同的测试用例生成方式。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成η个测试用例存入TR,并从TCon中删除被这η个测试用例覆盖的元素,实验表明,η取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。使用这种生成方法,可以有效减少组合测试用例的数量,提高软件测试效率。【附图说明】图1是可选值存储结构说明图,用于描述可选值的存储结构。图2是组态的存储结构说明图,用于描述组态的存储结构。【具体实施方式】本专利技术所述的组合测试用例生成方法,采用逐条扩展的一维扩展策略,即所谓的one-test-at-a-time策略。以差分进化算法为主,辅以随机生成和贪心算法生成的方式来生成单个测试用例,加入测试用例集,直至组态表中的所有元素均被覆盖。生成过程分为初始化、随机生成η个测试用例、使用差分进化算法逐条生成测试用例和使用贪心算法生成剩余测试用例四步。为使本专利技术的实施例的目的、技术方案和优点更加清楚,下面结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚完整的描述。一种组合测试用例生成方法,主要包括如下步骤:第一步:初始化。初始化部分主要完成配置参数及数据文件的读取、根据数据文件初始化组态链表、生成组态表字典等工作。首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary〈int, int>型的字典diCtArgAndValNums中;读取算法配置参数并存储于相应的变量中。然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表1istArgConfig中;最后,根据IistArgConfig和dictArgAndValNums生成组态表,并存储于 Dictionary〈List〈int>, List<List<int>>> 型的字典 dictConf igurations中。 第二步:随机生成η个测试用例。当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,在为进行优化生成之前,先随机生成η个测试用例存入TR (η取组态数的0.5%),并从TCon中删除被这本文档来自技高网...

【技术保护点】
一种新型组合测试用例生成方法,其特征在于:第一步:初始化:首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary型的字典dictArgAndValNums中;读取算法配置参数并存储于相应的变量中;然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表listArgConfig中;最后,根据listArgConfig和dictArgAndValNums生成组态表,并存储于Dictionary,List>>型的字典dictConfigurations中;第二步:随机生成n个测试用例,当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别;为了提高效率,在为进行优化生成之前,先随机生成n个测试用例存入TR,n取组态数的0.5%,并从TCon中删除被这n个测试用例覆盖的元素,第三步:使用差分进化算法逐条生成测试用例,第四步:使用一维扩展的贪心算法来生成测试用例;当组态表TCon中未被覆盖的元素数量小于总数量的5%时,依覆盖最多TCon中未被覆盖的元素为目标,使用贪心算法逐个生成测试用例,加入TR,并从TCon中删除被最优个体代表的测试用例覆盖的元素,如此循环,直至TCon为空。...

【技术特征摘要】
1.一种新型组合测试用例生成方法,其特征在于:第一步: 初始化:首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary〈int, int>型的字典diCtArgAndValNums中;读取算法配置参数并存储于相应的变量中;然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表1istArgConfig中;最后,根据IistArgConfig和dictArgAndValNums生成组态表,并存储于 Dictionary〈List〈int>, List<List<int>>> 型的字典 dictConf igurations中; 第二步:随机生成η个测试用例, 当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别;为了提高效率,在为进行优化生成之前,先随机生成η个测试用例存入TR,η取组态数的0.5...

【专利技术属性】
技术研发人员:梁旭郭书杰黄明
申请(专利权)人:大连交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1