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 字 时,自动启用分块模式:

  1. 分块:按 50,000 字切分,chunk 0 含图片,其余为纯文本
  2. 逐块分析:每个 chunk 独立分析,输出部分需求列表
  3. 合并:拼接并重排 REQ-ID(REQ-001, REQ-002, …)
  4. 主流程:基于合并后的需求分析,执行测试点 → 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_KEYDEEPSEEK_API_KEY;可修改 crew.py 中的 get_llm() 接入其他 OpenAI 兼容 API。


License

MIT

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐