CN107391385B - 一种软件测试用例生成技术的构建方法 - Google Patents
一种软件测试用例生成技术的构建方法 Download PDFInfo
- Publication number
- CN107391385B CN107391385B CN201710749046.7A CN201710749046A CN107391385B CN 107391385 B CN107391385 B CN 107391385B CN 201710749046 A CN201710749046 A CN 201710749046A CN 107391385 B CN107391385 B CN 107391385B
- Authority
- CN
- China
- Prior art keywords
- population
- test
- test case
- aging
- software
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种基于重生差分进化方法的软件测试用例生成技术的构建方法,步骤如下:1、收集待测软件源代码;2、给定适应度函数;3、定义老化因子,并给定老化因子界限值;4、构建重生差分进化方法及结果输出程序,搭建应用系统;5、结合应用系统与测试工具搭建测试用例生成平台;6、种群初始化,随机生成初始种群;7、获取随机生成的测试用例的覆盖率;8、完成种群的重生进化;9、输出符合要求的测试用例集;通过上述步骤,可以完成对基于重生差分进化方法的软件测试用例生成技术的构建。本发明适用于解决实际软件测试中的测试用例设计问题,可以帮助软件测试人员在降低成本和缩短时间的同时,设计出具有更高的缺陷检测能力的测试用例集。
Description
技术领域
本发明提供一种软件测试用例生成技术的构建方法,它是一种基于重生进化方法的软件测试用例生成技术的构建方法,它涉及一种基于重生进化方法的软件测试用例生成技术的实现,属于软件可信性、软件测试领域。
背景技术
随着计算机技术的突飞猛进,软件规模日益扩大,软件功能也日趋复杂,软件故障就变得不可避免。如何提高软件产品的可靠性,保证软件产品的质量,已成为计算机技术发展的一个重大研究课题。作为软件工程的一个重要组成部分,软件测试是一个强有力的保证软件质量的方法,因而逐渐为人所重视。
从时间及成本角度考虑,穷举测试是不可能的,因而软件测试过程中的一个核心问题就是测试用例的设计。测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。好的测试用例集不仅能减少软件测试的工作量,降低测试成本,而且能在成本和时间的约束下,发现更多的软件错误。因此如何精选少量的测试用例,提高软件测试的缺陷检测能力,降低测试成本是软件测试优化研究中最关注的核心问题。
在软件测试优化的研究中,尽管动态规划方法对于一些规模较小的问题能得到精确解,但随着问题规模的增加,动态规划方法却无能为力,学者便逐渐将启发式方法应用到测试用例生成技术中。被广泛应用的启发式方法有遗传方法、蚁群方法、粒子群方法与人工蜂群方法。遗传方法通过交叉选择变异不断迭代得到优化后的测试用例。蚁群方法通过信息素更新实现用例寻优。粒子群方法通过空间矢量导向实现用例寻优。人工蜂群通过不同蜂种的工作分配实现用例寻优。这些智能方法可以提升测试用例覆盖率,并且自动生成测试用例。但这些方法都存在着早熟,容易陷入局部最优解,而导致测试用例的检测效率不高的缺点。
差分进化方法是一种新型的启发式优化计算方法,其原理主要包括变异、杂交和选择,即从一个随机产生的初始种群开始,通过把种群中任意两个个体的向量差与第三个个体求和来产生新个体,然后将新个体与当代种群中相应的个体相比较,如果新个体的适应度优于当前个体的适应度,则在下一代中就用新个体取代旧个体,否则仍保存旧个体。通过不断地进化,保留优良个体,淘汰劣质个体,向最优解逼近。这个进化过程在测试用例的设计中就是用例的优化过程,而优劣的衡量指标就是测试用例的覆盖率。目前已有许多的专家学者将差分进化算法运用到了测试用例的生成之中,并且对方法的进化模式和控制参数进行了优化。但是这些优化并未彻底改善差分进化方法如同其他的启发式方法一样,容易陷入局部最优解的缺点。针对这一状况,我们将提出一种基于重生差分进化方法的软件测试用例生成技术的构建方法,在这项技术中,我们在差分进化方法的基础上加入了重生策略。我们定义一个老化因子,当种群老化到一定程度,其老化因子大于给定的界限值时,重生条件被触发,种群将被彻底摧毁,重新生成新的种群。而后继续进化,以实现覆盖率的提升,以此来防止生成测试用例的过程中过早的陷入局部最优解。使用这一技术可以避免差分进化方法过早陷入局部最优,而导致测试用例的覆盖率不达标的缺点,生成精简高效的测试用例集。
该测试用例生成技术在差分进化方法的基础之上结合重生策略,形成基于重生差分进化方法的软件测试用例生成技术,在提高测试用例缺陷检测能力、降低测试用例数量的同时,达到提高软件可信性、可用性的目的。
发明内容
(一)本发明目的:现有的软件测试用例生成方法中,如基于遗传方法、蚁群方法、粒子群方法与人工蜂群方法等启发式的方法,相比于随机输入测试等,已经具有较好的效果,可以提升测试用例覆盖率,并且自动生成测试用例,但这些方法都存在着早熟,容易陷入局部最优解,而导致测试用例的检测效率不高的缺点。因此本发明将克服现有技术的不足,提供一种基于重生差分进化方法的软件测试用例生成技术的构建方法对上述问题进行解决。在这项技术中,我们在差分进化方法的基础上加入了重生策略。我们定义一个老化因子,当种群老化到一定程度,其老化因子大于给定的界限值时,重生条件被触发,种群将被彻底摧毁,重新生成新的种群。而后继续进化,以实现覆盖率的提升,以此来防止生成测试用例的过程中过早的陷入局部最优解。使用这一技术可以避免差分进化方法过早陷入局部最优,而导致测试用例的覆盖率不达标的缺点,生成精简高效的测试用例集。可以看出该技术的构建对现有的基于启发式智能算法的测试用例生成方法进行了整合与创新,形成了基于重生差分进化方法的软件测试用例生成技术。
(二)技术方案
本发明技术方案:一种基于重生差分进化方法的软件测试用例生成技术的构建方法过程如下:
本发明所述方法中,引用RDEA来表述基于重生(即“Rebirth”)与差分进化方法(即“Differential Evolution Algorithm”)相结合的技术。
本发明一种软件测试用例生成技术的构建方法,即一种基于重生差分进化方法的软件测试用例生成技术的构建方法,其步骤如下:
步骤1、收集待测软件源代码;
步骤2、给定适应度函数;
步骤3、定义老化因子,并给定老化因子界限值;
步骤4、构建重生差分进化方法及结果输出程序,搭建应用系统;
步骤5、结合应用系统与测试工具搭建测试用例生成平台;
步骤6、种群初始化,随机生成初始种群;
步骤7、将待测软件源代码及初始种群输出到测试工具中,输出随机生成的测试用例的覆盖率,并返回到测试用例生成平台中;
步骤8、完成种群的重生进化;其做法如下:通过重生差分进化方法,完成种群的变异、杂交及选择,种群老化之后,种群重生,然后继续进化,直至满足种群的累计覆盖率满足终止覆盖率要求stopbc为止;
步骤9、输出符合要求的测试用例集;其做法如下:当种群的累计覆盖率满足终止覆盖率要求stopbc后,通过应用系统的输出程序将满足要求的测试用例集输出。
其中,在步骤1中所述的“收集待测软件源代码”,其做法如下:获取需要进行测试的软件的源程序文件。
其中,在步骤2中所述的“给定适应度函数”,其做法如下:适应度函数是在进化过程中进行优胜劣汰的优劣衡量指标;测试用例的好坏可以用覆盖率来体现,软件测试中常用的覆盖率有语句覆盖率、分支覆盖率及修正条件/判断覆盖;本发明选定测试用例的分支覆盖率covbc作为重生差分进化方法中的适应度函数,分支覆盖又称判定覆盖,是指使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足;分支覆盖率covbc即为测试用例覆盖的分支的比例,covbc可以通过测试工具Testbed直接获得;同时,根据具体需求确定一个分支覆盖率值stopbc作为进化的终止条件,当测试用例的累计覆盖率∑covbc大于等于stopbc时,终止进化,输出所有的测试用例。
其中,在步骤3中所述的“定义老化因子,并给定老化因子界限值”,其做法如下:在一个种群的进化过程中,当种群进化t代后,再经历Δt代进化,累计分支覆盖率不再增加,即在第t代后无法通过当前种群的继续进化找到新的有效测试用例,我们称这种情况为种群的老化;本发明在差分进化方法的基础上,加入了重生策略以克服种群老化来自动生成满足覆盖率要求的测试用例;为了确定种群重生的触发条件,使用老化因子q来确定种群的老化程度;我们定义老化因子q为在进化过程中累计覆盖率没有变化的Δt代所增加的测试用例数占前面t代的用例总数的百分比;
设ni,j为第j代种群中第i个个体的维度,Npopt为第t代种群的个体数,则整个种群进化到到第t代时的总用例数为同理可知,第t+1代,t+2代,t+3代,…,第t+Δt代的总用例数依次为:这里的种群是指所有测试用例的集合,个体则是指测试用例集,维度则是指一个测试用例集中的测试用例的个数;所以老化因子的计算公式为:
随着Δt的增大,老化因子q越来越大;q值可以大于1,q值越大,代表种群老化程度越高;同时,根据具体情况给定一个老化因子界限值qmax,当q≥qmax时,种群老化,重生条件被触发,整个种群被摧毁,而后重新生成新的种群,继续进化,直至满足进化终止的条件。
其中,在步骤4中所述的“构建重生差分进化方法及结果输出程序,搭建应用系统”,其做法如下:
(1)种群初始化,随机生成初始种群;
(2)将待测程序源代码及初始种群输入软件测试工具Testbed,获取分支覆盖率covbc;
(3)判断累计覆盖率是否满足终止分支覆盖率stopbc要求或者进化代数要求,若满足,则输出所有的测试用例,程序终止,若不满足,则转到步骤4;
(4)判断种群是否老化;若种群已经老化,则转到(11),若种群没有老化则转到(5);
(5)种群差分变异;
(6)种群杂交;
(7)将杂交后的子个体及待测程序源代码输入Testbed,获取其分支覆盖率covbc;
(8)选择杂交子个体与父体中覆盖率covbc更高的个体,形成新种群;
(9)计算种群进化代数、累计覆盖率和老化因子;
(10)转到(3);
(11)种群重生;
(12)转(9);
通过上述步骤,即可由搭建重生进化算法和测试用例输出程序构成的应用系统。
其中,在步骤5中所述的“结合应用系统与测试工具搭建测试用例生成平台”,其做法如下:应用系统由重生进化方法和测试用例输出程序组成,测试工具是指Testbed,它可以根据程序源代码及输入的测试用例集自动算出测试用例的分支覆盖率;通过测试用例输出程序将应用系统及测试工具Testbed结合起来,每次进化生成的测试用例集将自动导入Testbed,避免繁杂的人工计算,实现测试用例进化的自动化。
其中,在步骤6中所述的“种群初始化,随机生成初始种群”,其做法如下:假定待测程序输入的范围是[lj,uj],种群中个体的维度为D,则种群中第i个个体Xi可以表示为:Xi={xij,xij,…xij},i=1,2,…,Npop,j=1,2,…,D;本发明采用随机均匀初始化,生成初始种群;取xij=rand[lj,uj],即xij在输入范围[lj,uj]内随机取值;照此规则,则可随机生成初始种群。
其中,在步骤7中所述的“将待测软件源代码及初始种群输出到测试工具中,输出随机生成的测试用例的覆盖率,并返回到测试用例生成平台中”,其做法如下:借助应用系统的测试用例输出程序,可以实现测试用例到Testbed的自动输入,Testbed根据程序源代码及输入的测试用例集算出累计的分支覆盖率,而后将结果自动返回到应用系统。
通过上述步骤,可以完成对基于重生差分进化方法的软件测试用例生成技术的构建,在已有的较为成熟的差分进化方法的基础上加入了重生策略,即可克服差分进化方法容易陷入局部最优解的不足,自动生成满足要求的测试用例集。本发明适用于解决实际软件测试中的测试用例设计问题,可以帮助软件测试人员设计满足要求的测试用例,在降低成本和缩短时间的同时,设计出具有更高的缺陷检测能力的测试用例集,具有较高的实际应用价值。
(三)优点
本发明与现有技术相比的优点在于:现有的软件测试用例生成方法中,如基于遗传方法、蚁群方法、粒子群方法与人工蜂群方法等启发式方法,相比于随机输入测试等,已经具有较好的效果,可以提升测试用例覆盖率,并且自动生成测试用例,但这些方法都存在着早熟,容易陷入局部最优解,而导致设计的测试用例难以满足给定的覆盖率要求,且检测效率不高的缺点。因此本发明将克服现有技术的不足,结合差分进化方法和重生策略提供一种切实有效的软件测试用例的设计方法。
附图说明
图1为本发明的总体步骤流程图。
图2为本发明的种群老化及老化抑制机制图。
图3为本发明的测试用例生成平台示意图。
图4为本发明的重生差分进化方法流程图。
图中序号、符号、代号说明如下:
图1中的“步骤1~9”即技术方案中对应的步骤;
图1中的t即种群开始老化前的进化代数;
图1,2中的Δt即种群开始老化后的进化代数;
图1,4中的q即老化因子;
图1,4中的covbc即分支覆盖率;
图1,2,4中的stopbc,∑covbc即终止分支覆盖率和累计分支覆盖率;
图1,3,4中的Testbed即软件测试工具;
图2中的t1,t2,…,tn即初始种群、第一次重生,…,第n-1次重生的种群开始老化前的进化代数;
图3中的DE即差分进化方法;
图4中的qmax即为老化因子的临界值。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图进行详细描述。
本发明提供了一种基于重生差分进化方法的软件测试用例生成技术的构建方法。利用该方法构建的技术可以生成精简高效的测试用例集,在提高测试用例的缺陷检测能力的同时,降低测试成本。在这项技术中,我们在差分进化方法的基础上加入了重生策略。我们定义一个老化因子,当种群老化到一定程度,其老化因子大于给定的界限值时,重生条件被触发,种群将被彻底摧毁,重新生成新的种群。而后继续进化,以实现覆盖率的提升,以此来防止生成测试用例的过程中过早的陷入局部最优解。使用这一技术可以避免差分进化方法过早陷入局部最优,而导致测试用例的覆盖率不达标的缺点,生成精简高效的测试用例集。
本发明一种基于重生差分进化方法的软件测试用例生成技术的构建方法,如图1所示,其具体构建步骤如下:
步骤一:收集待测软件源代码;其构建方法是:
获取需要进行测试的软件的源程序文件。该源代码需要导入测试工具Testbed中,结合输入的测试用例集可以自动算出测试用例的分支覆盖率,作为适应度函数,作为种群中个体选择的依据。
步骤二:给定适应度函数;其构建方法是:
适应度函数是在进化过程中进行优胜劣汰的优劣衡量指标。测试用例的好坏可以用覆盖率来体现,软件测试中常用的覆盖率有语句覆盖率、分支覆盖率及修正条件/判断覆盖。本发明选定测试用例的分支覆盖率covbc作为重生差分进化方法中的适应度函数,分支覆盖又称判定覆盖,是指使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。分支覆盖率covbc即为测试用例覆盖的分支的比例,covbc可以通过测试工具Testbed直接获得。同时,根据具体需求确定一个分支覆盖率值stopbc作为进化的终止条件,当测试用例的累计覆盖率∑covbc大于等于stopbc时,终止进化,输出所有的测试用例。
步骤三:定义老化因子,并给定老化因子界限值;其构建方法是:
在一个种群的进化过程中,当种群进化t代后,再经历Δt代进化,累计分支覆盖率不再增加,即在第t代后无法通过当前种群的继续进化找到新的有效测试用例,我们称这种情况为种群的老化。初始种群的老化我们称之为局部老化,如图2所示。
本发明在差分进化方法的基础上,加入了重生策略以克服种群老化来自动生成满足覆盖率要求的测试用例。为了确定种群重生的触发条件,使用老化因子q来确定种群的老化程度。我们定义老化因子q为在进化过程中累计覆盖率没有变化的Δt代所增加的测试用例数占前面t代的用例总数的百分比。
设ni,j为第j代种群中第i个个体的维度,Npopt为第t代种群的个体数,则整个种群进化到到第t代时的总用例数为同理可知,第t+1代,t+2代,t+3代,…,第t+Δt代的总用例数依次为:这里的种群是指所有测试用例的集合,个体则是指测试用例集,维度则是指一个测试用例集中的测试用例的个数。所以老化因子的计算公式为:
随着Δt的增大,老化因子q越来越大。q值可以大于1,q值越大,代表种群老化程度越高。同时,根据具体情况给定一个老化因子界限值qmax,当q≥qmax时,种群老化,重生条件被触发,整个种群被摧毁,而后重新生成新的种群,继续进化。重生后的种群在进化到一定代数之后同样可能陷入老化状态,这时候继续重生和进化,直至某一时刻之后重生也同样无法提高累计分支覆盖率∑covbc,这种老化称之为全局老化。全局老化之后,可能无法达到100%累计分支覆盖率的要求,但是一般可以达到终止覆盖率stopbc,即可以生成符合实际要求的测试用例集。同时,局部老化和全局老化之间的种群老化称之为域老化。如图2所示。
步骤四:构建重生差分进化方法及结果输出程序,搭建应用系统。其构建方法是:
应用系统最重要的就是基于重生差分进化方法的软件测试用例生成方法的实现,本方法的流程如下表所示:
方法流程图如图3所示。
步骤五:结合应用系统与测试工具搭建测试用例生成平台。其构建方法是:应用系统由重生进化方法和测试用例输出程序组成,重生进化方法用于生成测试用例,而数据输出程序用于向测试工具输入测试用例,同时将用例导入excel中保存。测试工具是指Testbed,它可以根据程序源代码及输入的测试用例集自动算出测试用例的分支覆盖率。通过测试用例输出程序将应用系统及测试工具Testbed结合起来,每次进化生成的测试用例集将自动导入Testbed,避免繁杂的人工计算,实现测试用例进化的自动化,测试用例生成平台的示意图如图4所示。
步骤六:种群初始化,随机生成初始种群。其构建方法是:
假定待测程序输入的范围是[lj,uj],种群中个体的维度为D,则种群中第i个个体Xi可以表示为:Xi={xij,xij,…xij},i=1,2,…,Npop,j=1,2,…,D。本发明采用随机均匀初始化,生成初始种群。取xij=rand[lj,uj],即xij在输入范围[lj,uj]内随机取值。照此规则,则可随机生成初始种群。
步骤七:将待测软件源代码及初始种群输出到测试工具中,输出随机生成的测试用例的覆盖率,并返回到测试用例生成平台中。其构建方法如下:
借助应用系统的测试用例输出程序,可以实现测试用例到Testbed的自动输入,Testbed根据程序源代码及输入的测试用例集算出累计的分支覆盖率,而后将结果自动返回到应用系统。
步骤八:完成种群的重生进化。其构建方法如下:
通过重生差分进化方法,完成种群的变异、杂交及选择,种群老化之后,种群重生,然后继续进化,直至满足种群的累计覆盖率满足终止覆盖率要求stopbc为止。
差分进化主要包含变异、杂交及选择三个操作。随机选择两个不同的个体向量相减生成差分向量,将差分向量结合缩放因子加到第三个随机选择的个体向量上,生成变异向量,该操作称为变异。假定为种群中随机选择的3个父个体,且r1≠r2≠r3,F∈[0,2]为缩放因子,它用于对差分向量进行放缩,从而可以控制搜索步长。则可以通过公式算出变异向量Vi。
变异向量与目标向量进行参数混合,生成试验向量Ui,这一过程称之为杂交。差分进化方法采用离散杂交算子,其中包括二项式杂交和指数杂交。二项式杂交算子可表示为:
其中,i=1,2,…,Npop,j=1,2,…,D,rand[0,1]是指[0,1]间的随机数,jrand则是指[1,D]间的一个随机数,CR∈[0,1],称为交叉算子。杂交操作是为了保证试验向量Ui中至少有一维来自于变异向量Vi,从而避免与父体Xi完全相同。也就是说通过变异和杂交保证产生一个新的和父体不同的子个体。
产生子个体后,采用一对一的竞争方式。如果试验向量的分支覆盖率优于目标向量的覆盖率,则用试验向量取代目标向量而形成下一代种群,该操作称为选择。选择算子可以表示为:
其中,f(Ui)、f(Xi)分别指的是新个体和父体的分支覆盖率。采用一对一竞争选择,可以保证精英解在进化过程中不会丢失,与排序或竞标赛选择相比更能维持群体的多样性。
通过不断的差分进化可以显著的提升种群的累计覆盖率,而到一定代数后,种群老化。摧毁整个已有种群,按照步骤六的方式重新生成新的种群,继续进化,直到满足终止条件。
步骤九:输出符合要求的测试用例集。其构建方法如下:
当种群的累计覆盖率满足终止覆盖率要求stopbc后,通过应用系统的输出程序将满足要求的测试用例集输出。
通过上述步骤,可以完成对基于重生差分进化方法的软件测试用例生成技术的构建。在这项技术中,我们在差分进化方法的基础上加入了重生策略。我们定义一个老化因子,当种群老化到一定程度,其老化因子大于给定的界限值时,重生条件被触发,种群将被彻底摧毁,重新生成新的种群。而后继续进化,以实现覆盖率的提升,以此来防止生成测试用例的过程中过早的陷入局部最优解。使用这一技术可以避免差分进化方法过早陷入局部最优,而导致测试用例的覆盖率不达标的缺点。本发明适用于解决实际软件测试问题中的测试用例设计问题,可以帮助软件测试人员设计满足要求的测试用例,在降低成本和缩短时间的同时,设计出具有更高的缺陷检测能力的测试用例集。
该测试用例生成技术结合差分进化方法和种群重生策略进行构建,形成较为实用的基于重生差分进化方法的软件测试用例生成技术。
本发明未详细阐述部分属于本领域公知技术。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (6)
1.一种软件测试用例生成技术的构建方法,其特征在于:其步骤如下:
步骤1、收集待测软件源代码;
步骤2、给定适应度函数;
步骤3、定义老化因子,并给定老化因子界限值;
步骤4、构建重生差分进化方法及结果输出程序,搭建应用系统;
步骤5、结合应用系统与测试工具搭建测试用例生成平台;
步骤6、种群初始化,随机生成初始种群;
步骤7、将待测软件源代码及初始种群输出到测试工具中,输出随机生成的测试用例的覆盖率,并返回到测试用例生成平台中;
步骤8、完成种群的重生进化;其做法如下:通过重生差分进化方法,完成种群的变异、杂交及选择,种群老化之后,种群重生,然后继续进化,直至满足种群的累计覆盖率满足终止覆盖率要求stopbc为止;
步骤9、输出符合要求的测试用例集;其做法如下:当种群的累计覆盖率满足终止覆盖率要求stopbc后,通过应用系统的输出程序将满足要求的测试用例集输出;
其中,在步骤3中所述的定义老化因子,并给定老化因子界限值,其做法如下:在一个种群的进化过程中,当种群进化t代后,再经历Δt代进化,累计分支覆盖率不再增加,在第t代后无法通过当前种群的继续进化找到新的有效测试用例,称这种情况为种群的老化;在差分进化方法的基础上,加入了重生策略以克服种群老化来自动生成满足覆盖率要求的测试用例;为了确定种群重生的触发条件,使用老化因子q来确定种群的老化程度;定义老化因子q为在进化过程中累计覆盖率没有变化的Δt代所增加的测试用例数占前面t代的用例总数的百分比;
设ni,j为第j代种群中第i个个体的维度,Npopt为第t代种群的个体数,则整个种群进化到到第t代时的总用例数为同理可知,第t+1代,t+2代,t+3代,…,第t+Δt代的总用例数依次为:这里的种群是指所有测试用例的集合,个体则是指测试用例集,维度则是指一个测试用例集中的测试用例的个数;所以老化因子的计算公式为:
随着Δt的增大,老化因子q越来越大;q值大于1,q值越大,代表种群老化程度越高;同时,根据具体情况给定一个老化因子界限值qmax,当q≥qmax时,种群老化,重生条件被触发,整个种群被摧毁,而后重新生成新的种群,继续进化,直至满足进化终止的条件;
其中,在步骤4中所述的构建重生差分进化方法及结果输出程序,搭建应用系统,其做法如下:
(1)种群初始化,随机生成初始种群;
(2)将待测程序源代码及初始种群输入软件测试工具Testbed,获取分支覆盖率covbc;
(3)判断累计覆盖率是否满足终止分支覆盖率stopbc要求及进化代数要求,若满足,则输出所有的测试用例,程序终止,若不满足,则转到步骤4;
(4)判断种群是否老化;若种群已经老化,则转到(11),若种群没有老化则转到(5);
(5)种群差分变异;
(6)种群杂交;
(7)将杂交后的子个体及待测程序源代码输入Testbed,获取其分支覆盖率covbc;
(8)选择杂交子个体与父体中覆盖率covbc更高的个体,形成新种群;
(9)计算种群进化代数、累计覆盖率和老化因子;
(10)转到(3);
(11)种群重生;
(12)转(9)。
2.根据权利要求1所述的一种软件测试用例生成技术的构建方法,其特征在于:
在步骤1中所述的收集待测软件源代码,其做法如下:获取需要进行测试的软件的源程序文件。
3.根据权利要求1所述的一种软件测试用例生成技术的构建方法,其特征在于:
在步骤2中所述的给定适应度函数,其做法如下:适应度函数是在进化过程中进行优胜劣汰的优劣衡量指标;测试用例的好坏能用覆盖率来体现,软件测试中常用的覆盖率有语句覆盖率、分支覆盖率及修正条件/判断覆盖;选定测试用例的分支覆盖率covbc作为重生差分进化方法中的适应度函数,分支覆盖又称判定覆盖,是指使得程序中每个判断的取真分支和取假分支至少经历一次,判断的真假均曾被满足;分支覆盖率covbc为测试用例覆盖的分支的比例,covbc能通过测试工具Testbed直接获得;同时,根据具体需求确定一个分支覆盖率值stopbc作为进化的终止条件,当测试用例的累计覆盖率∑covbc大于等于stopbc时,终止进化,输出所有的测试用例。
4.根据权利要求1所述的一种软件测试用例生成技术的构建方法,其特征在于:
在步骤5中所述的结合应用系统与测试工具搭建测试用例生成平台,其做法如下:应用系统由重生进化方法和测试用例输出程序组成,测试工具是指Testbed,它根据程序源代码及输入的测试用例集自动算出测试用例的分支覆盖率;通过测试用例输出程序将应用系统及测试工具Testbed结合起来,每次进化生成的测试用例集将自动导入Testbed,避免繁杂的人工计算,实现测试用例进化的自动化。
5.根据权利要求1所述的一种软件测试用例生成技术的构建方法,其特征在于:
在步骤6中所述的种群初始化,随机生成初始种群,其做法如下:假定待测程序输入的范围是[lj,uj],种群中个体的维度为D,则种群中第i个个体Xi表示为:Xi={xij,xij,…xij},i=1,2,…,Npop,j=1,2,…,D;采用随机均匀初始化,生成初始种群;取xij=rand[lj,uj],xij在输入范围[lj,uj]内随机取值;照此规则,则随机生成初始种群。
6.根据权利要求1所述的一种软件测试用例生成技术的构建方法,其特征在于:
在步骤7中所述的将待测软件源代码及初始种群输出到测试工具中,输出随机生成的测试用例的覆盖率,并返回到测试用例生成平台中,其做法如下:借助应用系统的测试用例输出程序,实现测试用例到Testbed的自动输入,Testbed根据程序源代码及输入的测试用例集算出累计的分支覆盖率,而后将结果自动返回到应用系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749046.7A CN107391385B (zh) | 2017-08-28 | 2017-08-28 | 一种软件测试用例生成技术的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710749046.7A CN107391385B (zh) | 2017-08-28 | 2017-08-28 | 一种软件测试用例生成技术的构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391385A CN107391385A (zh) | 2017-11-24 |
CN107391385B true CN107391385B (zh) | 2018-06-01 |
Family
ID=60345627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710749046.7A Active CN107391385B (zh) | 2017-08-28 | 2017-08-28 | 一种软件测试用例生成技术的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391385B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304625B (zh) * | 2018-01-15 | 2021-10-08 | 北京航空航天大学 | 人工智能程序员书写数字飞行器代码的遗传编程决策方法 |
CN108388231B (zh) * | 2018-03-09 | 2020-05-01 | 北京航空航天大学 | 一种机载设备测试需求生成方法及机载设备测试方法 |
CN108763055B (zh) * | 2018-04-19 | 2020-08-25 | 北京航空航天大学 | 一种基于表观遗传的测试用例约束控制技术的构建方法 |
CN110196813B (zh) * | 2019-06-06 | 2023-05-02 | 北京百度网讯科技有限公司 | 接口测试方法、装置、设备和介质 |
CN112749082B (zh) * | 2020-05-11 | 2022-06-24 | 长江大学 | 一种基于de-th算法的测试用例生成方法及系统 |
CN113268432B (zh) * | 2021-06-24 | 2023-09-01 | 广东电网有限责任公司计量中心 | 一种基于进化算法的电能表驱动程序测试方法及系统 |
CN113742251B (zh) * | 2021-11-08 | 2022-01-28 | 山东建筑大学 | 基于集合进化的软件测试路径生成方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0869433A2 (en) * | 1997-03-31 | 1998-10-07 | Siemens Corporate Research, Inc. | A test development system and method for software with a graphical user interface |
CN106681929A (zh) * | 2017-01-23 | 2017-05-17 | 中国第汽车股份有限公司 | 一种电气功能测试用例生成方法及系统 |
-
2017
- 2017-08-28 CN CN201710749046.7A patent/CN107391385B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0869433A2 (en) * | 1997-03-31 | 1998-10-07 | Siemens Corporate Research, Inc. | A test development system and method for software with a graphical user interface |
CN106681929A (zh) * | 2017-01-23 | 2017-05-17 | 中国第汽车股份有限公司 | 一种电气功能测试用例生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于改进异质协同演化的测试用例生成研究;翁芬等;《计算机应用研究》;20160630;第33卷(第6期);第1767-1770页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107391385A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391385B (zh) | 一种软件测试用例生成技术的构建方法 | |
CN107292502B (zh) | 一种配电网可靠性评估方法 | |
CN110348615B (zh) | 基于蚁群优化支持向量机的电缆线路故障概率预测方法 | |
CN105138717A (zh) | 一种动态变异粒子群优化神经网络的变压器状态评估方法 | |
CN104794057B (zh) | 一种交叉事件自动化测试方法和装置 | |
CN112491096B (zh) | 一种用于生成电网仿真分析算例的方法及系统 | |
CN106897821A (zh) | 一种暂态评估特征选择方法及装置 | |
CN107832219A (zh) | 基于静态分析和神经网络的软件故障预测技术的构建方法 | |
CN109492256B (zh) | 一种动态系统状态概率映射矩阵多向搜索方法 | |
CN109947652A (zh) | 一种软件缺陷预测的改进排序学习方法 | |
CN109858798B (zh) | 关联改造措施与电压指标的电网投资决策建模方法及装置 | |
CN104616062A (zh) | 一种基于多目标遗传规划的非线性系统辨识方法 | |
CN108563875A (zh) | 基于多目标优化的模拟电路测点和频率联合优选方法 | |
CN103345384A (zh) | 一种基于分解的变邻域多目标测试任务调度方法及平台 | |
CN104484548A (zh) | 一种改进的序贯故障诊断策略优化方法 | |
CN106682448A (zh) | 基于多目标遗传规划算法的序贯测试优化方法 | |
CN105024645A (zh) | 一种基于矩阵进化的光伏阵列故障定位方法 | |
CN105449667A (zh) | 一种发输电系统可靠性预测方法 | |
CN106886620B (zh) | 航天器测试资源优化配置方法 | |
CN105372989B (zh) | 一种调度控制系统不完整数据参数的估计方法和装置 | |
CN112332420B (zh) | 电力系统风险评估中的分层负荷削减量确定装置及方法 | |
CN111127242A (zh) | 一种基于小样本数据的电力系统可靠性动态实时评估方法 | |
CN103729297A (zh) | 一种基于分层遗传算法的测试用例生成方法 | |
CN103646095B (zh) | 一种基于数据驱动的共因失效的可靠性判断系统及方法 | |
Lai et al. | Missing value imputations by rule-based incomplete data fuzzy modeling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |