APP下载

基于改进遗传算法的软件测试数据自动生成系统研究

2020-04-10孙德刚

现代信息科技 2020年1期

摘  要:随着软件测试自动化水平的进一步提升,其对自动准确生成软件测试数据的要求也逐渐提高。但由于以往常用的遗传算法存在一定的局限性,难以令软件测试数据始终保持较快的自动生成速度与数据高质量。因此需要对该遗传算法进行优化改进,在这一背景下,本文将从阐明改进遗传算法的必要性入手,分别从算法设计与系统设计两方面,重点针对基于改进遗传算法的软件测试数据自动生成系统进行简要分析研究。

关键词:改进遗传算法;软件测试数据;自动生成系统

中图分类号:TP311.53;TP18      文献标识码:A 文章编号:2096-4706(2020)01-0023-02

Abstract:With the further improvement of the level of software test automation,its requirements for automatically and accurately generating software test data have gradually increased. However,due to the limitations of the commonly used genetic algorithms in the past,it is difficult to keep the software test data always at a relatively fast automatic generation speed and high quality. Therefore,the genetic algorithm needs to be optimized and improved. In this context,this article will start by clarifying the necessity of improving the genetic algorithm,from the aspects of algorithm design and system design,this paper focuses on the automatic generation system of software test data based on improved genetic algorithm.

Keywords:improved genetic algorithm;software test data;automatic generation system

0  引  言

虽然国内外目前有许多研究人员加入到遗传算法及其优化改进的研究队伍中,并经过多年努力也取得了一定研究成果。但有關改进遗传算法在软件测试数据自动生成中的实际应用等,相关研究还相对较少。因此本研究不仅能够有效丰富该领域的理论研究,同时也可以为实现软件测试数据自动生成系统的优化设计提供相应的实践依据。

1  改进遗传算法设计软件测试数据自动生成系统的必要性

标准遗传算法中,对于群体p(t)一般需要运用遗传算子,经过选择、交叉以及变异运算,生成群体p(t+1)并在此基础上依次进行解码与解集合处理,最后进入个体评价环节,当T即遗传算法终止迭代次数比t值小时,直接选取当前群体当中的最优个体作为最终解即可[1]。因此采用遗传算法实现软件测试数据自动生成,即便无任何外界信息,也无需确定规则,只凭借迭代次数最大值开展循环搜索,便能够达到并行搜索的效果,进而使得数据自动生成具有较高灵活性。但由于在标准遗传算法当中,交叉与变异概率完全固定,在算法执行的整个过程中,无论是交叉还是变异算法执行次数期望值并不发生变化,但种群进化后期,如果交叉与变异算法多次被执行,将会破坏优秀的测试用例。且在算法中止时,其有可能产生早熟现象,并直接将局部最优解作为全局最优解,由此难以保障软件测试数据是自动生成的稳定性以及数据生成质量,故而有必要对标准遗传算法进行优化改进。

2  改进遗传算法下的软件测试数据自动生成系统设计分析

2.1  算法设计

2.1.1  算法流程

针对传统遗传算法存在的局限性,本文在继续使用遗传算法的基础上,设计采用模拟退火算法对遗传算法进行有效改进。改进后的遗传算法在自动生成软件测试数据时,首先将在个体编码中使用二级制,由此形成个体集后再运用二级制编码对多参数级联编码问题进行有效解决。然后在完成参数初始化操作后,直接将初始测试数据准确输入其中,自动计算适应值,此时需要根据初始输入测试数据反馈,运用遗传算法中的选择、交叉与变异运算生成新的种群。对生成的新种群使用模拟退火算法进行最优迭代,直至其出现迭代次数最大值,即需要降低初始设定稳定,令T初=aT初,此时如果达到终止条件,则通过比较分析新种群以及初始种群的适应值,结合最终得到的比较结果自动输出最优数据集即可结束算法。否则需要持续进行模拟退火降温操作,直至其与终止条件相符合。

2.1.2  优化用例

一般情况下,采用代价测试覆盖率的最小值优化数据测试用例。考虑到代价和覆盖率相互制约,因此本文提出在使用改进的遗传算法下优化软件测试数据用例,如果用ti代表各测试用例,用代表软件测试数据集Test ={t1,t2,…,tn},用取值为正数的Costj代表和各测试用例一一对应的测试代价。且测试代价主要由系统运行所需内存空间、CPU时间等共同构成。通过转化软件测试数据是指成为一个Tests的真子集MinTS,其测试覆盖与Tests测试覆盖度相一致。利用改进后的遗传算法,在最优化测试集合当中加入测试代价最下用例,随后直接删除覆盖测试需求,对该过程进行多次重复操作直至同时出现完全一样的两个测试用例[2]。此时将同样的两个测试用例加入最优测试结合当中,在用例与全部测试需求相符合的情况下即可终止算法。此时所得到的即为最优软件测试数据用例。但值得注意的是,在优化测试数据用例时,其数据库及测试数据均需要对左右执行程序当中,任意一个分支及其所使用的数据进行全覆盖,每一个数据测试用例均能够对各个CPU运行进行全程完整记录。

2.2  系统设计

2.2.1  新建算法动态链接库

为使运用改进后的遗传算法能够有效增强软件测试数据自动生成算法的适用性,使其具有更高的移植性,首先,本文通过将改进后的遗传算法封装成动态链接库,便于系统根据自身实际需要随时进行调取使用。为提升算法封装的有效性,本文首先直接利用专业的工具软件,應用其中自动的应用程序新建一个空算法动态链接库,在对其进行重新命名后直接存储至和主程序一致的目录下[3]。其次,新建有关于算法的类,主要添加包括bianmadll.h与bainmadll.cpp以及yichuanxiliedll.cpp等在内的各种头文件,根据被添加的各头文件,完成定义遗传算法二进制编码、初始化改进后遗传算法的参数定义等操作。例如使用bianmadll.h定义遗传算法二进制编码,使用bainmadll.cpp这一头文件进行编码化执行操作。头文件diedaicaozuodll.h被用于定义迭代操作,其编码化执行操作时需要使用的头文件为diedaicaozuodll.cpp。最后,自动生成Gaijin.dll即对应的解决方案,由主程序根据其实际需要随时进行调取使用,完成单元测试用例的自动生成与准确移植。

2.2.2  系统层次架构的设计

在完成遗传算法的优化改进后,本文通过充分考虑软件测试数据自动生成需求,在积极参考其他相关研究资料的基础上,选择使用分层设计理念,将整个软件测试数据自动生成系统分成三大层,分别为数据访问层、业务逻辑层、页面显示层。数据访问层作为整个基于改进遗传算法的软件测试数据自动生成系统最底层,占据着绝对的基础性地位,该层中通过运用专业的数据库,并采用具有良好通用性的ADO.NET数据接口,负责完成各项软件测试数据的采集与传输。业务逻辑层作为系统中间层,分别与数据访问层和页面显示层相互连接,发挥着承上启下的重要作用。数据访问层中的ADO.NET数据接口与业务逻辑层当中由各个业务组件共同构成的工作流组件中的数据接口相互连接,实现软件测试数据的高效共享传输。所有采集得到的有关工作流组件的数据,将统一传输至业务逻辑层中的ASPX当中,而ASPX则直接与页面显示层当中的工作流客户端,即.aspx网页相互连接,负责在该页面中直接自动显示获取的各项软件测试数据,最终达到软件测试数据快速、准确自动生成的目的。

2.3  运行成效

在改进遗传算法中,将种群设定为300,将终止迭代次数统一设定为25,将交叉概率分布设定为0.7与0.4,将变异概率分别设定为0.04和0.02。在标准遗传算法中,其他参数不变,只将交叉概率与变异概率固定设置为0.8与0.02,分别各自运行标准遗传算法与改进遗传算法下的软件测试数据自动生成系统共计50次,每五次为一组取均值。根据最终的运行结果可知,改进遗传算法的执行速度更快,具有更好的收敛性。如同样在系统运行10次的情况下,标准遗传算法中,系统每组平均执行时间不足80 ms,但改进遗传算法中系统每组平均执行时间仍然保持90 ms以上。除此之外,基于标准遗传算法的软件测试数据自动生成系统每次生成的数据结果并不完全相同,但改进遗传算法下系统运行具有较高的稳定性,生成测试数据范围较大,具有较高的数据生成效率。

3  结  论

根据本文的分析研究,可知运用深入融合模拟退火算法,与自适应交叉与变异算子的方式,对遗传算法进行优化改进。并运用改进后的遗传算法设计软件测试数据自动生成系统,能够在保障软件测试数据具有更广阔的搜索生成范围的基础上,进一步提升数据生成速度,并确保数据始终具有较高的质量水平。因此证明,改进遗传算法在软件测试数据自动生成系统中具有较高的应用价值。

参考文献:

[1] 姬峰.基于改进遗传算法的软件测试自动化机制研究 [J].信息技术,2019(10):88-93.

[2] 韩霄汉,叶方彬,窦健,等.基于改进遗传算法的接口测试数据集的生成方法 [J].济南大学学报(自然科学版),2019,33(1):56-60.

[3] 王佩佩.基于自适应遗传算法的测试数据自动生成理论与方法 [D].徐州:中国矿业大学,2018.

作者简介:孙德刚(1978.04-),男,汉族,山东德州人,高级工程师,学士学位,研究方向:教育信息化、软件开发。