测试策略.md 14 KB

测试策略

本文引用的文件

  • README.md
  • package.json
  • server/src/app.ts
  • server/src/middleware/security.ts
  • server/src/modules/tts/tts.service.ts
  • server/src/modules/auth/auth.service.ts
  • test-all-apis.js
  • full-test.js
  • simple-test.js
  • 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 测试脚本

    graph TB
    subgraph "前端"
    FE_H5["H5 应用<br/>uniapp + Vue 3"]
    FE_MP["小程序应用<br/>多端适配"]
    end
    subgraph "后端"
    KOA["Koa 应用<br/>server/src/app.ts"]
    MOD_AUTH["认证模块<br/>auth.service.ts"]
    MOD_TTS["TTS 模块<br/>tts.service.ts"]
    MWARE_SEC["安全中间件<br/>security.ts"]
    end
    subgraph "测试"
    PW["Playwright 端到端<br/>full-test.js / simple-test.js"]
    HTTP["HTTP API 测试<br/>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
  • server/src/modules/auth/auth.service.ts:1-115
  • server/src/modules/tts/tts.service.ts:1-715
  • server/src/middleware/security.ts:1-154
  • full-test.js:1-145
  • simple-test.js:1-93
  • test-all-apis.js:1-92

章节来源

  • README.md:1-168
  • server/src/app.ts:1-194
  • my-uniapp-vue3/package.json:1-65

核心组件

  • 认证模块:手机号验证码登录/注册、JWT签发与用户信息查询
  • TTS模块:文本转音频、音色选择、分段与合并、云端/本地存储上传、LRC歌词生成
  • 安全中间件:XSS过滤、SQL注入检测、敏感数据脱敏、CSP等安全响应头
  • 应用入口:路由注册、静态资源挂载、健康检查、性能指标、队列与WebSocket初始化

章节来源

  • server/src/modules/auth/auth.service.ts:1-115
  • server/src/modules/tts/tts.service.ts:1-715
  • server/src/middleware/security.ts:1-154
  • server/src/app.ts:1-194

架构总览

后端通过中间件统一处理安全与性能,模块化提供业务能力;前端通过 Playwright 进行端到端验证,同时提供 HTTP 脚本进行 API 快速验证。

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
  • server/src/middleware/security.ts:6-27
  • server/src/modules/auth/auth.service.ts:44-97
  • server/src/modules/tts/tts.service.ts:200-280

详细组件分析

单元测试策略

  • 覆盖率要求
    • 关键模块(认证、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
  • server/src/modules/auth/auth.service.ts:35-41
  • server/src/modules/auth/auth.service.ts:44-97
  • server/src/modules/tts/tts.service.ts:98-158
  • server/src/modules/tts/tts.service.ts:163-190
  • server/src/modules/tts/tts.service.ts:326-339
  • server/src/modules/tts/tts.service.ts:406-437
  • server/src/modules/tts/tts.service.ts:547-597
  • server/src/middleware/security.ts:6-27
  • server/src/middleware/security.ts:61-84
  • server/src/middleware/security.ts:105-133

集成测试策略

  • API测试
    • 覆盖认证、TTS、音频管理、会员与支付等主要路由
    • 使用HTTP脚本对视频生成API进行快速验证
  • 数据库测试
    • 使用测试数据库快照或事务回滚保证隔离
    • 验证Prisma写入/更新(AudioRecord、用户、书籍章节)一致性
  • 第三方服务测试

    • Mock阿里云/MiniMax TTS Provider,验证降级逻辑
    • Mock存储服务,验证OSS/本地上传路径
    • WebSocket事件推送与失败标记文件

      flowchart TD
      Start(["开始集成测试"]) --> Setup["准备测试环境<br/>数据库快照/容器"]
      Setup --> Mock["配置Mock Provider/存储"]
      Mock --> AuthAPI["调用认证API<br/>登录/获取用户信息"]
      AuthAPI --> TTSAPI["调用TTS生成API<br/>分段/合并/上传"]
      TTSAPI --> DBCheck["校验数据库写入<br/>AudioRecord/章节状态"]
      DBCheck --> StorageCheck["校验存储上传<br/>OSS/本地"]
      StorageCheck --> WS["校验WebSocket事件"]
      WS --> Report["生成测试报告"]
      Report --> End(["结束"])
      

图表来源

  • test-all-apis.js:37-89
  • server/src/modules/tts/tts.service.ts:238-255
  • server/src/modules/tts/tts.service.ts:406-437
  • server/src/modules/tts/tts.service.ts:510-514

章节来源

  • test-all-apis.js:1-92
  • server/src/modules/tts/tts.service.ts:238-255
  • server/src/modules/tts/tts.service.ts:406-437
  • server/src/modules/tts/tts.service.ts:510-514

端到端测试策略

  • 用户场景测试
    • 视频生成功能:列表页、创建页、步骤导航、生成按钮、API连通性
    • TTS生成预览:音色选择、参数调节、预览播放
  • 跨平台兼容性测试
    • H5 与多端小程序页面一致性
    • 不同设备分辨率与交互行为
  • 自动化与截图

    • Playwright驱动,失败自动截图便于定位

      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
  • simple-test.js:20-69

章节来源

  • full-test.js:1-145
  • simple-test.js:1-93

性能测试策略

  • 负载测试
    • 使用压测工具对TTS生成接口施加并发请求,观察吞吐与延迟
    • 关注Provider切换、分段并发、合并与上传阶段的瓶颈
  • 压力测试
    • 超长文本、高并发、弱网环境下的稳定性
  • 内存泄漏检测
    • 长时间运行录制任务,监控进程内存增长
    • 关注分段生成与合并过程中的临时文件清理

章节来源

  • server/src/modules/tts/tts.service.ts:348-383
  • server/src/modules/tts/tts.service.ts:406-437

安全测试策略

  • 输入验证
    • XSS过滤:对请求体与查询参数进行递归清洗
    • SQL注入检测:对查询与请求体进行模式匹配
  • 权限控制
    • JWT校验与路由保护,避免未授权访问
  • 数据加密
    • 敏感字段脱敏输出,避免泄露
    • 传输层建议启用HTTPS(当前中间件未强制)

章节来源

  • server/src/middleware/security.ts:6-27
  • server/src/middleware/security.ts:61-84
  • server/src/middleware/security.ts:105-133
  • server/src/app.ts:64-75

回归测试策略

  • 自动化测试
    • 单元测试:每日构建触发
    • 集成测试:PR触发,覆盖核心API
    • 端到端测试:夜间运行,覆盖关键用户路径
  • 持续集成测试
    • CI流水线中加入覆盖率统计与告警
    • 失败重试与失败截图归档

章节来源

  • package.json:1-9
  • full-test.js:1-145
  • simple-test.js:1-93

依赖分析

  • 前端依赖:uni-app、Pinia、Vue 3、TypeScript
  • 后端依赖:Koa、Prisma、Redis、OSS、FFmpeg(通过TTS与视频模块间接使用)
  • 测试依赖:Playwright

    graph LR
    FE_PKG["前端依赖<br/>uni-app/Pinia/Vue3"] --> FE_APP["前端应用"]
    BE_PKG["后端依赖<br/>Koa/Prisma/Redis/OSS"] --> BE_APP["后端应用"]
    TEST_PKG["测试依赖<br/>Playwright"] --> TEST_RUN["测试运行"]
    FE_APP --> BE_APP
    TEST_RUN --> BE_APP
    

图表来源

  • my-uniapp-vue3/package.json:39-65
  • server/src/app.ts:10-25
  • package.json:3

章节来源

  • my-uniapp-vue3/package.json:1-65
  • server/src/app.ts:1-194
  • package.json:1-9

性能考虑

  • TTS生成并发:根据Provider类型调整并发度,避免第三方限流
  • 存储上传:优先本地合并后统一上传,失败时降级处理
  • WebSocket事件:仅在章节级生成完成后推送,减少无效广播
  • 健康检查与指标:暴露/health与/api/metrics,便于运维观测

章节来源

  • server/src/modules/tts/tts.service.ts:348-383
  • server/src/modules/tts/tts.service.ts:406-437
  • server/src/app.ts:92-97

故障排查指南

  • 常见问题
    • 验证码失效:检查Map存储与过期时间
    • TTS Provider额度限制:自动切换至下一可用Provider
    • 上传失败:检查存储服务可用性与权限
    • WebSocket未推送:确认章节ID与回调执行
  • 日志与监控
    • 后端日志与Sentry错误上报
    • TTS调试日志文件与状态查询接口
  • 截图与报告
    • 端到端测试失败自动截图
    • API测试输出状态码与响应体

章节来源

  • server/src/modules/auth/auth.service.ts:11-32
  • server/src/modules/tts/tts.service.ts:510-514
  • server/src/modules/tts/tts.service.ts:547-597
  • full-test.js:133-134
  • test-all-apis.js:15-25

结论

通过分层测试策略与自动化流水线,可在保障质量的前提下加速交付。建议优先完善单元测试覆盖率与Mock配置,强化集成测试对核心业务链路的覆盖,并持续优化端到端测试与性能测试,确保平台在多端稳定运行。

附录

  • 测试环境搭建
    • 后端:安装依赖、复制.env、启动服务
    • 前端:安装依赖、启动H5或编译小程序
    • 测试:安装Playwright,运行端到端脚本
  • 测试数据准备
    • 使用测试数据库快照或种子数据
    • 准备Mock Provider凭据与存储配置
  • 测试报告生成
    • 单元测试:覆盖率报告与失败用例
    • 集成测试:API响应与数据库一致性报告
    • 端到端测试:截图与控制台错误汇总
  • 缺陷跟踪流程
    • 自动化测试失败即创建缺陷工单
    • 附带截图、日志与最小复现步骤

章节来源

  • README.md:56-90
  • full-test.js:131-134
  • simple-test.js:71-80