首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LLM 生成接口自动化测试用例:四类核心知识库的构建与应用

LLM 生成接口自动化测试用例:四类核心知识库的构建与应用

作者头像
Antony
发布2025-08-11 13:21:40
发布2025-08-11 13:21:40
3430
举报

测试卖油翁:无它,唯知识库上下文尔。

在软件测试领域应用大语言模型(LLM)时,知识库的构建和调用是核心环节,其作用是为 LLM 提供完成给定任务的精确 “上下文”,确保 LLM能将任务正确理解,确保生成的自动化测试用例等内容精准、有效。 本文将结合LLM辅助接口自动化用例生成来介绍4种测试知识库的建立和使用。

场景-- 生成接口自动化测试用例

基于LLM来生成自动化用例是很多人已经想到的LLM赋能测试的场景。笔者也曾经写过一篇《为什么说只发送接口说明给LLM要求生成单接口用例是在“耍流氓”?》文章来阐述由于知识库建设不足,导致了给定LLM的上下文不够全面、完善,让LLM生成的结果就只能是样子货,无法实现后续的直接、正确执行的效果。笔者梳理了以下4种认为必须必要的知识库,供读者参考。

  • 知识库1: 接口中心

在DevOps平台的建设过程中,接口中心是一项非常基础和重要的基础设施,笔者曾写过一篇《接口中心四大闭环:如何确保接口生命周期的完美呈现(AI说这个能吸引读者)》文章,介绍了贯彻接口生命周期管理的接口中心的建设。在AI4SE中,当用于接口用例生成时,这也是大家都会想到的知识库。

如何使用?

通过自然语言来描述测试用例的某个步骤,如“提交XX申请”。然后用这句话到接口知识库进行召回。

知识库的建立

使用Q&A模式,

Q: 接口中心中的对于接口的中文描述

A: 接口Spec (路径、请求方法、参数类型、必填项、枚举值、响应码、响应体结构)

关键字: 系统、组件、接口目录

知识库更新维护

与DevOps平台结合,当感知到代码提交,对接口定义有改变的时候,调用向量数据库的insert/update chunk的接口来对接口知识库进行更新维护。

  • 知识库2 -接口补充知识库

通常从接口spec中,涉及到出入参为对象的,只有对象的类型声明,因此从接口中心向RAG向量数据库同步数据时,要通过递归查询出入参中涉及到的对象类型和相应的数据结构申明,一并丢入这个接口chunk的A中供召回。

也曾经考虑过“二次召回”的思路,也就是模拟接口中心,建立对象知识库,当某个接口被召回时,再去对象知识库中召回出入参中涉及到的各个对象,这个方案虽然能节约不少存储,但是也比较复杂,就放弃了。

相类似的,对于某个字段的 validator,也是接口用例设计过程所需要的重要知识点。通过DevOps平台在接口上报时,一并解析了字段申明中的validator并上报到了接口平台,因此该部分数据在接口召回时,可以作为单独一段数据直接进行使用。

另外一个问题是某个字段的业务枚举值。这些数据是比较难以通过数字化方式获取到的。如果组织存在专门的“业务字典”之类的微服务,则可以考虑全量查询或者是直接复制其数据库的方式来拿到这类数据。否则就只能靠人肉整理了。后者是很难的,毕竟这个时代,在推行一些数字化方案时,最大的障碍其实就是使用者的额外工作量。

  • 知识库3-数据库表知识库

这个知识库包括了数据库名、表名、字段含义、数据类型、主键 / 外键关系、索引设计等DDL内容。

在接口自动化测试过程中,通常需要控制接口的上下文,并对执行结果进行断言。而接口(如新增、查询、修改、删除接口)的本质是对数据库中数据的 “间接操作”(例如用户注册接口需向user表插入数据,订单提交接口需更新order表),因此对于数据库的操作通常是测试用例的必要组成部分,出现在Setup/Teardown/断言中。

如某个删除接口的测试用例中,为了能够将删除操作执行完成,在数据库中必须存在一个预设的用于删除的记录。因此需要在Setup中临时为该用例插入一条数据。因此,为了能够正确插入,就要让LLM写出正确的insert 语句,这就是要使用到数据库表的知识库了。

如何使用?

通过自然语言来描述测试用例的某个步骤,通常是用例的setup/teardown,如“向订单表插入数据 xxx”。

然后用这句话到数据库知识库中召回数据库表DDL。

知识库的建立

使用Q&A模式,

Q: 建表语句中的对于某个表的中文描述

A: 整个建表语句

关键字: 系统、组件

知识库更新维护

理论上DDL是代码库的一部分,通过与DevOps平台结合,当感知到代码提交,有新建或者alter表的SQL提交进来时,对表的定义有改变,就调用向量数据库的insert/update chunk的接口来对接口知识库进行更新维护。不过这个方案需要对于所有系统/微服务的代码库进行监控,比较繁琐。在实践中,考虑到存在着测试基线环境服务,测试团队会定期维护更新基线,因此选择了在维护过程中,新增一个环节,将测试基线环境中的各个数据库的DDL导出并全量更新到数据库表基线知识库中。

而对于在测版本而言,由于其并没有上线,可能存在与基线环境的差异(新增/修改/删除表), 因此,可能还存在着为各个版本服务的在测数据库表知识库。这样的知识库可能存在多个,服务于各个并行的拟发布版本。

而在召回时,在测数据库表知识库 要优先于数据库表基线知识库,以确保DDL的正确性。

  • 知识库4 – 自动化用例知识库

这是最为重要的一个知识库了。对于接口自动化测试来说,即使是一个单接口用例,也通常需要setup/teardown/断言等接口调用之外的步骤。对于LLM来说其任务也不仅仅是根据API spec来生成一组接口入参数据。为了保证生成的用例具备可执行性,前述这些步骤也是必须必要的。

如何使用?

通过自然语言来描述测试要点,然后用这句话到(自动化)测试用例知识库中召回已有的相似测试用例。

知识库的建立

使用Q&A模式或者父子分段模式

Q: 测试要点

A: 整个测试用例,包括步骤和数据

父子分段模式的话,每个步骤作为子分段。召回时召回整个用例。

关键字: 系统、组件、需求等

知识库更新维护

理论上测试用例知识库是自动化测试平台的一个影子库。类似于通过Flink CDC等方式进行数据库的跨库同步,可以近实时地将测试用例平台上的关于测试用例新增/删除/更新的操作同步到向量数据库中。

那么这些知识库又该如何使用呢? 欢迎留言讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试卖油翁:无它,唯知识库上下文尔。
  • 在软件测试领域应用大语言模型(LLM)时,知识库的构建和调用是核心环节,其作用是为 LLM 提供完成给定任务的精确 “上下文”,确保 LLM能将任务正确理解,确保生成的自动化测试用例等内容精准、有效。 本文将结合LLM辅助接口自动化用例生成来介绍4种测试知识库的建立和使用。
    • 场景-- 生成接口自动化测试用例
      • 如何使用?
      • 知识库的建立
      • 知识库更新维护
      • 知识库的建立
      • 如何使用?
      • 知识库的建立
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档