一、用例生成实践效果
在日常工作安排中,持续优化测试技术、提高测试效率始终是重点任务。近期,我们在探索实践使用大模型生成测试用例,期望能够借助其强大的自然语言处理能力,自动化地生成更全面和高质量的测试用例。
当前,公司已经普及使用 JoyCoder,我们可以拷贝相关需求及设计文档的信息给到 JoyCoder,让其生成测试用例,但在使用过程中有以下痛点:
- 仍需要多步人工操作:如复制粘贴文档,编写提示词,拷贝结果,保存用例等
- 响应时间久,结果不稳定:当需求或设计文档内容较大时,提示词太长或超出 token 限制
因此,我探索了基于 LangChain 与公司现有平台使测试用例可以自动、快速、稳定生成的方法,效果如下:
| 用例生成效果对比 | 使用 JoyCoder | 基于 LangChain 自研 |
|---|---|---|
| 生成时长(针对项目–文档内容较多) | 10~20 分钟左右,需要多次人工操作(先会有一个提示:根据您提供的需求文档,下面是一个 Markdown 格式的测试用例示例。由于文档内容比较多,我将提供一个概括性的测试用例模板,您可以根据实际需求进一步细化每个步骤。);内容太多时,报错:The maximum default token limit has been reached、UNKNOWN ERROR:Request timed out. This may be due to the server being overloaded,需要人工尝试输入多少内容合适 | 5 分钟左右自动生成(通过摘要生成全部测试点后,再通过向量搜索的方式生成需要细化的用例);内容太多时,可根据 token 文本切割后再提供给大模型 |
| 生成时长(针对普通小需求) | 差别不大,1~5 分钟 | 差别不大 |
| 准确度 | 依赖提示词内容,差别不大,但自研时更方便给优化好的提示词固化下来 | 更优 |
LangChain 是一个开源框架,用于构建基于大型语言模型(LLM)的应用程序。LLM 是基于大量数据预先训练的大型深度学习模型,可以生成对用户查询的响应。LangChain 提供各种工具和抽象,以提高模型生成的信息的定制性、准确性和相关性。例如,开发人员可以使用 LangChain 组件来构建新的提示链或自定义现有模板。LangChain 还包括一些组件,可让 LLM 无需重新训练即可访问新的数据集。
二、细节介绍
1. 基于 Langchain 的测试用例生成方案
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 方案 1:将全部产品需求和研发设计文档给到大模型,自动生成用例 | 用例内容相对准确 | 不支持特大文档,容易超出 token 限制 | 普通规模的需求及设计 |
| 方案 2:将全部产品需求和研发设计文档进行摘要后,将摘要信息给到大模型,自动生成用例 | 进行摘要后无需担心 token 问题 | 用例内容不准确,大部分都只能是概况性的点 | 特大规模的需求及设计 |
| 方案 3:将全部产品需求和研发设计文档存入向量数据库,通过搜索相似内容,自动生成某一部分的测试用例 | 用例内容更聚焦,无需担心 token 问题 | 不是全面的用例 | 仅对需求及设计中的某一部分进行用例生成 |
因 3 种方案使用场景不同,优缺点也可互补,故当前我将 3 种方式都实现了,提供大家按需调用。
2. 实现细节
2.1 整体流程
(此处展示整体流程图)
2.2 技术细节说明
- PDF 内容解析:LangChain 支持多种文件格式的解析,如 csv、json、html、pdf 等,而 pdf 又有很多不同的库可以使用,本次选择 PyMuPDF,它以功能全面且处理速度快为优势。
- 文件切割处理:为了防止一次传入内容过多,容易导致大模型响应时间久或超出 token 限制,利用 LangChain 的文本切割器,将文件分为各个小文本的列表形式。


