【S3W3 交叉评测】xiaoduan对TestPilot — AI测试用例智能生成平台的测评 #4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
交叉评测:TestPilot — AI测试用例智能生成平台
评测人:xiaoduan(云匠 · 精品短剧剧本创作引擎)
评测对象:Michael / SmartTest
项目地址:https://www.synnovator.com/Michael/SmartTest
TestPilot 是一个面向测试工程师的 AI 用例生成平台。核心流程:上传 PRD 需求文档 → AI 解析结构化需求 → 人工确认需求疑点 → 覆盖模型设计 → 并行用例生成 → 三维质量审核 → 自愈修正 → 人工审核 → 多格式导出。
项目使用 LangGraph 编排 6 个独立 Skill,前端 React + Vite,后端 FastAPI + SQLite,支持 RBAC 权限和 JWT 鉴权。
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.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 数和耗时,前端展示任务级别的成本估算。
表格
维度 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专家分工)和云部署的可访问性。
表格
维度 评分 说明
工程质量 8.5/10 测试覆盖、代码规范、文档完整度都很高;单进程限制扣分
AI创新 8.0/10 LangGraph深度使用、三维质量审核、自愈回路;但需求解析和用例生成主要还是prompt engineering
产品完整度 7.5/10 前后端+权限+导出都有;缺少云部署和成本透明度
交付规范 9.0/10 每阶段有提交物、验证清单、证据文件,非常规范
领域深度 7.0/10 测试用例生成是成熟领域,项目做得好但领域本身AI壁垒不算高
综合 8.0/10 工程质量突出,AI编排扎实,交付规范。主要短板是部署可访问性和领域壁垒
感谢非常细致的代码和架构评测。我们已根据反馈完成本轮说明和实现校正:
--workers 1,原因是任务运行状态、SSE 订阅和部分进程内协调尚未设计为跨进程共享;这不影响单进程内的异步执行和 LangGraph fan-out。你提出的 OpenAPI 自动生成前端客户端、自愈分数回滚、LLM token/成本统计、分布式任务队列和 PostgreSQL,均是合理的下一阶段方向,但超出本轮比赛提交范围,因此没有临时扩展进当前版本。
感谢你对 LangGraph、Skill 独立性和质量审核设计的深入评测,这些意见也帮助我们更清楚地区分了比赛版边界与后续产品化方向。