共计 2037 个字符,预计需要花费 6 分钟才能阅读完成。
随着大模型(Large Language Model, LLM)技术的倒退,LLM 在许多软件工程工作上体现出良好的成果,比方代码生成、搜寻、对话等工作。近期,许多钻研工作联合 LLM 技术和软件剖析技术来解决软件工程畛域的问题。
软件工程顶级会议 ICSE2023 文章《Large Language Models are Few-shot Testers: Exploring LLM-based General Bug Reproduction》(来自韩国科学技术院大学的 Shin Yoo 团队) 公布了 LIBRO 技术,是首个面向通用缺点的主动重现工作。该技术无效利用大模型技术晋升了缺点重现技术的有效性,实现业界冲破。
试验结果表明,在支流数据集 Defects4J 中,LIBRO 技术可依据缺点报告主动生成测试用例并重现出 251 个缺点(共 750 个缺点),主动重现率达 33%。LIBRO 借助 LLM 技术在 NLP 畛域的突出停顿,在 SE 畛域中的缺点重现问题中实现重大突破。利用 LLM 的技术劣势来晋升 SE 畛域的技术能力无望成为行业趋势,吸引越来越多的研究者和业界从业人员。
论文链接详见:
https://arxiv.org/abs/2209.11515 以下围绕 LIBRO 技术的次要步骤进行介绍。如图 1 所示,LIBRO 框架次要包含四个步骤,别离是:(A) 提醒工程、(B) LLM 查问、(C) 后处理、(D) 抉择 & 排序。
步骤 A(提醒工程):在 LLM 技术中,如何结构无效的提醒进行查问是一个关键问题。LIBRO 基于缺点报告构建提示信息,利用的信息包含缺点报告的题目和形容信息。
此外,LIBRO 还在提示信息中退出测试用例实例疏导大模型生成测试用例。下图给出了一个缺点报告的实例和对应的提示信息。
步骤 B (LLM 查问):将之前结构的提示信息输出大模型,大模型将输入一个测试用例生成的后果。具体来说,LIBRO 应用的大模型是基于 GPT- 3 的 CodeX 模型。
LIBRO 结构的提示信息开端是“public void test”,这会疏导大模型生成一段测试用例代码。此外,LIBRO 通过加权随机采样(weighted random sampling)来晋升大模型查问成果,并生成多个测试用例作为备选测试用例。下图是基于之前例子里的提示信息生成的一段测试用例代码。
步骤 C (后处理):LIBRO 对大模型生成的测试用例的后处理指将测试用例函数放入对应测试类中,并解决执行该测试用例所需的依赖。
具体来说,LIBRO 首先依据测试类与测试用例函数的文本类似度来计算测试类和测试函数的映射关系。该策略在业界支流数据集中可能胜利匹配 89% 的测试类与测试函数的关系,是一种无效的匹配策略。
为了解决测试用例函数的依赖问题,LIBRO 首先解析生成的测试用例函数,并辨认变量类型以及援用的类名 / 构造函数 / 异样。而后,LIBRO 通过在测试类中与现有 import 语句进行词法匹配,并过滤掉曾经导入的类名。
步骤 D (抉择 & 排序):一个可能重现缺点的测试用例指当且仅当测试用例因为缺点报告中阐明的缺点而执行失败。换而言之,LIBRO 生成可能重现缺点的必要条件是:该测试用例在被测程序的谬误版本中编译胜利然而执行失败。该钻研工作将这类测试用例称为 FIB(Fail In the Buggy program)。
LIBRO 对大模型生成的若干测试用例进行抉择和排序,从而优先举荐品质更高的生成后果。LIBRO 的抉择和排序算法次要包含三种启发式策略:
(1)如果测试用例执行失败信息和 / 或显示了在缺点报告中提到的行为(比方异样或输入值),那么该测试用例可能是重现缺点的测试用例。
(2)LIBRO 依据抉择测试用例的汇合大小来察看大模型生成的测试用例之间的一致性。直觉上,如果大模型生成大量类似的测试用例,那么阐明大模型认为这类测试用例具备更高的可信度。即,这类测试用例是大模型达成的共识。
(3)LIBRO 依据测试用例的长度来决定它们的优先级,起因是短的测试用例更便于用户了解。缺点重现实例介绍:以下是一个 LIBRO 重现 AssertJ-Core 我的项目中编号为 2666 的缺点报告的实在案例介绍。
如下截图 Table VIII 是理论缺点报告,如下截图 Listing 4 是利用 LIBRO 生成的测试用例。缺点报告中提到在特定条件下比拟 i 和 I 会失败。LIBRO 依据缺点报告的形容主动生成了可能重现该缺点的测试用例。
文章来自 PaaS 技术创新 Lab;
PaaS 技术创新 Lab 隶属于华为云,致力于综合利用软件剖析、数据挖掘、机器学习等技术,为软件研发人员提供下一代智能研发工具服务的外围引擎和智慧大脑。
咱们将聚焦软件工程畛域硬核能力,一直构筑研发利器,继续交付高价值商业个性!退出咱们,一起创始研发新“境界”!
(详情欢送分割 mayuchi1@huawei.com;guodongshuo@huawei.com)PaaS 技术创新 Lab 主页链接:https://www.huaweicloud.com/lab/paas/home.html