论文部分内容阅读
随着软件的复杂性和规模的不断增大,自动化测试是软件测试发展的一种必然趋势。然而由于测试用例的不确定性和测试程序的多样性,测试用例的自动生成成为技术上的难点。目前的大部分自动化测试工具主要针对测试的执行和管理,在测试数据的自动生成方面还不完善,当程序规模较大时,手工编写测试用例的工作量很大,构造全覆盖的测试用例非常困难,造成测试效率不高。由于测试用例的产生是一个不可判定性问题,一般的搜索算法受到了极大的限制。传统的标准遗传算法在生成测试用例时存在早熟等缺陷,在寻找最优解的过程中往往需要花费较高的代价。本文针对这些不足,对遗传算法进行改进和优化;在个体适应性评价标准方面,将适应度大于种群平均适应度的个体的适应度再求平均,得到一个新的平均值,再根据这个数值选择进入下一代的个体,通过变异和杂交操作丰富个体的多样性,防止出现收敛过早的现象;在进行交叉操作时,采用一种动态控制交叉点的位置的交叉策略,扩大搜索空间;在变异算子上,采用最优个体保留法提高遗传算法在局部空间的搜索能力和整体的运行效率。实验数据表明,改进后的遗传算法相比传统的遗传算法在测试用例生成的效率和效果上都有明显的优势。改进后的遗传算法已被应用到实际的大学生程序设计比赛的在线评测系统中。本文在C语言评判内核的基础上开发基于Web的在线评测系统,实现了比赛管理、在线编译、在线评测和成绩排名等功能,提高了在线评测系统的测试能力,扩展了C语言评判系统的功能,解决了本校大学生程序设计竞赛管理的问题,为师生提供了一个源程序评判和交流的平台。目前,系统运行稳定,已多次成功举办学校的程序设计比赛。