We use cookies to improve your experience with our site.

Java自动化测试生成工具实证研究:有效性和挑战

An Empirical Study on Automated Test Generation Tools for Java: Effectiveness and Challenges

  • 摘要:
    研究背景 软件测试在软件开发过程中具有非常重要的作用,测试自动化技术有助于提高软件测试的有效性和效率。自动化的测试生成工具可以实现测试自动化,并进一步缓解由编写手工测试用例引起的低效率问题。目前已出现了许多单元测试生成方法,如基于搜索的算法、随机测试和符号执行。自2007年以来,大量针对Java程序的自动化测试用例生成工具引起了公众的关注,成为研究热点。然而,现有的自动化测试生成工具还不够成熟,仍不能被软件测试组广泛使用。
    目的 本文通过设计详细的实验和评估指标,对目前最先进的Java自动化测试生成工具EvoSuite、Randoop、JTeXpert、T3、jDoop和Tardis进行了全面的实证研究,探讨了它们的优缺点,并对工具的改进提出了建议。
    方法 我们选择了6个自动化的测试生成工具,涵盖了主流的测试方法,包括基于搜索的测试,随机测试和符号执行。我们选择了六个知名的开源Maven项目作为测试基准:Apache BCEL、JSOUP、ZXING CORE、Apache C. Lang、JFREECHART和Apache C. Collections。我们提出了四个实证研究问题,并设计了一个测试工作流,实现自动运行测试生成工具,收集数据和评估各种指标。此外,我们还从代码覆盖率、突变评分、测试套件规模、可读性和实际故障检测能力等不同方面对所选工具及其相关技术进行了实证分析。根据实验结果,讨论了混合技术的优缺点。此外,我们还介绍了设置和执行这些工具的经验,并总结了它们的可用性和用户友好性。最后,我们从测试套件可读性改进、有意义的断言生成、随机测试工具的测试套件缩减和符号执行集成等方面对自动化测试生成工具提出了一些建议。
    结果 基于搜索的工具在代码覆盖率、突变评分和可读性方面表现最好,而随机测试工具则会产生最大的测试套件,从而影响测试效率。将测试生成方法与符号执行相结合只能在某些特殊情况下提高自动生成测试的质量。由此可见,混合方法还有很大的改进空间。基于搜索的工具产生的测试在故障检测方面相对更稳定,因为它们更擅长生成具体的输入值和复杂的路径条件。根据我们的经验,自动化测试生成工具仍然需要完善相关的文档和功能,以提高其可用性和用户友好性。
    结论 结果表明,基于搜索的工具在代码覆盖率、突变评分和可读性方面表现最佳。随机测试工具产生最大的测试套件,影响了测试效率。目前将符号执行与基于搜索或随机测试相结合的工具仍不能满足我们的期望。我们总结了六种工具的优点、缺点和潜在的改进。此外,我们相信机器学习、自然语言处理等新技术可以应用于测试输入生成、断言语句的自动学习、可读性提升、测试套件缩减等,从而提高测试效率和测试质量。

     

    Abstract: Automated test generation tools enable test automation and further alleviate the low efficiency caused by writing hand-crafted test cases. However, existing automated tools are not mature enough to be widely used by software testing groups. This paper conducts an empirical study on the state-of-the-art automated tools for Java, i.e., EvoSuite, Randoop, JDoop, JTeXpert, T3, and Tardis. We design a test workflow to facilitate the process, which can automatically run tools for test generation, collect data, and evaluate various metrics. Furthermore, we conduct empirical analysis on these six tools and their related techniques from different aspects, i.e., code coverage, mutation score, test suite size, readability, and real fault detection ability. We discuss about the benefits and drawbacks of hybrid techniques based on experimental results. Besides, we introduce our experience in setting up and executing these tools, and summarize their usability and user-friendliness. Finally, we give some insights into automated tools in terms of test suite readability improvement, meaningful assertion generation, test suite reduction for random testing tools, and symbolic execution integration.

     

/

返回文章
返回