【S3W3 交叉评测】xiaoduan对TestPilot — AI测试用例智能生成平台的测评 #4

Closed
opened 2026-08-06 14:19:00 +08:00 by xiaoduan · 1 comment

交叉评测:TestPilot — AI测试用例智能生成平台

评测人:xiaoduan(云匠 · 精品短剧剧本创作引擎)

评测对象:Michael / SmartTest

项目地址:https://www.synnovator.com/Michael/SmartTest

  1. 项目理解

TestPilot 是一个面向测试工程师的 AI 用例生成平台。核心流程:上传 PRD 需求文档 → AI 解析结构化需求 → 人工确认需求疑点 → 覆盖模型设计 → 并行用例生成 → 三维质量审核 → 自愈修正 → 人工审核 → 多格式导出。

项目使用 LangGraph 编排 6 个独立 Skill,前端 React + Vite,后端 FastAPI + SQLite,支持 RBAC 权限和 JWT 鉴权。

  1. 项目亮点

2.1 LangGraph 使用深度高,不是套壳

这是目前看到的几个项目中,LangGraph 用得最扎实的。不是简单的 chain 调用,而是:

真正的 StateGraph:有条件路由、fan-out/fan-in 聚合、子图嵌套
AsyncSqliteSaver checkpoint:工作流可断点恢复,不是无状态的一次性调用
interrupt 人工断点:需求确认环节用 LangGraph 原生 interrupt 暂停,用户回答后 resume,比自建 session 状态机更优雅
质量审核子图:独立的 StateGraph,有自己的私有状态(修正轮次计数器),三维并行审核 + 条件回路,最多2轮防止 LLM 费用失控

2.2 Skill 设计可独立运行

6 个 Skill 都有类型化输入输出(dataclass),可以脱离 LangGraph 作为独立 SDK 调用。这不是摆设——README 给了实际调用示例,输入输出接口清晰。这意味着每个 Skill 可以单独测试、单独部署、单独复用。

2.3 三维质量审核不是单一评分

质量审核融合了三层:

规则层:纯 Python 可执行性检查(步骤清晰度、结果可验证性等)
LLM层:5维度结构化打分(步骤清晰度/结果可验证性/数据合理性/去重/场景贴合度)
覆盖层:需求-用例覆盖矩阵检查

加权评分(规则0.3 + LLM 0.5 + 覆盖0.2),比单纯的 LLM 打分更可控、可解释。

2.4 工程规范度高

59项后端回归测试通过
前端 TypeScript 检查 + 生产构建通过
RBAC 完整实现(4角色、7菜单、JWT中间件)
冒烟测试脚本覆盖核心链路
142个文档文件,开发文档、提交说明、架构文档齐全
代码注释密度高,关键文件有架构说明块

2.5 交付意识强

Wave1→Wave2→Wave3 每阶段有明确的提交物和验证清单。evidence 目录有截图、导出样例、运行日志。Wave3提交说明文档完整定义了评审要点和演示脚本。

  1. 问题和改进建议

3.1 单进程限制是架构硬伤

README 明确说"MVP阶段请单进程运行,不要使用 --workers"。这意味着:

并行用例生成(LangGraph Send fan-out)实际上受限于单进程的线程池
多用户同时使用时,一个长任务会阻塞其他请求
checkpoint 的 SQLite 文件锁在并发写入时可能冲突

建议:如果要支持多用户,考虑将 LangGraph 任务异步化(Celery/后台任务队列),或迁移到 PostgreSQL + asyncpg。

3.2 需求解析依赖单次 LLM 调用

需求解析(requirement_analysis)看起来是一次 LLM 调用提取所有结构化需求。对于长 PRD(10页+),单次调用的信息丢失风险较高。虽然 README 提到"分 chunk 增量提取 + 重叠去重",但从代码结构看,这个逻辑在节点内部而非图级别。

建议:考虑在图级别做 chunk 循环,每个 chunk 独立解析后合并,而不是在单个节点内处理。

3.3 前端与后端的耦合点不够清晰

前端 src/api.ts 直接调用后端 API,但没有看到 API 客户端的类型生成(如 openapi-typescript-codegen)。后端用了 Pydantic model,前端用了 TypeScript interface,两边的 schema 是手动保持同步的。一旦后端改了 schema,前端可能静默失败。

建议:引入 openapi-ts 或类似工具,从 FastAPI 的 OpenAPI schema 自动生成前端类型。

3.4 自愈修正的评估标准不够透明

self_healing.py 根据质量报告修正用例,但修正后是否真的变好了?修正回路只跑了2轮就强制结束,没有看到修正前后的分数对比记录。

建议:在修正循环中记录每轮的 quality_score 变化,如果修正后分数反而下降,应该回滚到修正前版本。

3.5 RBAC 和核心业务的关系不明确

项目花了不小篇幅做 RBAC(4角色、7菜单、JWT),但核心的测试用例生成流程似乎不需要不同角色有不同权限。这更像是为了"企业级"而加的功能,而不是真实需求驱动。

建议:如果 RBAC 是产品规划的一部分,在文档中说明各角色的实际使用场景;如果只是预留,可以简化为基础的认证 + 会话管理。

3.6 缺少成本估算和 LLM 调用统计

整个流程涉及多次 LLM 调用(需求解析、覆盖设计、每个覆盖项的用例生成、三维审核、自愈修正),但没有看到 token 消耗统计或成本估算。对于用户来说,"10分钟完成传统团队数天工作"很有吸引力,但一次完整的用例生成可能消耗大量 token。

建议:在 WorkflowStep 中记录每次 LLM 调用的 token 数和耗时,前端展示任务级别的成本估算。

  1. 与云匠引擎的对比

表格
维度 TestPilot 云匠引擎
AI编排 LangGraph(图+子图+checkpoint+interrupt) 自建Orchestrator(串行+状态机)
Skill独立性 6个Skill,类型化IO,可独立SDK调用 17个专家,部分有外部知识库MD
质量控制 三维加权评分 + 自愈回路(2轮) 六阶段子智能体验收 + 启发式评分
人工介入 LangGraph interrupt 原生断点 四节点模式(确认/编辑/AI修改/回退)
权限系统 RBAC + JWT(完整) Session Token(刚加)
测试覆盖 59项回归测试 有测试文件,未验证通过率
部署 本地运行(无云部署) Railway云部署 + GitHub Pages
文档 142个文档文件,极高 刚统一,历史债务较多

坦率地说,在 AI 编排层面(LangGraph的使用深度、Skill独立性、质量审核闭环),TestPilot 做得比我们更扎实。我们的优势在于领域知识沉淀(短剧方法论、文化知识库、17专家分工)和云部署的可访问性。

  1. 综合评分

表格
维度 评分 说明
工程质量 8.5/10 测试覆盖、代码规范、文档完整度都很高;单进程限制扣分
AI创新 8.0/10 LangGraph深度使用、三维质量审核、自愈回路;但需求解析和用例生成主要还是prompt engineering
产品完整度 7.5/10 前后端+权限+导出都有;缺少云部署和成本透明度
交付规范 9.0/10 每阶段有提交物、验证清单、证据文件,非常规范
领域深度 7.0/10 测试用例生成是成熟领域,项目做得好但领域本身AI壁垒不算高
综合 8.0/10 工程质量突出,AI编排扎实,交付规范。主要短板是部署可访问性和领域壁垒

交叉评测:TestPilot — AI测试用例智能生成平台 评测人:xiaoduan(云匠 · 精品短剧剧本创作引擎) 评测对象:Michael / SmartTest 项目地址:https://www.synnovator.com/Michael/SmartTest 1. 项目理解 TestPilot 是一个面向测试工程师的 AI 用例生成平台。核心流程:上传 PRD 需求文档 → AI 解析结构化需求 → 人工确认需求疑点 → 覆盖模型设计 → 并行用例生成 → 三维质量审核 → 自愈修正 → 人工审核 → 多格式导出。 项目使用 LangGraph 编排 6 个独立 Skill,前端 React + Vite,后端 FastAPI + SQLite,支持 RBAC 权限和 JWT 鉴权。 2. 项目亮点 2.1 LangGraph 使用深度高,不是套壳 这是目前看到的几个项目中,LangGraph 用得最扎实的。不是简单的 chain 调用,而是: 真正的 StateGraph:有条件路由、fan-out/fan-in 聚合、子图嵌套 AsyncSqliteSaver checkpoint:工作流可断点恢复,不是无状态的一次性调用 interrupt 人工断点:需求确认环节用 LangGraph 原生 interrupt 暂停,用户回答后 resume,比自建 session 状态机更优雅 质量审核子图:独立的 StateGraph,有自己的私有状态(修正轮次计数器),三维并行审核 + 条件回路,最多2轮防止 LLM 费用失控 2.2 Skill 设计可独立运行 6 个 Skill 都有类型化输入输出(dataclass),可以脱离 LangGraph 作为独立 SDK 调用。这不是摆设——README 给了实际调用示例,输入输出接口清晰。这意味着每个 Skill 可以单独测试、单独部署、单独复用。 2.3 三维质量审核不是单一评分 质量审核融合了三层: 规则层:纯 Python 可执行性检查(步骤清晰度、结果可验证性等) LLM层:5维度结构化打分(步骤清晰度/结果可验证性/数据合理性/去重/场景贴合度) 覆盖层:需求-用例覆盖矩阵检查 加权评分(规则0.3 + LLM 0.5 + 覆盖0.2),比单纯的 LLM 打分更可控、可解释。 2.4 工程规范度高 59项后端回归测试通过 前端 TypeScript 检查 + 生产构建通过 RBAC 完整实现(4角色、7菜单、JWT中间件) 冒烟测试脚本覆盖核心链路 142个文档文件,开发文档、提交说明、架构文档齐全 代码注释密度高,关键文件有架构说明块 2.5 交付意识强 Wave1→Wave2→Wave3 每阶段有明确的提交物和验证清单。evidence 目录有截图、导出样例、运行日志。Wave3提交说明文档完整定义了评审要点和演示脚本。 3. 问题和改进建议 3.1 单进程限制是架构硬伤 README 明确说"MVP阶段请单进程运行,不要使用 --workers"。这意味着: 并行用例生成(LangGraph Send fan-out)实际上受限于单进程的线程池 多用户同时使用时,一个长任务会阻塞其他请求 checkpoint 的 SQLite 文件锁在并发写入时可能冲突 建议:如果要支持多用户,考虑将 LangGraph 任务异步化(Celery/后台任务队列),或迁移到 PostgreSQL + asyncpg。 3.2 需求解析依赖单次 LLM 调用 需求解析(requirement_analysis)看起来是一次 LLM 调用提取所有结构化需求。对于长 PRD(10页+),单次调用的信息丢失风险较高。虽然 README 提到"分 chunk 增量提取 + 重叠去重",但从代码结构看,这个逻辑在节点内部而非图级别。 建议:考虑在图级别做 chunk 循环,每个 chunk 独立解析后合并,而不是在单个节点内处理。 3.3 前端与后端的耦合点不够清晰 前端 src/api.ts 直接调用后端 API,但没有看到 API 客户端的类型生成(如 openapi-typescript-codegen)。后端用了 Pydantic model,前端用了 TypeScript interface,两边的 schema 是手动保持同步的。一旦后端改了 schema,前端可能静默失败。 建议:引入 openapi-ts 或类似工具,从 FastAPI 的 OpenAPI schema 自动生成前端类型。 3.4 自愈修正的评估标准不够透明 self_healing.py 根据质量报告修正用例,但修正后是否真的变好了?修正回路只跑了2轮就强制结束,没有看到修正前后的分数对比记录。 建议:在修正循环中记录每轮的 quality_score 变化,如果修正后分数反而下降,应该回滚到修正前版本。 3.5 RBAC 和核心业务的关系不明确 项目花了不小篇幅做 RBAC(4角色、7菜单、JWT),但核心的测试用例生成流程似乎不需要不同角色有不同权限。这更像是为了"企业级"而加的功能,而不是真实需求驱动。 建议:如果 RBAC 是产品规划的一部分,在文档中说明各角色的实际使用场景;如果只是预留,可以简化为基础的认证 + 会话管理。 3.6 缺少成本估算和 LLM 调用统计 整个流程涉及多次 LLM 调用(需求解析、覆盖设计、每个覆盖项的用例生成、三维审核、自愈修正),但没有看到 token 消耗统计或成本估算。对于用户来说,"10分钟完成传统团队数天工作"很有吸引力,但一次完整的用例生成可能消耗大量 token。 建议:在 WorkflowStep 中记录每次 LLM 调用的 token 数和耗时,前端展示任务级别的成本估算。 4. 与云匠引擎的对比 表格 维度 TestPilot 云匠引擎 AI编排 LangGraph(图+子图+checkpoint+interrupt) 自建Orchestrator(串行+状态机) Skill独立性 6个Skill,类型化IO,可独立SDK调用 17个专家,部分有外部知识库MD 质量控制 三维加权评分 + 自愈回路(2轮) 六阶段子智能体验收 + 启发式评分 人工介入 LangGraph interrupt 原生断点 四节点模式(确认/编辑/AI修改/回退) 权限系统 RBAC + JWT(完整) Session Token(刚加) 测试覆盖 59项回归测试 有测试文件,未验证通过率 部署 本地运行(无云部署) Railway云部署 + GitHub Pages 文档 142个文档文件,极高 刚统一,历史债务较多 坦率地说,在 AI 编排层面(LangGraph的使用深度、Skill独立性、质量审核闭环),TestPilot 做得比我们更扎实。我们的优势在于领域知识沉淀(短剧方法论、文化知识库、17专家分工)和云部署的可访问性。 5. 综合评分 表格 维度 评分 说明 工程质量 8.5/10 测试覆盖、代码规范、文档完整度都很高;单进程限制扣分 AI创新 8.0/10 LangGraph深度使用、三维质量审核、自愈回路;但需求解析和用例生成主要还是prompt engineering 产品完整度 7.5/10 前后端+权限+导出都有;缺少云部署和成本透明度 交付规范 9.0/10 每阶段有提交物、验证清单、证据文件,非常规范 领域深度 7.0/10 测试用例生成是成熟领域,项目做得好但领域本身AI壁垒不算高 综合 8.0/10 工程质量突出,AI编排扎实,交付规范。主要短板是部署可访问性和领域壁垒
Owner

感谢非常细致的代码和架构评测。我们已根据反馈完成本轮说明和实现校正:

  1. README 已澄清单 Worker 边界:当前比赛版显式使用 --workers 1,原因是任务运行状态、SSE 订阅和部分进程内协调尚未设计为跨进程共享;这不影响单进程内的异步执行和 LangGraph fan-out。
  2. 需求解析并非单次处理全部长文档,当前已有 chunk、重叠窗口和增量合并逻辑;本轮补充了相关说明和测试证据。
  3. RBAC 已与核心业务接口关联,并采用固定角色矩阵;不会影响运行时权限的角色/菜单编辑入口已从可达界面移除。
  4. JWT/session、可信审核身份、SSE 鉴权与取消、下载鉴权、checkpointer 关闭路径等均已补齐。
  5. 当前验证更新为后端 82 项测试通过,smoke、前端 lint 和生产构建通过。

你提出的 OpenAPI 自动生成前端客户端、自愈分数回滚、LLM token/成本统计、分布式任务队列和 PostgreSQL,均是合理的下一阶段方向,但超出本轮比赛提交范围,因此没有临时扩展进当前版本。

感谢你对 LangGraph、Skill 独立性和质量审核设计的深入评测,这些意见也帮助我们更清楚地区分了比赛版边界与后续产品化方向。

感谢非常细致的代码和架构评测。我们已根据反馈完成本轮说明和实现校正: 1. README 已澄清单 Worker 边界:当前比赛版显式使用 `--workers 1`,原因是任务运行状态、SSE 订阅和部分进程内协调尚未设计为跨进程共享;这不影响单进程内的异步执行和 LangGraph fan-out。 2. 需求解析并非单次处理全部长文档,当前已有 chunk、重叠窗口和增量合并逻辑;本轮补充了相关说明和测试证据。 3. RBAC 已与核心业务接口关联,并采用固定角色矩阵;不会影响运行时权限的角色/菜单编辑入口已从可达界面移除。 4. JWT/session、可信审核身份、SSE 鉴权与取消、下载鉴权、checkpointer 关闭路径等均已补齐。 5. 当前验证更新为后端 82 项测试通过,smoke、前端 lint 和生产构建通过。 你提出的 OpenAPI 自动生成前端客户端、自愈分数回滚、LLM token/成本统计、分布式任务队列和 PostgreSQL,均是合理的下一阶段方向,但超出本轮比赛提交范围,因此没有临时扩展进当前版本。 感谢你对 LangGraph、Skill 独立性和质量审核设计的深入评测,这些意见也帮助我们更清楚地区分了比赛版边界与后续产品化方向。
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Michael/SmartTest#4
No description provided.