CN103544109B - 一种组合测试用例生成方法 - Google Patents
一种组合测试用例生成方法 Download PDFInfo
- Publication number
- CN103544109B CN103544109B CN201310578532.9A CN201310578532A CN103544109B CN 103544109 B CN103544109 B CN 103544109B CN 201310578532 A CN201310578532 A CN 201310578532A CN 103544109 B CN103544109 B CN 103544109B
- Authority
- CN
- China
- Prior art keywords
- test case
- generate
- case
- individual
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种新型组合测试用例集生成方法,属于软件测试技术领域。本发明中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,采用随机方式生成测试用例;在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例;在组合测试用例集生成的后期阶段,采用贪心算法来生成测试用例。使用这种生成方法,既可以提高测试用例生成效率,又可以有效减少组合测试用例的数量,提高软件测试效率。
Description
技术领域
本发明涉及一种组合测试用例生成方法,属于软件测试技术领域。
背景技术
组合测试是一种基于规约的软件测试技术,可以在保证缺陷检测能力的基础上,减少测试用例的规模。组合测试是提高软件测试效率的有效方法,是保证软件质量的重要手段。伴随着软件高度可配置化的发展趋势,组合测试已经成为一种应用广泛的有效测试手段。组合测试用例集的生成是组合测试的关键问题,对于同一强度的组合测试来说,测试用例集的规模越小越好。为了减小所生成的组合测试用例集规模,提高组合测试的效率,提出了本发明。
发明内容
针对组合测试用例生成问题的特点,本发明提出了一种基于差分进化算法的组合测试用例生成方法。
本发明的技术方案如下:
定义:
组态——软件t个输入项的全部组合构成的集合称为强度为t的组态。假设一个系统共有4个输入项,I1,I2,I3,I4;则它的强度为3的组态为{(I1,I2,I3),(I1,I2,I4),(I1,I3,I4),(I2,I3,I4)}。
组态表——对于组态中的各个元素,覆盖全部可选值的组合构成的集合称为组态表。假设输入项I1、I2均有两个可选值0和1,则组态元素(I1,I2)的覆盖全部可选值的集合为{(0,0),(0,1),(1,0),(1,1)}。
数据存储结构:
可选值的存储——用链表存储各个输入项的可选值。使用这种存储方式,可以在可选值与其在链表中的位置之间建立一一对应关系。在优化过程中,设定各个输入项先后顺序的基础上,可以使用可选值在链表中的位置值来替代可选值的具体值,来解决DE中解的实数编码问题。
假设系统S有3个输入项,人为规定其顺序为I1,I2,I3。其中I1有2个可选值V1={true,false};I2有3个可选值V2={0,10,20};I3有2个可选值V3={“PRC”,”USA”}。则测试用例{false,20,“PRC”}的编码为{1,2,0},如附图1所示。
组态的存储——按照规定的顺序将系统的各个输入项存储在链表中Li中;以链表的形式将组态中各个输入项在Li中的位置存储起来,就构成了组态的存储方式。系统S的组态存储结构如附图2所示。
组态表的存储——使用字典结构来存储组态表,以便通过组态来查询组态表。字典的Key值为组态中的元素,如(0,1)、(1,2)等;Value为组态表中该元素对应的组合构成的链表。系统S中,Key=(0,1)时,Value={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)}
组合覆盖评价方案:
通过测试用例覆盖的有效组态元素的数量来评价该测试用例的优劣。假设现有测试用例集TR(i)中包含的测试用例数量为m,组态表中被这m个测试用例覆盖的部分为C,未被覆盖的部分为UC,测试用例TCj能够覆盖UC中的n个,则TCj的适应度为n。
组合测试用例生成:
在本发明中,组合测试用例的生成方式有三种:随机生成、使用差分进化算法生成、使用贪心算法生成。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成n个测试用例存入TR,并从TCon中删除被这n个测试用例覆盖的元素,实验表明,n取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法逐条生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。
本发明原理及有益效果:在不同的阶段,采用随机生成、使用差分进化算法生成、使用贪心算法生成等三种不同的测试用例生成方式。在组合测试用例集生成的初始阶段,测试用例集TR中的用例数量较少,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,采用随机方式生成n个测试用例存入TR,并从TCon中删除被这n个测试用例覆盖的元素,实验表明,n取组态数的0.5%比较合适。在组合测试用例集生成的中期阶段,使用差分进化算法生成测试用例,存入TR,并从TCon中删除被该测试用例覆盖的元素。算法的参数配置如下:采用随机变异基变异方式;交叉概率取0.2-0.3、比例因子取0.1、种群大小取100、最大进化代数取60。在组合测试用例集生成的后期阶段,由于组态表TCon中仅极少量元素未被覆盖,此时使用差分进化算法逐条生成测试用例的效率较低,因而采用贪心算法来生成测试用例。实验结果表明,当组态表TCon中未被覆盖的元素数量小于总数量的5%时,改用贪心算法生成比较合适。使用这种生成方法,可以有效减少组合测试用例的数量,提高软件测试效率。
附图说明
图1是可选值存储结构说明图,用于描述可选值的存储结构。
图2是组态的存储结构说明图,用于描述组态的存储结构。
具体实施方式
本发明所述的组合测试用例生成方法,采用逐条扩展的一维扩展策略,即所谓的one-test-at-a-time策略。以差分进化算法为主,辅以随机生成和贪心算法生成的方式来生成单个测试用例,加入测试用例集,直至组态表中的所有元素均被覆盖。生成过程分为初始化、随机生成n个测试用例、使用差分进化算法逐条生成测试用例和使用贪心算法生成剩余测试用例四步。为使本发明的实施例的目的、技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述。
一种组合测试用例生成方法,主要包括如下步骤:
第一步:初始化。
初始化部分主要完成配置参数及数据文件的读取、根据数据文件初始化组态链表、生成组态表字典等工作。首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary<int,int>型的字典dictArgAndValNums中;读取算法配置参数并存储于相应的变量中。然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表listArgConfig中;最后,根据listArgConfig和dictArgAndValNums生成组态表,并存储于Dictionary<List<int>,List<List<int>>>型的字典dictConfigurations中。
第二步:随机生成n个测试用例。
当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别。为了提高效率,在为进行优化生成之前,先随机生成n个测试用例存入TR(n取组态数的0.5%),并从TCon中删除被这n个测试用例覆盖的元素。
第三步:使用差分进化算法逐条生成测试用例。
步骤1:随机生成N个解组成初始种群listPopulation,对初始种群中的个体进行评价。N为种群大小,在本发明中种群大小取100。
步骤2:对listPopulation中的每个个体xi,通过以下步骤求得新个体:
步骤2.1:随机选择种群中另外三个与xi不同的个体执行变异操作,生成临时解ti;
ti(g)=xr1(g)+F×[xr2(g)-xr3(g)],其中F为比例因子,在本发明中比例因子取0.1;
步骤2.2:将临时个体与当前个体交叉,生成新解vi;
其中r为0~1之间均匀分布的随机数,rc为交叉概率,rand为1~d(为题维数)之间均匀分布的整数,用以确保至少有一维分量继承自目标个体ti。在本发明中,交叉概率取0.2-0.3的浮点数。
步骤2.3:将新解与当前解进行比较,选择较好的解作为下一代的个体。
步骤3:如果g=MaxEvoluteGeneration则将找到的最优解添加到TR中,并从TCon中删除被该最优个体代表的测试用例覆盖的元素;否则返回步骤2。其中MaxEvoluteGeneration为最大进化代数取,在本发明中,最大进化代数取60。
第四步:使用一维扩展的贪心算法来生成测试用例。
当组态表TCon中未被覆盖的元素数量小于总数量的5%时,依覆盖最多TCon中未被覆盖的元素为目标,使用贪心算法逐个生成测试用例,加入TR,并从TCon中删除被最优个体代表的测试用例覆盖的元素,如此循环,直至TCon为空。
为了检验方案的性能,与美国国家标准与技术研究院(National Institute ofStandards and Technology,NIST)提供的几种常用的组合测试用例生成方案作了对比实验,实验结果如表1所示。
表1.测试用例数量对比表
由表1可以看出,不论组合数为多少,差分进化算法均能够生成更少的测试用例。当组合数较少时,差分进化算法与其他三种算法生成的测试用例数量差别不大,随着组合数的增加,数量的差别越来越大。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (2)
1.一种新型组合测试用例生成方法,其特征在于:第一步:
初始化:首先,读取“参数及其可选值数量文件”,将待测问题的参数及各个参数的可选值的数量信息提取出来,并存储于字典Dictionary<int,int>型的字典dictArgAndValNums中;读取算法配置参数并存储于相应的变量中;然后从配置文件中读取组合强度t,并根据给定的待测功能参数总数及组合强度t,生成参数的所有可能的组态并存储到链表listArgConfig中;最后,根据listArgConfig和dictArgAndValNums生成组态表,并存储于Dictionary<List<int>,List<List<int>>>型的字典dictConfigurations中;
第二步:随机生成n个测试用例,
当测试用例集TR中的用例数量较少时,由于组态表TCon中存在大量未被覆盖的元素,此时采用优化搜索的方式和随机生成的方式生成的个体的适应度几乎没有差别;为了提高效率,在为进行优化生成之前,先随机生成n个测试用例存入TR,n取组态数的0.5%,并从TCon中删除被这n个测试用例覆盖的元素,
第三步:使用差分进化算法逐条生成测试用例,
第四步:使用一维扩展的贪心算法来生成测试用例;
当组态表TCon中未被覆盖的元素数量小于总数量的5%时,依覆盖最多TCon中未被覆盖的元素为目标,使用贪心算法逐个生成测试用例,加入TR,并从TCon中删除被最优个体代表的测试用例覆盖的元素,如此循环,直至TCon为空。
2.根据权利要求1所述的一种新型组合测试用例生成方法,其特征在于:第三步:使用差分进化算法逐条生成测试用例的实现的步骤如下:
步骤1:随机生成N个解组成初始种群listPopulation,对初始种群中的个体进行评价;N为种群大小,种群大小取100;
步骤2:对第g代种群中的每个个体xi(g),通过以下步骤求得新个体:
步骤2.1:随机选择种群中另外三个与xi(g)不同的个体xr1(g)、xr2(g)、xr3(g)执行变异操作,生成临时解ti(g);
ti(g)=xr1(g)+F×[xr2(g)-xr3(g)],其中F为比例因子,比例因子取0.1,其中:xr1(g)为随机选出的第一个个体,xr2(g)为随机选出的第二个个体,xr3(g)为随机选出的第三个个体;
步骤2.2:将临时个体与当前个体交叉,生成新解vi;
其中r为0~1之间均匀分布的随机数,cr为交叉概率,rand为1~d之间均匀分布的整数,d为问题维数,用以确保至少有一维分量继承自目标个体t;交叉概率取0.2-0.3的浮点数;
步骤2.3:将新解与当前解进行比较,选择较好的解作为下一代的个体;
步骤3:如果g=MaxEvoluteGeneration则将找到的最优解添加到TR中,并从TCon中删除被该最优个体代表的测试用例覆盖的元素;否则返回步骤2;其中MaxEvoluteGeneration为最大进化代数,最大进化代数取60,其中f[ti(g)]为个体ti(g)的适应度,f[xi(g)]为个体xi(g)的适应度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310578532.9A CN103544109B (zh) | 2013-11-15 | 2013-11-15 | 一种组合测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310578532.9A CN103544109B (zh) | 2013-11-15 | 2013-11-15 | 一种组合测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544109A CN103544109A (zh) | 2014-01-29 |
CN103544109B true CN103544109B (zh) | 2016-08-17 |
Family
ID=49967581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310578532.9A Expired - Fee Related CN103544109B (zh) | 2013-11-15 | 2013-11-15 | 一种组合测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544109B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294120B (zh) * | 2015-06-26 | 2020-06-05 | 伊姆西Ip控股有限责任公司 | 测试代码的方法、设备和计算机程序产品 |
CN105608009B (zh) * | 2015-12-30 | 2018-06-26 | 合肥东芯通信股份有限公司 | 基于matlab产生随机测试用例的gui工具及方法 |
CN108563556A (zh) * | 2018-01-10 | 2018-09-21 | 江苏工程职业技术学院 | 基于差分演化算法的软件缺陷预测优化方法 |
CN110245065A (zh) * | 2018-03-09 | 2019-09-17 | 北京京东尚科信息技术有限公司 | 自动化测试的方法和装置 |
CN111913877B (zh) * | 2020-07-03 | 2021-09-28 | 中国科学院信息工程研究所 | 一种面向文本配置文件的模糊测试方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135937A (zh) * | 2011-03-15 | 2011-07-27 | 西安邮电学院 | 一种两两覆盖组合软件测试用例集生成方法 |
CN103164330A (zh) * | 2011-12-14 | 2013-06-19 | 航天信息股份有限公司 | 软件测试用例自动生成方法 |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090077538A1 (en) * | 2007-09-18 | 2009-03-19 | Michael Paul Keyes | Methods for testing software using orthogonal arrays |
-
2013
- 2013-11-15 CN CN201310578532.9A patent/CN103544109B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102135937A (zh) * | 2011-03-15 | 2011-07-27 | 西安邮电学院 | 一种两两覆盖组合软件测试用例集生成方法 |
CN103164330A (zh) * | 2011-12-14 | 2013-06-19 | 航天信息股份有限公司 | 软件测试用例自动生成方法 |
CN103279415A (zh) * | 2013-05-27 | 2013-09-04 | 哈尔滨工业大学 | 基于组合测试的嵌入式软件测试方法 |
Non-Patent Citations (2)
Title |
---|
基于One-test-at-a-time策略的可变力度组合测试用例生成方法;王子元;钱巨;陈林;徐宝文;《计算机学报》;20121215(第12期);全文 * |
组合测试用例集的动态生成算法;崔应霞;李龙澍;姚晟;《电子科技大学学报》;20110730(第7期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103544109A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544109B (zh) | 一种组合测试用例生成方法 | |
Zhang et al. | Treepi: A novel graph indexing method | |
CN110471795A (zh) | 区块链状态数据恢复方法及装置、电子设备 | |
CN104408163B (zh) | 一种数据分级存储方法和装置 | |
CN109885576A (zh) | 一种哈希表创建方法及系统、计算设备及存储介质 | |
CN113535972B (zh) | 一种融合上下文语义的知识图谱链路预测模型方法及装置 | |
CN103902702A (zh) | 一种数据存储系统和存储方法 | |
Wagner et al. | Computational topology in text mining | |
CN106326427A (zh) | 线性结构到树形结构的数据结构转换方法 | |
CN110059129A (zh) | 数据存储方法、装置及电子设备 | |
CN109829065A (zh) | 图像检索方法、装置、设备及计算机可读存储介质 | |
Dai et al. | An acquisition policy for a multi-supplier system with a finite-time horizon | |
Zhang et al. | SUMMA: subgraph matching in massive graphs | |
CN110097581B (zh) | 基于点云配准icp算法构建k-d树的方法 | |
Romero Ruiz et al. | Memetic algorithm with hungarian matching based crossover and diversity preservation | |
Soukaina et al. | A hybrid genetic algorithm for solving 0/1 knapsack problem | |
CN107807793B (zh) | 分布式计算机存储系统中数据副本异构存储与访问方法 | |
CN117079744A (zh) | 含能分子人工智能设计方法 | |
CN108092670B (zh) | 编码方法和装置 | |
Sørensen | A down‐up chain with persistent labels on multifurcating trees | |
CN108460074A (zh) | 基于BloomFilter的多列索引在列存数据库中的创建及使用方法 | |
Zhang et al. | Small files storing and computing optimization in Hadoop parallel rendering | |
CN106980685A (zh) | 数据处理方法及数据处理装置 | |
CN102968467A (zh) | 一种多层Bloom Filter的优化方法及查询方法 | |
Glover et al. | Polynomial unconstrained binary optimisation–part 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160817 Termination date: 20181115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |