# 测试策略 **本文引用的文件** - [README.md](file://README.md) - [package.json](file://package.json) - [server/src/app.ts](file://server/src/app.ts) - [server/src/middleware/security.ts](file://server/src/middleware/security.ts) - [server/src/modules/tts/tts.service.ts](file://server/src/modules/tts/tts.service.ts) - [server/src/modules/auth/auth.service.ts](file://server/src/modules/auth/auth.service.ts) - [test-all-apis.js](file://test-all-apis.js) - [full-test.js](file://full-test.js) - [simple-test.js](file://simple-test.js) - [my-uniapp-vue3/package.json](file://my-uniapp-vue3/package.json) ## 目录 1. [引言](#引言) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 引言 本测试策略文档面向“AI有声书生成平台”,覆盖单元测试、集成测试、端到端测试、性能测试、安全测试与回归测试,并提供测试环境搭建、测试数据准备、测试报告生成与缺陷跟踪流程建议。目标是在保障质量的同时,提升交付效率与稳定性。 ## 项目结构 项目采用前后端分离架构: - 后端:Node.js + Koa,提供认证、TTS、音频管理、会员与支付等接口 - 前端:uniapp + Vue 3 + TypeScript,支持 H5 与多端小程序 - 测试:包含 Playwright 端到端脚本与简单的 HTTP API 测试脚本 ```mermaid graph TB subgraph "前端" FE_H5["H5 应用
uniapp + Vue 3"] FE_MP["小程序应用
多端适配"] end subgraph "后端" KOA["Koa 应用
server/src/app.ts"] MOD_AUTH["认证模块
auth.service.ts"] MOD_TTS["TTS 模块
tts.service.ts"] MWARE_SEC["安全中间件
security.ts"] end subgraph "测试" PW["Playwright 端到端
full-test.js / simple-test.js"] HTTP["HTTP API 测试
test-all-apis.js"] end FE_H5 --> KOA FE_MP --> KOA PW --> KOA HTTP --> KOA KOA --> MOD_AUTH KOA --> MOD_TTS KOA --> MWARE_SEC ``` 图表来源 - [server/src/app.ts:1-194](file://server/src/app.ts#L1-L194) - [server/src/modules/auth/auth.service.ts:1-115](file://server/src/modules/auth/auth.service.ts#L1-L115) - [server/src/modules/tts/tts.service.ts:1-715](file://server/src/modules/tts/tts.service.ts#L1-L715) - [server/src/middleware/security.ts:1-154](file://server/src/middleware/security.ts#L1-L154) - [full-test.js:1-145](file://full-test.js#L1-L145) - [simple-test.js:1-93](file://simple-test.js#L1-L93) - [test-all-apis.js:1-92](file://test-all-apis.js#L1-L92) 章节来源 - [README.md:1-168](file://README.md#L1-L168) - [server/src/app.ts:1-194](file://server/src/app.ts#L1-L194) - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) ## 核心组件 - 认证模块:手机号验证码登录/注册、JWT签发与用户信息查询 - TTS模块:文本转音频、音色选择、分段与合并、云端/本地存储上传、LRC歌词生成 - 安全中间件:XSS过滤、SQL注入检测、敏感数据脱敏、CSP等安全响应头 - 应用入口:路由注册、静态资源挂载、健康检查、性能指标、队列与WebSocket初始化 章节来源 - [server/src/modules/auth/auth.service.ts:1-115](file://server/src/modules/auth/auth.service.ts#L1-L115) - [server/src/modules/tts/tts.service.ts:1-715](file://server/src/modules/tts/tts.service.ts#L1-L715) - [server/src/middleware/security.ts:1-154](file://server/src/middleware/security.ts#L1-L154) - [server/src/app.ts:1-194](file://server/src/app.ts#L1-L194) ## 架构总览 后端通过中间件统一处理安全与性能,模块化提供业务能力;前端通过 Playwright 进行端到端验证,同时提供 HTTP 脚本进行 API 快速验证。 ```mermaid sequenceDiagram participant FE as "前端应用" participant KOA as "Koa 应用" participant SEC as "安全中间件" participant AUTH as "认证模块" participant TTS as "TTS 模块" FE->>KOA : "HTTP 请求" KOA->>SEC : "中间件链 : 安全/日志/限流" SEC-->>KOA : "校验通过" KOA->>AUTH : "登录/用户信息" AUTH-->>KOA : "JWT/用户信息" KOA->>TTS : "文本转音频" TTS-->>KOA : "音频URL/状态" KOA-->>FE : "JSON 响应" ``` 图表来源 - [server/src/app.ts:64-130](file://server/src/app.ts#L64-L130) - [server/src/middleware/security.ts:6-27](file://server/src/middleware/security.ts#L6-L27) - [server/src/modules/auth/auth.service.ts:44-97](file://server/src/modules/auth/auth.service.ts#L44-L97) - [server/src/modules/tts/tts.service.ts:200-280](file://server/src/modules/tts/tts.service.ts#L200-L280) ## 详细组件分析 ### 单元测试策略 - 覆盖率要求 - 关键模块(认证、TTS)行覆盖率≥80%,分支覆盖率≥60% - 边界条件与异常路径(空输入、超长文本、速率限制、网络异常)必须覆盖 - 测试用例设计 - 认证:验证码生成/校验、JWT签发、用户信息查询、免密登录开关 - TTS:文本分段、音色映射、Provider切换、云端/本地上传、LRC生成、状态查询 - 安全:XSS过滤、SQL注入检测、敏感数据脱敏 - Mock配置 - 使用内存Map模拟验证码存储 - 使用Mock Provider替代真实第三方TTS服务 - 使用本地文件系统模拟存储上传 - 使用Prisma Client Mock或测试数据库快照 章节来源 - [server/src/modules/auth/auth.service.ts:11-32](file://server/src/modules/auth/auth.service.ts#L11-L32) - [server/src/modules/auth/auth.service.ts:35-41](file://server/src/modules/auth/auth.service.ts#L35-L41) - [server/src/modules/auth/auth.service.ts:44-97](file://server/src/modules/auth/auth.service.ts#L44-L97) - [server/src/modules/tts/tts.service.ts:98-158](file://server/src/modules/tts/tts.service.ts#L98-L158) - [server/src/modules/tts/tts.service.ts:163-190](file://server/src/modules/tts/tts.service.ts#L163-L190) - [server/src/modules/tts/tts.service.ts:326-339](file://server/src/modules/tts/tts.service.ts#L326-L339) - [server/src/modules/tts/tts.service.ts:406-437](file://server/src/modules/tts/tts.service.ts#L406-L437) - [server/src/modules/tts/tts.service.ts:547-597](file://server/src/modules/tts/tts.service.ts#L547-L597) - [server/src/middleware/security.ts:6-27](file://server/src/middleware/security.ts#L6-L27) - [server/src/middleware/security.ts:61-84](file://server/src/middleware/security.ts#L61-L84) - [server/src/middleware/security.ts:105-133](file://server/src/middleware/security.ts#L105-L133) ### 集成测试策略 - API测试 - 覆盖认证、TTS、音频管理、会员与支付等主要路由 - 使用HTTP脚本对视频生成API进行快速验证 - 数据库测试 - 使用测试数据库快照或事务回滚保证隔离 - 验证Prisma写入/更新(AudioRecord、用户、书籍章节)一致性 - 第三方服务测试 - Mock阿里云/MiniMax TTS Provider,验证降级逻辑 - Mock存储服务,验证OSS/本地上传路径 - WebSocket事件推送与失败标记文件 ```mermaid flowchart TD Start(["开始集成测试"]) --> Setup["准备测试环境
数据库快照/容器"] Setup --> Mock["配置Mock Provider/存储"] Mock --> AuthAPI["调用认证API
登录/获取用户信息"] AuthAPI --> TTSAPI["调用TTS生成API
分段/合并/上传"] TTSAPI --> DBCheck["校验数据库写入
AudioRecord/章节状态"] DBCheck --> StorageCheck["校验存储上传
OSS/本地"] StorageCheck --> WS["校验WebSocket事件"] WS --> Report["生成测试报告"] Report --> End(["结束"]) ``` 图表来源 - [test-all-apis.js:37-89](file://test-all-apis.js#L37-L89) - [server/src/modules/tts/tts.service.ts:238-255](file://server/src/modules/tts/tts.service.ts#L238-L255) - [server/src/modules/tts/tts.service.ts:406-437](file://server/src/modules/tts/tts.service.ts#L406-L437) - [server/src/modules/tts/tts.service.ts:510-514](file://server/src/modules/tts/tts.service.ts#L510-L514) 章节来源 - [test-all-apis.js:1-92](file://test-all-apis.js#L1-L92) - [server/src/modules/tts/tts.service.ts:238-255](file://server/src/modules/tts/tts.service.ts#L238-L255) - [server/src/modules/tts/tts.service.ts:406-437](file://server/src/modules/tts/tts.service.ts#L406-L437) - [server/src/modules/tts/tts.service.ts:510-514](file://server/src/modules/tts/tts.service.ts#L510-L514) ### 端到端测试策略 - 用户场景测试 - 视频生成功能:列表页、创建页、步骤导航、生成按钮、API连通性 - TTS生成预览:音色选择、参数调节、预览播放 - 跨平台兼容性测试 - H5 与多端小程序页面一致性 - 不同设备分辨率与交互行为 - 自动化与截图 - Playwright驱动,失败自动截图便于定位 ```mermaid sequenceDiagram participant Browser as "Playwright 浏览器" participant Page as "页面" participant API as "后端API" participant Store as "存储服务" Browser->>Page : "打开视频生成页面" Page->>API : "GET /api/video/projects" API-->>Page : "返回项目列表" Page->>API : "POST /api/video/projects" API->>Store : "上传/生成资源" Store-->>API : "返回访问地址" API-->>Page : "返回成功" Page-->>Browser : "渲染结果/截图" ``` 图表来源 - [full-test.js:14-119](file://full-test.js#L14-L119) - [simple-test.js:20-69](file://simple-test.js#L20-L69) 章节来源 - [full-test.js:1-145](file://full-test.js#L1-L145) - [simple-test.js:1-93](file://simple-test.js#L1-L93) ### 性能测试策略 - 负载测试 - 使用压测工具对TTS生成接口施加并发请求,观察吞吐与延迟 - 关注Provider切换、分段并发、合并与上传阶段的瓶颈 - 压力测试 - 超长文本、高并发、弱网环境下的稳定性 - 内存泄漏检测 - 长时间运行录制任务,监控进程内存增长 - 关注分段生成与合并过程中的临时文件清理 章节来源 - [server/src/modules/tts/tts.service.ts:348-383](file://server/src/modules/tts/tts.service.ts#L348-L383) - [server/src/modules/tts/tts.service.ts:406-437](file://server/src/modules/tts/tts.service.ts#L406-L437) ### 安全测试策略 - 输入验证 - XSS过滤:对请求体与查询参数进行递归清洗 - SQL注入检测:对查询与请求体进行模式匹配 - 权限控制 - JWT校验与路由保护,避免未授权访问 - 数据加密 - 敏感字段脱敏输出,避免泄露 - 传输层建议启用HTTPS(当前中间件未强制) 章节来源 - [server/src/middleware/security.ts:6-27](file://server/src/middleware/security.ts#L6-L27) - [server/src/middleware/security.ts:61-84](file://server/src/middleware/security.ts#L61-L84) - [server/src/middleware/security.ts:105-133](file://server/src/middleware/security.ts#L105-L133) - [server/src/app.ts:64-75](file://server/src/app.ts#L64-L75) ### 回归测试策略 - 自动化测试 - 单元测试:每日构建触发 - 集成测试:PR触发,覆盖核心API - 端到端测试:夜间运行,覆盖关键用户路径 - 持续集成测试 - CI流水线中加入覆盖率统计与告警 - 失败重试与失败截图归档 章节来源 - [package.json:1-9](file://package.json#L1-L9) - [full-test.js:1-145](file://full-test.js#L1-L145) - [simple-test.js:1-93](file://simple-test.js#L1-L93) ## 依赖分析 - 前端依赖:uni-app、Pinia、Vue 3、TypeScript - 后端依赖:Koa、Prisma、Redis、OSS、FFmpeg(通过TTS与视频模块间接使用) - 测试依赖:Playwright ```mermaid graph LR FE_PKG["前端依赖
uni-app/Pinia/Vue3"] --> FE_APP["前端应用"] BE_PKG["后端依赖
Koa/Prisma/Redis/OSS"] --> BE_APP["后端应用"] TEST_PKG["测试依赖
Playwright"] --> TEST_RUN["测试运行"] FE_APP --> BE_APP TEST_RUN --> BE_APP ``` 图表来源 - [my-uniapp-vue3/package.json:39-65](file://my-uniapp-vue3/package.json#L39-L65) - [server/src/app.ts:10-25](file://server/src/app.ts#L10-L25) - [package.json:3](file://package.json#L3) 章节来源 - [my-uniapp-vue3/package.json:1-65](file://my-uniapp-vue3/package.json#L1-L65) - [server/src/app.ts:1-194](file://server/src/app.ts#L1-L194) - [package.json:1-9](file://package.json#L1-L9) ## 性能考虑 - TTS生成并发:根据Provider类型调整并发度,避免第三方限流 - 存储上传:优先本地合并后统一上传,失败时降级处理 - WebSocket事件:仅在章节级生成完成后推送,减少无效广播 - 健康检查与指标:暴露/health与/api/metrics,便于运维观测 章节来源 - [server/src/modules/tts/tts.service.ts:348-383](file://server/src/modules/tts/tts.service.ts#L348-L383) - [server/src/modules/tts/tts.service.ts:406-437](file://server/src/modules/tts/tts.service.ts#L406-L437) - [server/src/app.ts:92-97](file://server/src/app.ts#L92-L97) ## 故障排查指南 - 常见问题 - 验证码失效:检查Map存储与过期时间 - TTS Provider额度限制:自动切换至下一可用Provider - 上传失败:检查存储服务可用性与权限 - WebSocket未推送:确认章节ID与回调执行 - 日志与监控 - 后端日志与Sentry错误上报 - TTS调试日志文件与状态查询接口 - 截图与报告 - 端到端测试失败自动截图 - API测试输出状态码与响应体 章节来源 - [server/src/modules/auth/auth.service.ts:11-32](file://server/src/modules/auth/auth.service.ts#L11-L32) - [server/src/modules/tts/tts.service.ts:510-514](file://server/src/modules/tts/tts.service.ts#L510-L514) - [server/src/modules/tts/tts.service.ts:547-597](file://server/src/modules/tts/tts.service.ts#L547-L597) - [full-test.js:133-134](file://full-test.js#L133-L134) - [test-all-apis.js:15-25](file://test-all-apis.js#L15-L25) ## 结论 通过分层测试策略与自动化流水线,可在保障质量的前提下加速交付。建议优先完善单元测试覆盖率与Mock配置,强化集成测试对核心业务链路的覆盖,并持续优化端到端测试与性能测试,确保平台在多端稳定运行。 ## 附录 - 测试环境搭建 - 后端:安装依赖、复制.env、启动服务 - 前端:安装依赖、启动H5或编译小程序 - 测试:安装Playwright,运行端到端脚本 - 测试数据准备 - 使用测试数据库快照或种子数据 - 准备Mock Provider凭据与存储配置 - 测试报告生成 - 单元测试:覆盖率报告与失败用例 - 集成测试:API响应与数据库一致性报告 - 端到端测试:截图与控制台错误汇总 - 缺陷跟踪流程 - 自动化测试失败即创建缺陷工单 - 附带截图、日志与最小复现步骤 章节来源 - [README.md:56-90](file://README.md#L56-L90) - [full-test.js:131-134](file://full-test.js#L131-L134) - [simple-test.js:71-80](file://simple-test.js#L71-L80)