浅谈大模型生成测试用例

引言

大语言模型(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()等);

  • 18
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
黑盒测试是一种测试方法,它不需要关心底层代码逻辑的具体实现。在黑盒测试中,最常见的测试用例设计方法之一是等价类划分法。等价类划分法将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每个等价类的代表性数据在测试中的作用等价于该等价类中的其他值。如果某个等价类中的一个测试用例发现了错误,那么该等价类中的其他测试用例也有可能发现同样的错误。反之,如果某个等价类中的一个测试用例没有发现错误,那么该等价类中的其他测试用例也不太可能发现错误。因此,通过等价类划分法可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。基于需求设计测试用例是测试设计和开发测试用例的基础,首先需要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。然后,根据每个测试点进行测试用例的设计。在黑盒测试中,可以使用等价类划分法来生成测试用例,从每个等价类中选取代表性数据作为测试用例,以覆盖不同的输入情况。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [软件测试之黑盒测试用例](https://blog.csdn.net/m0_72161237/article/details/130273285)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [黑盒测试用例设计方法](https://blog.csdn.net/qq_49129184/article/details/123825090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linux基金会AI&Data基金会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值