# doc2case **Repository Path**: hamoud/doc2case ## Basic Information - **Project Name**: doc2case - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # doc2case 基于 stepwise 框架的 AI Agent 工具,用于自动解析文档并生成测试用例。 ## 功能概述 - **特性分析**: 自动识别待测特性类型(存储类、查询类、事务类等) - **文档解析**: 支持 Markdown、PDF、Word 格式文档的解析 - **信息提取**: 从大规模文档中提取功能点、约束条件、业务规则、特性耦合、接口信息 - **测试用例生成**: 自动生成文本格式测试用例,支持多种测试维度 - **质量校验**: 自动校验用例写作规范性(隔离性、环境清理、数据准备等) - **断点恢复**: 支持从任意阶段恢复执行 ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 编译项目 ```bash npm run build ``` ### 3. 准备配置文件 创建配置文件 `config.yaml`,格式如下: ```yaml feature: "待测特性名称" # 测试重点配置(可选) test_focus: priority: - "功能场景" - "规格约束" - "特性耦合" - "接口测试" weights: "功能场景": 0.4 "规格约束": 0.3 "特性耦合": 0.2 "接口测试": 0.1 documents: requirement: "/path/to/需求文档.pdf" design: "/path/to/设计文档.md" product: "/path/to/产品资料.docx" output_dir: "/path/to/output" ``` 参考 `config.example.yaml` 获取完整示例。 ### 4. 执行生成 ```bash npm run dev config.yaml # 或使用编译后的版本 npm start config.yaml ``` ## 执行流程 ``` 特性分析 → 文档校验 → 特性校验 → 完备性校验 → 信息提取 → 用例生成 → 质量校验 ``` ### 各阶段说明 1. **特性分析**: 识别待测特性类型,确定测试重点和关键信息类型 2. **文档校验**: 检查文档格式是否支持(md/pdf/docx/doc) 3. **特性校验**: 确认文档包含指定的特性信息 4. **完备性校验**: 检查内容是否足够支持用例生成 5. **信息提取**: 根据测试重点提取功能点、约束、业务规则、特性耦合、接口信息 6. **用例生成**: 按测试维度权重生成文本格式测试用例文件 7. **质量校验**: 校验用例写作规范性,生成质量报告 ## 特性类型分类 系统支持以下数据库特性类型: | 类型 | 说明 | 典型关键词 | |------|------|------------| | 存储类 | 表结构、索引、分区 | 表结构、索引、分区、存储过程 | | 查询类 | SQL语法、查询优化 | SQL、查询优化、执行计划、视图 | | 事务类 | 分布式事务、锁机制 | 分布式事务、XA、两阶段提交、锁 | | 安全类 | 权限控制、审计 | 权限、角色、认证、审计、加密 | | 性能类 | 并发控制、资源管理 | 并发、吞吐量、缓存、线程池 | | 兼容性类 | 版本兼容、协议兼容 | 版本兼容、Oracle兼容、迁移 | ## 测试维度 根据特性类型,系统自动分配以下测试维度的权重: | 维度 | 说明 | |------|------| | 功能场景 | 正常业务场景下的功能验证 | | 规格约束 | 边界值、限制条件验证 | | 特性耦合 | 与其他特性交互时的行为验证 | | 接口测试 | API/SQL接口的正确性验证 | | 异常测试 | 异常场景和业务规则验证 | ## 输出文件 执行完成后,输出目录将包含: - `feature_analysis_<特性名>.json` - 特性分析结果 - `extracted_info_<特性名>.json` - 提取的结构化信息 - `testcases_<特性名>.txt` - 生成的测试用例文件 - `quality_report_<特性名>.txt` - 用例质量校验报告 ### 测试用例格式示例 ``` ================================================================================ 【测试特性】分布式事务 【特性类型】事务类 【来源文档】需求文档: /path/to/requirement.pdf 设计文档: /path/to/design.md 产品资料: /path/to/product.docx 【生成时间】2026-04-22 10:30:00 【用例总数】8 个 ================================================================================ -------------------------------------------------------------------------------- 【用例编号】TC001 【测试特性】分布式事务 【特性类型】transaction 【测试类型】功能场景测试 【测试维度】功能场景 【功能点ID】FP001 【用例名称】两阶段提交_正常场景 【前置条件】 1. 清理测试环境:删除所有节点的测试数据 2. 数据库集群已启动,包含3个节点 3. 已创建测试表 test_table 【测试步骤】 步骤1: 连接数据库,发起分布式事务 BEGIN 步骤2: 在节点A执行 INSERT 语句 步骤3: 执行 PREPARE 准备阶段 步骤4: 执行 COMMIT 提交事务 【预期结果】 1. PREPARE 阶段返回状态码为 PREPARED 2. COMMIT 阶段返回状态码为 SUCCESS 3. 所有节点数据一致性校验通过 【伪代码】 // 1. 环境清理 cleanup_all_nodes_data(); // 2. 数据准备 create_test_table("test_table"); // 3. 执行测试 conn = connect_to_database(cluster_nodes); conn.begin_distributed_transaction(); conn.execute_on_node("nodeA", "INSERT ..."); prepare_result = conn.prepare(); assert prepare_result.status == "PREPARED"; // 4. 结果验证 commit_result = conn.commit(); assert commit_result.status == "SUCCESS"; verify_data_consistency(); 【备注】 来源文档: 设计文档第3章 ``` ### 质量报告格式示例 ``` ================================================================================ 【特性名称】分布式事务 【校验时间】2026-04-22 10:35:00 【用例总数】8 个 【通过用例】6 个 【问题用例】2 个 ================================================================================ 【总体结论】 共校验 8 个用例,其中 6 个通过规范校验,2 个存在规范性问题。 -------------------------------------------------------------------------------- 【用例编号】TC003 【校验结果】存在问题 环境清理: ✗ 问题 问题: - 用例缺少环境清理步骤 建议: - 建议: 在前置条件或伪代码开头添加清理测试环境的步骤 数据准备: ✗ 问题 问题: - 用例涉及数据操作但缺少数据准备步骤 建议: - 建议: 在前置条件中添加数据准备描述 ``` ## 用例质量校验规则 系统自动校验以下规范性要求: | 规则 | 说明 | |------|------| | 用例隔离性 | 每个用例应独立执行,不依赖其他用例结果 | | 环境清理 | 用例应包含执行前的环境清理步骤 | | 数据准备 | 涉及数据操作的用例应有独立数据准备步骤 | | 步骤清晰性 | 测试步骤应编号明确,描述清晰 | | 结果可验证性 | 预期结果应有明确的判断条件 | | 伪代码完整性 | 伪代码应包含环境清理、数据准备、测试、验证逻辑 | ## 断点恢复 如果执行中断,可以从指定路径恢复: ```bash npm run dev config.yaml <恢复路径> ``` 恢复路径通常位于 `stepwise_exec_infos/` 目录下。 ## 项目结构 ``` doc2case/ ├── src/ │ ├── main.ts # 主入口 │ ├── config/ # 配置解析模块 │ ├── analysis/ # 特性分析模块 │ ├── validation/ # 文档校验模块 │ ├── extraction/ # 信息提取模块 │ ├── generation/ # 用例生成模块 │ ├── quality/ # 用例质量校验模块 │ ├── prompts/ # Prompt 模板库 │ └── types/ # TypeScript 类型定义 ├── config.example.yaml # 配置示例 ├── package.json ├── tsconfig.json └── README.md ``` ## 依赖 - **stepwise**: AI Agent 流程编排框架 - **yaml**: YAML 配置解析 - **pdf-parse**: PDF 文档解析 - **docx**: Word 文档解析 ## 注意事项 - 产品资料文档可能较大(几兆级别),提取时会分阶段处理 - 支持特性名称的同义匹配(如 "分布式事务" 可匹配 "XA事务") - 特性类型识别基于关键词匹配,置信度低时会使用 AI 进行深度分析 - 测试重点可通过配置文件指定,未指定时系统根据特性类型自动推荐 - 特性耦合和接口信息仅在使用相关测试维度时才会提取 - 生成的测试用例为文本格式,伪代码为类代码语法,需人工补充具体实现细节 ## License MIT