早在上世纪末,遗传算法就因其特点而被运用到了测试用例的生成领域,并且效果显著。遗传算法借鉴生物学中的进化理论,通过代级之间的遗传变异,运用编码技术将测试数据映射到个体的基因空间,并通过选择个体、基因重组、变异等遗传操作和优胜劣汰的进化机制来确定搜索方向,从而找到可行的最优解。遗传算法能自动获取搜索的相关信息并用于自优化,而且遗传算法具有隐形并行性和全局寻优能力。在研究该课题过程中,以下项目组的试验和成果对该课题的研究做出了突出的贡献:
Jin-Cherng Lin[1]等人对适应度函数进行了研究,提出使用广义海明距离(Hamming_distance)来构建适应度函数。25430
Staknis 提出了深度测试可被用于自动化测试领域,其优点是减少软件测试的时间,精力,劳力和成本[2]。
Berndt等将输入数据进行划分,将其分为几组区间,使得每个区间的数据都得到取样的同时,可以减少同类数据的重复选择,使用简单遗传算法进行求解,并使用了求解过程中的插桩记录来给出求导过程的方向[3]。论文网
蔡立志等提出了一种用于选择当前局部优化覆盖的测试用例的测试方法,并通过多个当前局部优化覆盖生成满足承兑测试基准的测试用例套,有效降低了相同覆盖率下的测试用例数量[4]。
陈雨等结合自适应算子和禁忌搜索思想,充分发挥遗传算法的全局搜索和禁忌搜索算法局部搜索优势,从而提高了测试数据生成效率[5]。
D.Bird[6]等提出使用随机法来自动生成测试数据,这种方法可以快速随机生成很多的测试数据,且几乎没有约束,但是这方法的代价非常高。
M.Gallagher等人[7]对程序采用插桩,使用输入空间中随机一组数据为入口来执行路径,并使用插桩语句返回每个变量及谓词情况给测试数据生成器。
全君林等提出,在软件的回归测试过程中,使用最小化测试用例集的算法模型,该算法具有更高的效率[8]。 国内外遗传算法研究现状:http://www.youerw.com/yanjiu/lunwen_19223.html