浅谈大模型生成测试用例

本文探讨了大语言模型(LLM)如何应用于生成单元测试用例,验证了其在提升软件测试效率上的有效性。通过实验,LLM在编译率、测试通过率和覆盖率方面表现良好,但仍有提升空间。此外,介绍了一种基于静态质量指标的强化学习方法来优化LLM生成的测试用例质量。
摘要由CSDN通过智能技术生成

引言

大语言模型(LLM)在自然语言处理中表现出了卓越的性能,包括问答、翻译、文本生成并且能够处理大规模数据集,并为通用人工智能开辟了新的可能性。

在代码生成领域,LLM已被用于各种编码的相关任务,包括代码生成、代码评审以及单元测试等任务。

本文以LLM生成单元测试用例为切入点,对LLM生成测试用例的有效性和方法进行了简要探讨。

一、LLM生成测试用例的有效性

1.1 大模型:提升软件测试效率的前沿创新

软件测试是一项至关重要的工作,是确保软件产品质量和可靠性的基石。软件测试有助于在开发生命周期的早期识别和解决问题,从而降低维护成本,从而防止出现更严重的复杂情况。

单元测试的目标是验证每个程序单元是否按预期工作并满足指定的要求。单元的意思是指一段可以独立分离和检查的代码。像写代码一样,单元测试不仅要正确,还要满足其他质量属性,例如可维护性和可读性。

软件测试通常会使用软件测试工具,通过软件测试工具来生成测试用例。目前测试工具的研究已经取得了显著的进展,尤其是通过基于搜索、约束和随机等技术生成单元测试的方法,但仍然存在一些挑战,如生成的测试覆盖率和可读性无法完全满足人们的需求,同时全面覆盖仍然是一个难以实现的目标。在面对这些局限性时,研究人员一直在积极探索创新技术,以提高软件测试任务的效率。在这方面,大型语言模型(Large Language Models,LLM)是目前最有前途的方向之一。

1.2 LLM生成测试用例有效性验证方法

论文《An Empirical Study of Using Large Language Models for Unit Test Generation》为软件测试领域的进展提供了重要的实证研究。该研究以三种生成模型(StarCoder、Codex和GPT-3.5-Turbo)为对象,分析它们在单元测试生成任务中的性能。具体而言,研究采用了两个基准测试,分别是HumanEva和Evosuite SF110(Java版本),并通过对编译率、测试正确性以及覆盖率等方面进行评估,深入探讨了这些LLM在生成测试用例方面的有效性。

第一步

论文首先对焦点方法(focal method)进行检索和排除:

  • E1:仅检索非静态方法,且只在公共类中进行检索;

  • E2:排除以is开头、不带参数且返回布尔类型;

  • E3:排除set开头;

  • E4:以get开头且不带参数;

  • E5:覆盖java.lang.Object(toString(),hashCode()等);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux基金会AI&Data基金会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值