
AI-TestHub从零构建智能测试用例生成平台一个帮助测试人员从需求文档自动生成测试用例并生成selenium脚本文件的AI工具支持PDF/Word解析、两阶段AI生成、异步任务处理测试效率提升70%以上项目代码已开源https://github.com/WindChaser-w/ai-testhub.git一、项目背景1.1 痛点分析接上文写了一篇专门对于电商平台自动化测试的文章对于这个电商平台的功能测试部分我发现一个普遍存在的效率瓶颈每天要花大量时间阅读需求文档、编写测试用例。以我所在的电商项目为例一个中等规模的需求文档约10页包含登录、购物车、支付等模块资深测试工程师编写完整用例需要2-3小时新手可能需要半天甚至更久过程中还容易遗漏边界条件和异常场景每天两眼一睁就在编用例所以我就想能不能让AI来承担这份重复性工作用户上传需求文档系统自动分析并生成规范的测试用例。1.2 项目目标核心目标实现Web应用支持PDF/Word文档上传AI自动生成结构化测试用例质量目标生成的用例覆盖功能、边界、异常场景格式规范可直接使用技术目标采用现代技术栈代码清晰便于学习和扩展简历目标作为一个完整的测开项目体现后端开发、AI工程化和测试思维二、项目框架设计2.1 技术栈集Python FastAPI SQLAlchemy MySQL DeepSeek API pdfplumber python-docx pandas HTML5/JavaScript Docker2.2 项目架构整体流程设计用户在前端创建项目后上传 PDF/Word 文档系统解析文本存入数据库。点击“生成用例”时后端创建任务记录通过 BackgroundTasks 将 AI 调用放入后台队列立即返回 task_id。前端轮询任务状态后台独立执行先调用 AI 提取需求点再基于需求点生成 JSON 格式用例逐条存入数据库最后标记任务完成。生成后的用例支持在线编辑、删除和导出 Excel每条用例还可单独生成 Selenium 自动化脚本。项目目录ai-testhub/│├── app/ # 核心应用代码│ ├── api/ # API 路由层│ │ ├── projects.py # 项目管理增删改查│ │ ├── upload.py # 文档上传PDF/Word│ │ ├── generate.py # 用例生成异步任务│ │ └── cases.py # 用例管理增删改查 导出│ ││ ├── core/ # 核心配置层│ │ ├── config.py # 环境变量配置│ │ └── database.py # 数据库连接管理│ ││ ├── models/ # 数据模型层│ │ └── models.py # 四张表结构定义│ ││ ├── services/ # 业务逻辑层│ │ ├── parser.py # PDF/Word 文档解析│ │ ├── ai_service.py # AI 调用核心两阶段 Prompt│ │ └── export.py # Excel 导出服务│ ││ ├── static/ # 前端静态文件│ │ ├── index.html # 主页面│ │ ├── css/ # 样式文件│ │ └── js/ # 交互逻辑│ ││ └── main.py # FastAPI 应用入口│├── exports/ # Excel 导出临时目录├── uploads/ # 用户上传文档存储目录├── .env # 环境变量API Key、数据库密码├── .env.example # 环境变量模板├── docker-compose.yml # Docker 容器编排├── Dockerfile # 后端镜像构建├── requirements.txt # Python 依赖清单├── init_db.py # 数据库初始化脚本└── README.md # 项目说明文档2.3 数据库设计表名主要字段作用projectsid, name, description测试项目管理documentsid, project_id, content_text上传文档及解析内容tasksid, project_id, status, progress异步任务进度追踪test_casesid, project_id, steps(JSON), automation_code测试用例及自动化脚本关键设计使用级联删除 (cascadeall, delete-orphan)删除项目时自动清理关联数据Task表用UUID做主键避免暴露任务数量steps字段使用JSON类型直接存储步骤列表存取方便三、核心内容详解3.1 文档解析服务 (services/parser.py)功能将PDF和Word文档转换为纯文本技术要点pdfplumber比PyPDF2准确率高能更好处理表格和复杂布局with语句自动管理文件资源避免内存泄漏统一返回纯文本上层调用不关心原始格式3.2 AI服务核心 (services/ai_service.py)这是项目的灵魂采用两阶段Prompt设计第一阶段提取需求点第二阶段生成测试用例请直接输出JSON数组为什么分两阶段直接生成AI容易遗漏需求点或生成不相关内容分阶段先让AI“理解”文档提取需求再“创作”生成用例逻辑更清晰质量更高3.3 异步任务调度 (api/generate.py)AI调用耗时10-30秒必须异步处理前端轮询实现javascript3.4 异步AI调用的核心处理OpenAI SDK是同步的直接调用会阻塞FastAPI事件循环。解决方案run_in_executor将同步调用放到线程池执行主线程通过await让出控制权可以继续处理其他请求。3.5 用例导出 (api/cases.py)支持导出Excel技术要点pandas的to_excel一行代码生成Excel文件名带时间戳避免冲突下载时使用项目名作为文件名用户体验好四、难点攻克难点一AI返回格式不稳定问题AI有时返回markdown包裹的JSON有时直接返回JSON有时不是合法JSON格式。解决方案python难点二PDF解析乱码或失败问题部分PDF文件编码不标准提取出乱码或者PDF全是图片没有文字。解决方案使用pdfplumber替代PyPDF2准确率更高解析失败时自动删除已保存的文件返回友好错误信息给前端难点三异步任务的状态追踪问题用户可能想知道AI生成到哪一步了是卡住了还是在正常处理。解决方案设计tasks表记录状态和进度在AI服务的各个阶段更新进度20%提取需求、40%生成用例...前端轮询获取进度并显示进度条五、项目成果该项目有效提升了测试的效率以下是一个对比图5.1效果对比图对比维度手工操作使用平台提升效果文档阅读用例编写2-3小时5-10分钟效率提升 90% 以上用例格式规范性因人而异格式不统一统一模板输出规范一致实现标准化边界场景覆盖依赖个人经验容易遗漏AI 自动补充边界值和异常场景覆盖更全面回归测试效率每次需求变更需重新编写重新上传文档即可生成维护成本降低以一个典型的电商登录模块为例原来手工编写用例需要 1 小时包含正常登录、密码错误、账号锁定、验证码过期等场景现在只需上传需求文档5 分钟即可生成包含 10-20 条用例的完整测试方案。5.2 技术收获通过这个项目的开发我在以下方面有了深入理解和实践FastAPI 异步编程掌握了 FastAPI 的异步路由、BackgroundTasks 后台任务、依赖注入等核心特性理解了如何在异步框架中处理同步的第三方 SDK如 OpenAI以及如何用run_in_executor将同步调用放到线程池执行。AI Prompt 工程积累了实用的 Prompt 设计经验特别是两阶段设计——先提取需求再生成用例比一次性生成准确率更高。同时掌握了处理 AI 返回格式不稳定问题的方法JSON 清理、异常兜底。异步任务状态追踪设计并实现了完整的任务状态机pending → processing → completed/failed通过数据库记录进度并在各阶段更新前端通过轮询获取实时进度用户体验良好。数据库设计熟悉了 SQLAlchemy ORM 的使用包括表关系定义一对多、级联删除、JSON 字段存储、UUID 主键设计等。Docker 容器化掌握了编写 Dockerfile 和多容器编排docker-compose的技能实现了项目的快速部署和环境统一。六、未来规划RAG 检索增强生成当前版本每次生成都是基于当前文档独立生成没有利用历史用例。计划引入向量数据库如 ChromaDB将公司历史用例向量化存储生成新用例时先检索相似的历史用例作为参考上下文让生成的用例更符合公司规范同时复用之前积累的测试经验。更多文档格式支持目前仅支持 PDF 和 Word后续计划扩展支持 Markdown技术文档常用、Excel测试数据、图片OCR 识别需求文档截图满足更多使用场景。用例评审流程测试用例生成后通常需要评审。计划增加在线评审功能支持多人评论、版本对比、评审记录追踪帮助团队规范用例质量管控流程。自定义 Prompt 模板不同团队可能有不同的用例格式要求如是否需要优先级、是否需要关联需求ID。计划允许用户自定义 Prompt 模板根据团队规范灵活调整生成格式。七、写在最后这个项目是我对“AI 测试”方向的一次探索尝试。起初的想法很朴素既然 AI 能理解文档、能生成代码那能否帮助测试同学从重复的用例编写中解放出来带着这个问题我开始从 0 到 1 搭建这个平台。在技术实现上两阶段 Prompt 的设计是反复调试后的成果——先让 AI 提取需求点再基于需求点生成用例将复杂任务拆解为多个简单任务的组合生成的用例质量显著提升。异步任务加轮询的模式则解决了 AI 调用长耗时与用户体验之间的矛盾后台独立执行前端实时反馈让等待变得可感知。这个项目还有很多不完善的地方生成的脚本中元素定位器仍需手动补充文档格式也仅支持 PDF 和 Word。后续计划引入 RAG 检索历史用例持续优化生成质量。作为刚入门的学生这次开发让我对后端架构和 AI 工程化有了更具体的认知。AI 不会取代测试工程师但或许能让我们把精力放在更有价值的事情上不断完善增强自己的能力。项目代码已开源https://github.com/WindChaser-w/ai-testhub.git