# 测试策略
**本文引用的文件**
- [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)