2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

【AI赋能万物】一文综述:大模型在软件测试领域的探索

发布日期:2024-07-19 07:38:28 浏览次数: 5752

0. 意义

在数字化时代,软件测试是保障产品质量的坚实盾牌,它通过细致的检验揭示潜在缺陷,确保用户获得可靠体验。然而,随着软件系统日益庞大复杂,传统测试方法面临覆盖率不足、自动化难度大等挑战。此时,大型语言模型(LLMs)以其卓越的理解和生成能力,展现出在自动化测试、缺陷预测等方面的巨大潜力,为软件测试领域带来革命性的创新机遇。

下面来看下论文中的内容和结论。

1. 论文内容

1.1 收集论文的方法

这篇论文分析了102项相关研究。那么,他们首先要做的就是收集这102项相关研究。他们收集论文的方法如下::

(1)自动搜索:使用四个流行的科学数据库进行广泛的搜索,包括ACM数字图书馆、IEEE Xplore数字图书馆、arXiv和DBLP。搜索条件是论文标题中包含与软件测试任务和测试技术相关的关键词,以及与大型语言模型(LLMs)相关的关键词。

(2)手动搜索:为了补充自动搜索可能遗漏的相关论文,作者还在软件工程和人工智能领域的顶级会议记录和期刊文章中进行了手动搜索。选择了基于Google Scholar h5指数的前十个相关会议,排除了三个计算机视觉会议。

(3)纳入和排除标准:为了确保收集的论文与研究范围和问题相符,定义了一套具体的纳入和排除标准。满足纳入标准的研究将被包括在内,而不满足排除标准的研究将被排除。

(4)质量评估:建立了质量评估标准,以排除低质量的研究。每项研究根据一系列问题进行评分,得分低于特定值的论文将被排除。

(5)滚雪球搜索:在完成数据库和会议的搜索、应用纳入/排除标准和质量评估后,作者还进行了滚雪球搜索,检查已收集论文引用的参考文献,以减少遗漏相关文献的风险。

通过上述过程,从14,623篇初步检索的论文中,最终收集了102篇涉及使用LLMs进行软件测试的论文。收集到的论文中,47%发表在软件工程领域,2%发表在人工智能领域,5%发表在程序分析或安全领域,还有46%的论文尚未在arXiv上发表。

1.2 从软件测试视角的分析

从软件测试的角度来看,软件测试的步骤为:制定测试计划阶段、测试计划设计、准备测试用例、执行测试用例、产出测试报告、修复bug和回归测试,如下图:

论文中总结出,大模型一般用于以下三个阶段:

(1)测试用例生成

(2)产出测试报告

(3)bug修复和回归测试

下面我们来看下在这三个阶段中,大模型的具体作用。

1.2.1 测试用例生成

1.2.1.1 单元测试

传统的单元测试生成技术利用基于搜索的、基于约束的或基于随机的策略来生成一套单元测试,其主要目标是最大限度地扩大被测软件的覆盖范围。

利用大模型来生成单元测试,目前主要有以下方向:

(1)预训练和微调(fine-tuning)大模型来生成单元测试 

(2)设计有效的提示来让大模型生成单元测试 

(3)提供额外的文档(例如API接口描述文档)来辅助大模型生成单元测试 

(4)先使用传统的单元测试生成方法生成单元测试,然后利用大模型来提高覆盖不足的功能的单元测试

篇幅原因,这里仅列出应用方向,具体应用实施方法请参考原论文中的参考文献。

论文中提到,目前大模型生成单元测试用例的性能还很低,有待进一步研究。

1.2.1.2 测试断言

测试断言是关于软件系统(或程序、功能或方法)的输出是否正确的信息来源,大多数研究都是针对单元测试用例的测试断言生成。

相关的研究中,有利用源代码或断言数据集来微调LLM以提高断言匹配率的。也有利用提示工程自动检索相似代码,通过少样本提示来提高断言匹配率的。目前最优的匹配率可达到 76%。

1.2.1.3 系统测试输入

这一部分是利用大模型来创建系统测试、功能测试、模块测试的测试输入,以实现测试执行的自动化。

1.2.1.3.1 软件类型方面的输入生成

不同软件测试需要不同系统级测试输入,如移动应用需多样化文本或操作组合;深度学习则需覆盖多样化API的程序。

在移动应用测试方面,大模型主要有三方面的细分应用场景:根据GUI来生成测试的文本输入、按钮动作、生成有效的测试脚本(包括点击按钮的顺序、操作路径等)。

在深度学习库测试方面,需同时满足编程语言(如Python)语法/语义和API输入输出/形状约束。传统技术有局限性,如缺乏多样化的API序列、无法生成任意代码,使用生成式和填充式LLM来生成和变异有效的多样化DL程序输入进行测试,后续研究进一步利用历史漏洞触发程序中的代码来提升漏洞检测性能。

还有一些其它类型的输入生成,例如Simulink系统、SMT求解器、编译器、JavaScript程序等,详情可参考原论文。下图是当前大模型在软件类型方面的测试生成研究的热度:

1.2.1.3.2 测试技术方面的输入生成

这一部分是利用LLM增强传统测试技术。如 通用模糊化测试框架、特定软件的模糊化测试技术、GUI测试、渗透测试等。

1.2.1.3.3 输入输出方面的输入生成

除将源代码或软件作为输入直接输出来测试外,还有其他输入输出形式。个人觉得最有启发性的一个场景是通过自然语言描述来利用大模型生成相应的测试输入

1.2.2 Bug分析

这部分的方向有:

  • • 针对缺陷报告生成相关问题答案,帮助缺陷分类。

  • • 将缺陷组件分类转化为多分类与生成任务,提升分类性能。

  • • 利用LLM零样本设置提取缺陷报告关键信息,检测重复报告。

  • • 用LLM解释软件缺陷,通过学习大量修复提交生成自然语言解释。

  • • 自动生成缺陷标题,助力开发者撰写问题标题。

1.2.3 调试

这一类别指的是识别和定位软件问题(即bug)原因的过程。它包括分析代码、跟踪执行流程、收集错误信息以了解问题的根本原因以及修复问题。目前有的研究方向:

(1)总体调试:利用大模型覆盖调试的全过程 

(2)Bug定位 

(3)Bug复现 

(4)错误解释:针对每个错误生成独特的解释

1.2.4 程序修复

LLM具有先进的自然语言处理和理解能力,能够处理和分析源代码,是执行代码相关任务(如修复错误)的理想工具。

(1)修复单行错误(已知错误) 

(2)修复多行错误(已知错误) 

(3)结合静态代码分析器一边检测一边修复(先检测错误,再修复错误) 

(4)特定bug的修复:通过自然语言描述生成补丁、性能问题修复、特定程序如Rust程序修复

下图是一些程序修复的实验数据:

2. 总结

简单总结一下本文的内容。本文通过一篇论文来罗列了当前大模型在软件测试领域中的一些探索。从软件测试的角度看,目前大模型一般应用于测试用例生成、Bug分析、程序调试、Bug修复等过程中。

本文是对论文中提到的应用方向的罗列,不涉及具体的实现方法。直观的让读者看到有哪些应用方向可以参考,如果读者对某一个方向感兴趣,可以快速地找到参考文献。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅