Test Case Generator / AI 测试用例生成器(多Agent组合,效果可观)
Test Case Generator / AI 测试用例生成器
基于 CrewAI 多智能体 的自动化测试用例生成方案,从需求文档一键生成禅道可导入的测试用例 CSV,覆盖需求分析、测试点设计、QA 评审、用例生成与评审全流程。落地效果可观,推荐使用
- 有需要源码的,关注并在评论区回复666会私信源码
核心价值
| 痛点 | 解决方案 |
|---|---|
| 需求文档冗长,手工编写用例耗时 | AI 自动解析需求,生成结构化测试点与用例 |
| 多格式需求文档难以统一处理 | 支持 txt/md/pdf/docx/doc/xlsx,含图片多模态分析 |
| 超长文档超出模型 token 限制 | 自动分块分析,合并后完整覆盖全文档 |
| 禅道导入格式易出错 | 严格按禅道 11 列模板输出,可直接导入 |
系统架构
┌─────────────────────────────────────────────────────────────────────────┐
│ Test Case Generator │
├─────────────────────────────────────────────────────────────────────────┤
│ 需求文档 (txt/md/pdf/docx/doc/xlsx) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ 文档 > 55k 字? ┌─────────────────────────┐ │
│ │ 普通流程 │ ◄─── 否 ────────────── │ 分块流程 │ │
│ │ 单次分析 │ │ 分块 → 逐块分析 → 合并 │ │
│ └────────┬────────┘ └────────────┬──────────────┘ │
│ │ 是 │ │
│ └──────────────────┬──────────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 1. 需求分析 → 2. 测试点设计 → 3. QA 评审 → 4. 禅道用例 → 5. 用例评审 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 禅道用例 CSV (所属模块, 相关需求, 用例标题, 前置条件, 步骤, 预期, ...) │
└─────────────────────────────────────────────────────────────────────────┘
工作流程
| 阶段 | Agent | 输出 |
|---|---|---|
| 1. 需求分析 | 需求分析师 | 功能需求 REQ-xxx、验收标准、边界条件、图片说明 |
| 2. 测试点设计 | 测试点设计师 | 测试点 TP-xxx,映射到需求 ID |
| 3. QA 评审 | QA 评审员 | 去重、补全、修正后的测试点列表 |
| 4. 禅道用例生成 | 禅道用例生成器 | 11 列 CSV,可直接导入禅道 |
| 5. 用例评审 | 用例评审员 | 格式与内容校验报告 |
多 Agent 协同工作
本方案基于 CrewAI 实现 5 个专业 Agent 的顺序协作:每个 Agent 负责一个阶段,前一阶段的输出作为下一阶段的输入,形成完整的「需求 → 用例」流水线。
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 需求分析师 │ ───► │ 测试点设计师 │ ───► │ QA 评审员 │
│ (多模态) │ │ │ │ │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ 需求文档 │ 需求分析 │ 测试点
│ 工具读取 │ (REQ-xxx) │ (TP-xxx)
│ │ │
▼ ▼ ▼
┌────────────────────────────────────────────────────────────────────────────────┐
│ Context 传递:上一阶段输出 → 下一阶段输入 │
└────────────────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ 禅道用例生成器 │ ───► │ 用例评审员 │
└────────┬─────────┘ └────────┬─────────┘
│ 评审后测试点 │ 禅道 CSV
│ │
▼ ▼
11 列 CSV 模板 格式与内容校验报告
各 Agent 职责与协作
| Agent | 角色 | 输入 | 输出 | 能力/工具 |
|---|---|---|---|---|
| 需求分析师 | Senior Requirements Analyst | 需求文档路径 | 结构化需求分析(REQ-xxx、验收标准、边界条件) | 多模态、requirements_document 工具(支持图片) |
| 测试点设计师 | Senior Test Point Designer | 需求分析结果 | 测试点列表(TP-xxx,映射到 REQ) | 覆盖功能/边界/负面/边缘场景 |
| QA 评审员 | Senior QA Reviewer | 测试点列表 | 去重、补全、修正后的测试点 | 检查完整性、冗余、可执行性 |
| 禅道用例生成器 | ZenTao Test Case Writer | 评审后测试点 | 11 列禅道 CSV | 严格格式、步骤/预期编号 |
| 用例评审员 | Test Case Reviewer | 禅道 CSV | 格式与内容校验报告 | 确认可导入、可追溯 |
协作特点
- 顺序依赖:前一阶段完成后再进入下一阶段,避免信息缺失或冲突。
- 上下文传递:CrewAI 通过
context将上一任务的输出自动注入下一任务的描述。 - 职责分离:每个 Agent 专注单一领域,减少「大而全」导致的泛化与错误。
- 可追溯:REQ → TP → 用例 形成完整链路,便于需求覆盖分析。
支持的需求文档格式
| 格式 | 说明 | 图片支持 |
|---|---|---|
.txt / .md |
纯文本 | 否 |
.pdf |
PDF 文档 | 是,提取页面图片 |
.docx |
Word 2007+ | 是,提取内嵌图片 |
.doc |
Word 97–2003 | 需 LibreOffice 或 antiword;无则用 olefile 纯 Python 提取(无图) |
.xlsx |
Excel | 否 |
多模态:PDF/DOCX 中的图片会被提取,AI 可结合图片内容(如 UI 原型、流程图)分析需求。
长文档分块分析
当需求文档超过 55,000 字 时,自动启用分块模式:
- 分块:按 50,000 字切分,chunk 0 含图片,其余为纯文本
- 逐块分析:每个 chunk 独立分析,输出部分需求列表
- 合并:拼接并重排 REQ-ID(REQ-001, REQ-002, …)
- 主流程:基于合并后的需求分析,执行测试点 → QA 评审 → 禅道用例 → 用例评审
无需手动分段,完整文档均可被分析。
禅道用例输出格式
CSV 严格按禅道导入模板,包含 11 列:
| 列名 | 说明 |
|---|---|
| 所属模块 | 如:登录模块、用户管理 |
| 相关需求 | REQ-001 等需求 ID |
| 用例标题 | 用例名称 |
| 前置条件 | 执行前提 |
| 步骤 | 1. 第一步\n2. 第二步\n3. 第三步 |
| 预期 | 1. 预期1\n2. 预期2\n3. 预期3 |
| 关键词 | 多个关键词用分号分隔(如 更新仓库;小版本;软件包),单列 |
| 优先级 | 1–4(1 最高) |
| 用例类型 | 功能测试/性能测试等 |
| 适用阶段 | 系统测试/集成测试等 |
| 用例状态 | 正常/待评审等 |
导入方式:禅道 → 测试 → 用例 → 导入 → 选择 CSV 文件。
安装
cd test-case-generator
uv sync
# 或 pip install -e .
配置
cp .env.example .env
在 .env 中配置 LLM(二选一):
| 变量 | 说明 |
|---|---|
VOLCANO_API_KEY |
火山方舟 API Key(推荐) |
DEEPSEEK_API_KEY |
DeepSeek API Key |
VOLCANO_MODEL |
可选,默认 doubao-pro-32k-241215 |
DEEPSEEK_MODEL |
可选,默认 deepseek-chat |
使用方法
命令行
# 使用需求文档
python -m test_case_generator samples/requirements_sample.md
# 指定输出路径
python -m test_case_generator 需求文档.docx -o output/zentao_cases.csv
python -m test_case_generator 需求文档.pdf -d output -o output/zentao_cases.csv
| 参数 | 说明 |
|---|---|
requirements |
需求文档路径(必填) |
-o, --output |
禅道用例 CSV 路径(默认 output/zentao_cases.csv) |
-d, --output-dir |
输出目录(默认 output) |
代码调用
from test_case_generator.main import run
run(
requirements_path="path/to/requirements.docx",
output_dir="output",
output_file="output/zentao_cases.csv",
chunk_threshold=55000, # 可选,超过此字数启用分块
)
项目结构
test-case-generator/
├── pyproject.toml
├── README.md
├── .env.example
├── samples/
│ └── requirements_sample.md
└── src/
└── test_case_generator/
├── __main__.py
├── main.py # 入口与编排
├── crew.py # CrewAI 多智能体定义
├── chunking.py # 长文档分块与合并
├── config/
│ ├── agents.yaml # Agent 配置
│ └── tasks.yaml # 任务配置
└── tools/
├── requirements_document_tool.py # 多格式需求文档读取
└── file_reader_tool.py
依赖
- Python >= 3.10
- crewai, crewai-tools:多智能体框架
- python-docx:DOCX 解析
- openpyxl:XLSX 解析
- pymupdf:PDF 解析
- olefile:DOC 纯 Python 解析(无 LibreOffice 时)
- pyyaml:配置加载
常见问题
Q: .doc 文件提示需要 LibreOffice?
A: 安装 LibreOffice(sudo apt install libreoffice)可获得最佳效果;若无法安装,会尝试用 olefile 纯 Python 提取文本(无图片,部分可能乱码)。建议将 .doc 转为 .docx 后使用。
Q: 文档很长,是否会被截断?
A: 超过 55,000 字会自动启用分块;每个 chunk 会单独分析,最后合并,保证全文档被覆盖。
Q: 禅道导入失败?
A: 确认 CSV 为 UTF-8 编码,11 列顺序正确;步骤与预期使用 1. xxx\n2. xxx 格式;含逗号或换行的字段需用双引号包裹。
Q: 如何更换 LLM?
A: 在 .env 中配置 VOLCANO_API_KEY 或 DEEPSEEK_API_KEY;可修改 crew.py 中的 get_llm() 接入其他 OpenAI 兼容 API。
License
MIT
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)