基于大模型的测试断言生成技术
报告摘要
2024 AI+研发数字峰会总结
核心内容
本次峰会围绕AI在研发领域的应用,重点探讨了基于大模型的测试断言生成技术。该技术旨在利用大语言模型(LLM)提升单元测试生成的正确性、充分性和鲁棒性,解决传统方法在断言生成上的不足。
主要观点
- 大模型在测试生成中的潜力:LLM具有强大的语义理解和代码生成能力,可以用于生成测试用例和断言。
- 现有方法的局限性:
- 编译错误和运行时错误较多。
- 缺乏测试反馈和覆盖率信息。
- 生成的测试用例可能重复,导致效率低下。
- 断言生成的重要性:测试断言是单元测试的核心部分,手动编写成本高且容易出错。
- TestART方法:通过提示引导和动态反馈机制,提高测试用例的生成质量,并结合修复策略解决错误,显著提升了测试用例的通过率和覆盖率。
- EASE方法:通过检索和LLM的结合,进一步优化断言生成的准确性,展示了LLM与检索技术结合的潜力。
- RetriGen方法:结合传统信息检索和大模型,实现基于混合检索增强的断言生成,提升了断言的语义和词汇匹配能力。
关键信息
一、TestART方法
1. 生成阶段
- 代码预处理:清理注释和多余空行,保留关键代码。
- 提示设计:包括代码上下文、预期行为描述和测试条件,用于生成多样化的测试用例。
- 错误处理:初步修正语法错误,记录生成结果,分析覆盖范围。
2. 修复阶段
- 错误分类:编译错误、运行时错误和断言错误。
- 修复策略:
- 模板修复:包括导入错误、布尔类断言、相等类断言、插入异常处理、增加捕获语句。
- 大模型修复:当模板修复失败时,将错误信息反馈给LLM,进行进一步修复。
- 覆盖反馈:利用测试覆盖率信息引导LLM生成更全面的测试用例。
二、断言生成研究
1. LLM在断言生成中的表现
- 准确率:CodeT5表现最佳,达到58.71%的准确率。
- 错误检测能力:LLMs平均能检测32个真实漏洞,比最先进方法EDTAS提高52.38%。
- 候选断言数量影响:随着候选数量的增加,断言生成的准确性显著提升。
2. 断言类型的影响
- 表现较好的断言类型:NotNull、False、Null等。
- 表现较差的断言类型:Equals、ArrayEquals等。
3. 输入/输出长度的影响
- 最佳输入长度:300-400 tokens。
- 最佳输出长度:小于100 tokens时,准确性更高。
三、RetriGen方法
1. 混合检索器
- 基于token的检索器:使用Jaccard系数衡量词汇相似性。
- 基于Embedding的检索器:使用CodeLlama模型计算语义相似性,通过余弦相似性评估。
- 混合相似度计算:结合词汇和语义相似度,使用加权公式进行优化。
2. 断言生成组件
- 基础模型:CodeT5,用于生成断言。
- 输入表示:将测试前缀与检索到的断言连接,形成新输入序列。
- 损失函数:通过交叉熵最小化预测断言和真实断言之间的差异。
3. 研究问题
- RQ1:RetriGen与现有方法相比表现更优。
- RQ2:不同组件对RetriGen有效性的影响显著。
- RQ3:RetriGen在其他LLMs上具有良好的可扩展性。
结论与展望
- TestART 方法在提升测试生成的通过率和覆盖率方面表现出色,尤其在结合修复和反馈机制后。
- LLMs 在断言生成中展现出强大的潜力,尤其在结合检索增强技术后。
- 未来研究方向:
- 探索多断言过滤方法以进一步提升断言生成质量。
- 研究更高效的模型结构和训练方法,以提升性能。
- 推动AI在软件测试中的实际应用,提高测试效率和质量。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载