摘要

测试用例自动生成技术旨在降低测试成本,与人工生成测试用例相比,它具有更高的测试效率。现有主流的测试工具对软件中的所有文件都平等对待,但是大多数情况下含有缺陷的文件只占整个软件项目的一小部分。因此,如果测试人员能针对更易存在缺陷的文件进行测试,就能极大地节省测试资源。针对以上问题,文中设计了一种基于主动学习的预测引导的自动化测试工具AutoUnit。首先对待测文件池中的所有文件进行缺陷预测,然后对最“可疑”的文件进行测试用例生成,之后将实际测试用例执行结果反馈给缺陷预测模型并更新该预测模型,最后根据召回率判断是否进入下一轮测试。此外,AutoUnit还能在含缺陷文件总数未知时,通过设置不同的目标召回率来及时停止预测引导。它能依据已测文件来预测含缺陷文件总数并计算当前召回率,判断是否停止预测引导,保证测试效率。实验分析表明,当测得相同数量的缺陷文件时,AutoUnit花费的最短时间为目前主流测试工具的70.9%,最长时间为目前主流测试工具的80.7%;当含缺陷文件总数未知且目标召回率设置为95%时,与最新版本的Evosuite相比,AutoUnit只需要检查29.7%的源代码文件就能达到相同的检测水平,且其测试时间仅为Evosuite的34.6%,极大地降低了测试成本。实验结果表明,该方法有效地提高了测试的效率。