Journal of Frontiers of Computer Science and Technology ›› 2008, Vol. 2 ›› Issue (5): 449-466.DOI: 10.3778/j.issn.1673-9418.2008.05.001

• 综述·探索 • Previous Articles     Next Articles

Survey of Evolutionary Testing

XIE Xiaoyuan1, XU Lei1, XU Baowen1,2+,NIE Changhai1, SHI Liang3   

  1. 1. School of Computer Science and Engineering, Southeast University, Nanjing 210096, China
    2. Jiangsu Institute of Software Quality, Nanjing 210096, China
    3. Microsoft (China) Company Ltd., Beijing 100080, China
  • Received:1900-01-01 Revised:1900-01-01 Online:2008-10-06 Published:2008-10-06
  • Contact: XU Baowen

演化测试技术的研究

谢晓园1,许 蕾1,徐宝文1,2+,聂长海1,史 亮3   

  1. 1. 东南大学 计算机科学与工程学院,南京 210096
    2. 江苏省软件质量研究所,南京 210096
    3. 微软中国有限公司,北京 100080
  • 通讯作者: 徐宝文

Abstract: Evolutionary Testing (ET), as a very promising technique for automatic testing, can generate effec-tive test cases for many test objects successfully. ET converts the task of test case generation into an optimization problem, and uses Genetic Algorithm(GA) to search for the desired solutions with very little cost. The input domain of system under test is the search space of GA. With a complete automation, this search process can be more efficient. Besides as a result of both the guidance and the randomicity, the search can overcome the shortcoming of complex search domain and avoid a blind search of simple random testing. In recent years, more and more researches have been focused on ET, and have made it being applied successfully in many areas. This paper introduces the application of ET in structural testing, functional testing, temporal performance testing and object-oriented testing. From summarizing the main ET methods in those applications, it analyzes and compares each method’s advantages and shortcomings, in order to provide some valuable advices for studying and selecting proper ET methods. Additionally the paper concludes the performance optimization techniques of ET, and finally it presents ET’s prospect and the future research for ET.

Key words: software testing, Genetic Algorithm (GA), Evolutionary Testing (ET), dynamic optimization, prematurity, flag variable

摘要: 演化测试作为一种非常有前景的自动化测试技术,可以成功地为多种测试目标生成高质量的测试用例。它将测试用例的生成过程转化为一个利用遗传算法进行数值优化的问题。算法的搜索空间即为待测软件的输入域,其中最优解即是满足测试目标的测试用例。该搜索过程可以实现完全自动化,它所具有的导向性可以避免盲目搜索,较随机测试有着更加明确的目标和方向性;同时该搜索过程还具有一定的随机扰动,可以很好地克服复杂搜索域所带来的种种局限性。近年来,越来越多的学者开始关注于演化测试技术的研究,并取得了一些研究成果,使之在多种领域得以成功地应用。分别在结构性测试、功能性测试、性能测试以及面向对象测试领域,对演化测试技术进行了总结。通过对各领域的应用方法进行分类概括,比较分析了不同方法的优势与不足,为理解、评价以及合理选取演化测试方法提供了较有价值的参考。在此基础上,总结评估了现有的演化测试优化技术及其适用性。最后,展望了演化测试技术未来的研究方向。

关键词: 软件测试, 遗传算法, 演化测试, 动态优化, 种群早熟, flag变量