前言

大家好,上周我用 LangChain 做了一个 RAG 知识库问答系统,效果还不错。这周结合自己的本职工作(测试开发),尝试把 AI 用到测试流程中。

测试日常最耗时的环节之一就是写测试用例。如果能让大模型根据需求文档、接口定义、代码注释等自动生成高质量测试用例,就能极大提升效率。

今天我们就来实战:基于需求文档自动生成结构化测试用例

一、为什么测开需要 AI?

  • 测试用例编写重复性高、容易遗漏
  • 需求频繁变更,手动维护成本高
  • AI 可以快速生成覆盖正例、边界、异常场景的用例
  • 2026 年,AI 辅助测试已经是很多团队的标配

二、环境准备(沿用上篇)

使用上周已经搭建好的 LangChain + Ollama 环境即可。

三、核心实现思路

  1. 读取需求文档(支持 PDF、Markdown、纯文本)
  2. 使用 RAG 增强上下文(让模型更懂你的业务)
  3. 精心设计 Prompt,让模型按标准化格式输出测试用例
  4. 输出 Excel 或 Markdown 格式,方便直接导入测试平台

四、完整代码实战

Python

from langchain_community.document_loaders import PyPDFLoader, TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings, ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 1. 加载需求文档
loader = PyPDFLoader("需求文档.pdf")   # 或 TextLoader("需求.md")
docs = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100)
splits = text_splitter.split_documents(docs)

# 2. 创建向量库
embeddings = OllamaEmbeddings(model="qwen2.5:14b")
vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings, persist_directory="./test_rag_db")

retriever = vectorstore.as_retriever(search_kwargs={"k": 5})

# 3. 设计测试用例生成 Prompt(这个是灵魂!)
template = """你是一位资深测试开发工程师,请根据以下需求文档生成完整的测试用例。

需求内容:
{context}

请严格按照以下格式输出(Markdown 表格形式):

### 测试用例列表

| 用例ID | 测试模块 | 测试场景 | 前置条件 | 操作步骤 | 预期结果 | 用例类型 | 优先级 |
|--------|----------|----------|----------|----------|----------|----------|--------|

要求:
- 生成至少 15 条测试用例
- 必须包含:正常场景、边界值、异常场景、权限验证
- 用例类型:功能/边界/异常/性能/安全
- 优先级:P0/P1/P2
- 语言要专业、清晰、可直接执行

现在开始生成:
"""

prompt = ChatPromptTemplate.from_template(template)

llm = ChatOllama(model="qwen2.5:14b", temperature=0.2)

test_chain = (
    {"context": retriever | (lambda docs: "\n\n".join(doc.page_content for doc in docs)), 
     "question": lambda x: x}
    | prompt
    | llm
    | StrOutputParser()
)

# 4. 执行生成
result = test_chain.invoke("请帮我生成这个需求的测试用例")
print(result)

五、实际效果评估(我跑完后的真实感受)

优点

  • 5 分钟内能生成 20+ 条结构化用例,大幅节省时间
  • 边界和异常场景覆盖比手动更全面
  • 可以反复迭代(改 Prompt 就能优化)

当前局限

  • 生成的用例有时过于“模板化”,需要人工二次审查和补充
  • 对业务理解深度依赖 RAG 质量(建议把历史 Bug 单、接口文档也扔进去)
  • 复杂交互逻辑(如多页面流程)目前生成效果一般

我的改进建议(测试视角):

  1. 把 Swagger/OpenAPI 接口定义也喂给模型
  2. 增加“历史 Bug 库 RAG”,让模型优先覆盖高风险点
  3. 最终还是人 + AI 结合,AI 生成初稿,人做 Review 和补充

六、今日感悟

作为测试,我越来越觉得未来的测试开发不是被 AI 替代,而是学会如何更好地和 AI 协作。 谁能把 AI 工具链熟练融入测试流程(用例生成 → 自动化脚本生成 → 缺陷分析 → 测试报告),谁就能在团队里更有竞争力。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐