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

文档序号:6519628阅读:237来源:国知局
一种新型组合测试用例生成方法
【专利摘要】本发明公开了一种新型组合测试用例集生成方法,属于软件测试【技术领域】。本发明中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,采用随机方式生成测试用例;在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例;在组合测试用例集生成的后期阶段,采用贪心算法来生成测试用例。使用这种生成方法,既可以提高测试用例生成效率,又可以有效减少组合测试用例的数量,提高软件测试效率。
【专利说明】一种新型组合测试用例生成方法
【技术领域】
[0001]本发明涉及一种组合测试用例生成方法,属于软件测试【技术领域】。
【背景技术】
[0002]组合测试是一种基于规约的软件测试技术,可以在保证缺陷检测能力的基础上,减少测试用例的规模。组合测试是提高软件测试效率的有效方法,是保证软件质量的重要手段。伴随着软件高度可配置化的发展趋势,组合测试已经成为一种应用广泛的有效测试手段。组合测试用例集的生成是组合测试的关键问题,对于同一强度的组合测试来说,测试用例集的规模越小越好。为了减小所生成的组合测试用例集规模,提高组合测试的效率,提出了本发明。

【发明内容】
[0003]针对组合测试用例生成问题的特点,本发明提出了一种基于差分进化算法的新型组合测试用例生成方法。
[0004]本发明的技术方案如下:
[0005]定义:
[0006]组态——软件t个输入项的全部组合构成的集合称为强度为t的组态。假设一个系统共有4个输入项,I1, I2, I3, I4 ;则它的强度为3的组态为{(I1, I2, I3),(I1, I2, I4),(I1,
工3,工4),(工2,工3,工4)}。
[0007]组态表一对于组态中的各个元素,覆盖全部可选值的组合构成的集合称为组态表。假设输入项Ir I2均有两个可选值O和1,则组态元素(I1, I2)的覆盖全部可选值的集合为{(0,0), (O, I), (1,0), (I, I)}。
[0008]数据存储结构:
[0009]可选值的存储-用链表存储各个输入项的可选值。使用这种存储方式,可以在
可选值与其在链表中的位置之间建立一一对应关系。在优化过程中,设定各个输入项先后顺序的基础上,可以使用可选值在链表中的位置值来替代可选值的具体值,来解决DE中解的实数编码问题。
[0010]假设系统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所示。
[0011]组态的存储——按照规定的顺序将系统的各个输入项存储在链表中Li中;以链表的形式将组态中各个输入项在Li中的位置存储起来,就构成了组态的存储方式。系统S的组态存储结构如附图2所示。
[0012]组态表的存储——使用字典结构来存储组态表,以便通过组态来查询组态表。字典的Key值为组态中的元素,如(O, 1),(1,2)等;Value为组态表中该元素对应的组合构成的链表。系统 S 中,Key=(0,I)时,Value= {(0,O),(O, I), (0,2),(1,0), (I, I), (1,2)}[0013]组合覆盖评价方案:
[0014]通过测试用例覆盖的有效组态元素的数量来评价该测试用例的优劣。假设现有测试用例集TR(i)中包含的测试用例数量为m,组态表中被这m个测试用例覆盖的部分为C,未被覆盖的部分为UC,测试用例Tq能够覆盖UC中的η个,则Tq的适应度为η。
[0015]组合测试用例生成:
[0016]在本发明中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成η个测试用例存入TR,并从TCon中删除被这η个测试用例覆盖的元素,实验表明,η取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法逐条生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。
[0017]本发明原理及有益效果:在不同的阶段,采用随机生成、使用差分进化算法生成、使用贪心算法生成等三种不同的测试用例生成方式。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成η个测试用例存入TR,并从TCon中删除被这η个测试用例覆盖的元素,实验表明,η取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。使用这种生成方法,可以有效减少组合测试用例的数量,提高软件测试效率。
【专利附图】

【附图说明】
[0018]图1是可选值存储结构说明图,用于描述可选值的存储结构。
[0019]图2是组态的存储结构说明图,用于描述组态的存储结构。
【具体实施方式】
[0020]本发明所述的组合测试用例生成方法,采用逐条扩展的一维扩展策略,即所谓的one-test-at-a-time策略。以差分进化算法为主,辅以随机生成和贪心算法生成的方式来生成单个测试用例,加入测试用例集,直至组态表中的所有元素均被覆盖。生成过程分为初始化、随机生成η个测试用例、使用差分进化算法逐条生成测试用例和使用贪心算法生成剩余测试用例四步。为使本发明的实施例的目的、技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述。
[0021]一种组合测试用例生成方法,主要包括如下步骤:
[0022]第一步:初始化。
[0023]初始化部分主要完成配置参数及数据文件的读取、根据数据文件初始化组态链表、生成组态表字典等工作。首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary〈int, int>型的字典diCtArgAndValNums中;读取算法配置参数并存储于相应的变量中。然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表1istArgConfig中;最后,根据IistArgConfig和dictArgAndValNums生成组态表,并存储于 Dictionary〈List〈int>, List<List<int>>> 型的字典 dictConf igurations中。
[0024]第二步:随机生成η个测试用例。
[0025]当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,在为进行优化生成之前,先随机生成η个测试用例存入TR (η取组态数的
0.5%),并从TCon中删除被这η个测试用例覆盖的元素。
[0026]第三步:使用差分进化算法逐条生成测试用例。
[0027]步骤1:随机生成N个解组成初始种群IistPopulation,对初始种群中的个体进行评价。N为种群大小,在本发明中种群大小取100。
[0028]步骤2:对IistPopulation中的每个个体Xi,通过以下步骤求得新个体:
[0029]步骤2.1:随机选择另外三个解执行变异操作,生成临时解\ ;
[0030]ti (g) =xrl (g) +F X [xr2 (g) -xr3 (g)],其中F为比例因子,在本发明中比例因子取
0.1 ;
[0031]步骤2.2:将临时个体与当前个体交叉,生成新解Vi ;
[0032]
【权利要求】
1.一种新型组合测试用例生成方法,其特征在于:第一步: 初始化:首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary〈int, int>型的字典diCtArgAndValNums中;读取算法配置参数并存储于相应的变量中;然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表1istArgConfig中;最后,根据IistArgConfig和dictArgAndValNums生成组态表,并存储于 Dictionary〈List〈int>, List<List<int>>> 型的字典 dictConf igurations中; 第二步:随机生成η个测试用例, 当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别;为了提高效率,在为进行优化生成之前,先随机生成η个测试用例存入TR,η取组态数的0.5%,并从TCon中删除被这η个测试用例覆盖的元素, 第三步:使用差分进化算法逐条生成测试用例, 第四步:使用一维扩展的贪心算法来生成测试用例; 当组态表TCon中未被覆盖的元素数量小于总数量的5%时,依覆盖最多TCon中未被覆盖的元素为目标,使用贪心算法逐个生成测试用例,加入TR,并从TCon中删除被最优个体代表的测试用例覆盖的元素,如此循环,直至TCon为空。
2.根据权利要求1所述的一种新型组合测试用例生成方法,其特征在于:第三步:使用差分进化算法逐条生成测试用例的实现的步骤如下: 步骤1:随机生成N个解组成初始种群IistPopulation,对初始种群中的个体进行评价;Ν为种群大小,在本发明中种群大小取100 ; 步骤2:对IistPopulation中的每个个体Xi,通过以下步骤求得新个体: 步骤2.1:随机选择另外三个解执行变异操作,生成临时解\ ; ti (g) =xrl (g) +F X [xr2 (g) -xr3 (g)],其中F为比例因子,在本发明中比例因子取0.1; 步骤2.2:将临时个体与当前个体交叉,生成新解Vi ;
【文档编号】G06F11/36GK103544109SQ201310578532
【公开日】2014年1月29日 申请日期:2013年11月15日 优先权日:2013年11月15日
【发明者】梁旭, 郭书杰, 黄明 申请人:大连交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1