05-测试文档.md 5.9 KB

智价云药店 - 测试文档

⚠️ MVP 阶段说明
本项目为全新项目,尚未上线,当前处于 MVP(最小可行产品)阶段
本文档记录的是 MVP 版本的测试用例和覆盖率目标,后续会持续补充和完善。

版本:v1.0-MVP | 更新日期:2026-06-16 | 状态:开发中


1. 测试概述

1.1 测试范围

层次 说明
单元测试 Service 层业务逻辑
集成测试 Controller + Service + DB 端到端
安全测试 认证、授权、白名单验证
限流测试 Redis 滑动窗口限流策略
接口测试 API 参数校验、响应格式

1.2 技术栈

工具 说明
JUnit 5 测试框架
Spring Boot Test 集成测试
MockMvc HTTP 接口模拟
H2 Database 嵌入式测试数据库
Mockito Mock Redis 等外部依赖

1.3 测试环境

  • Profile: test
  • 数据库: H2(MySQL 兼容模式)
  • Redis: Mock(Mockito 模拟)
  • 建表脚本: test-schema.sql

2. 测试用例清单

2.1 认证模块测试 (AuthControllerTest)

编号 用例 预期结果
AUTH-01 POST /api/auth/sms/send - 手机号格式错误 400, code=400
AUTH-02 POST /api/auth/sms/send - 场景参数无效 400
AUTH-03 POST /api/auth/sms/login - 验证码格式错误 400
AUTH-04 POST /api/auth/sms/login - 验证码错误 200, 业务错误码
AUTH-05 GET /api/auth/wechat/url - 获取微信登录URL 200, 返回URL字符串
AUTH-06 GET /api/auth/wechat/callback - 微信回调 200, 返回重定向URL
AUTH-07 GET /api/auth/user/info - 有效Token 200, 返回用户信息

2.2 安全访问测试 (SecurityAccessTest)

编号 用例 预期结果
SEC-01 GET /api/level/list - 无Token公开访问 200
SEC-02 POST /api/auth/sms/send - 无Token公开访问 非401
SEC-03 POST /api/auth/sms/login - 无Token公开访问 非401
SEC-04 GET /api/auth/wechat/url - 无Token公开访问 非401
SEC-05 GET /api/level/my - 无Token 401
SEC-06 GET /api/crawler/status - 无Token 401
SEC-07 GET /api/coupon/my - 无Token 401
SEC-08 GET /api/auth/user/info - 无Token 401
SEC-09 GET /api/level/my - 有效Token 200
SEC-10 GET /api/crawler/status - 有效Token 200
SEC-11 携带无效Token 401

2.3 网关过滤器测试 (GatewayFilterTest)

编号 用例 预期结果
GW-01 请求日志记录 日志包含请求路径、耗时
GW-02 慢请求告警 超过1000ms打印WARN
GW-03 限流-正常请求 200
GW-04 限流-超出阈值 429
GW-05 限流-短信接口更严格 10次/60s
GW-06 排除路径不记录日志 /actuator/health 不记录

2.4 用户等级测试 (UserLevelControllerTest)

编号 用例 预期结果
LVL-01 GET /api/level/list - 获取等级列表 200, 包含3个等级
LVL-02 GET /api/level/my - 获取当前用户等级 200
LVL-03 GET /api/level/{id} - 获取等级详情 200

3. 待补充测试

3.1 邀请系统测试

编号 用例 优先级
INV-01 GET /api/invite/code - 获取邀请码 P1
INV-02 GET /api/invite/stats - 邀请统计 P1
INV-03 GET /api/invite/page/{code} - 落地页(公开) P1
INV-04 POST /api/invite/click/{code} - 点击追踪 P2
INV-05 GET /api/invite/rewards - 邀请记录 P1
INV-06 邀请注册 → 自动发放奖励 → 验证配额增加 P1
INV-07 多渠道落地页(channel=app/wechat/miniapp) P2

3.2 爬虫配额测试

编号 用例 优先级
CRL-01 GET /api/crawler/status - 配额状态含额外配额明细 P1
CRL-02 POST /api/crawler/consume - 消耗等级配额 P1
CRL-03 POST /api/crawler/consume - 消耗额外配额(快过期优先) P1
CRL-04 POST /api/crawler/consume - 使用优惠券补充 P2
CRL-05 POST /api/crawler/consume - 配额不足拒绝 P1
CRL-06 日配额耗尽 → 返回拒绝 P1
CRL-07 月配额耗尽 → 返回拒绝 P1
CRL-08 过期配额自动标记 P2

3.3 运营管理测试

编号 用例 优先级
ADM-01 GET /api/admin/invite/config - 获取邀请配置 P1
ADM-02 PUT /api/admin/invite/config - 更新邀请配置 P1
ADM-03 POST /api/admin/crawler/grant - 手动发放爬虫次数 P1
ADM-04 GET /api/admin/crawler/grants - 查看发放记录 P1

3.4 优惠券测试

编号 用例 优先级
CPN-01 POST /api/coupon/issue - 发放优惠券 P1
CPN-02 GET /api/coupon/my - 我的优惠券列表 P1
CPN-03 GET /api/coupon/my/available - 可用优惠券 P2
CPN-04 爬虫消耗优先使用优惠券 P1

4. 运行测试

4.1 全量测试

mvn test

4.2 指定模块测试

mvn test -pl zhijiayun-gateway

4.3 指定测试类

mvn test -pl zhijiayun-gateway -Dtest=AuthControllerTest

4.4 指定测试方法

mvn test -pl zhijiayun-gateway -Dtest="AuthControllerTest#sendCode_invalidPhone_shouldReturnBadRequest"

5. 测试数据

5.1 默认等级数据

level_code crawler_quota monthly_quota max_concurrent
NORMAL 5 100 1
VIP 20 500 3
SVIP 100 3000 5

5.2 测试用户

通过 generateAccessToken(userId, phone) 动态生成 JWT Token,无需预置用户。


6. 测试覆盖率目标

模块 行覆盖率目标 分支覆盖率目标
zhijiayun-user 70% 60%
zhijiayun-invite 70% 60%
zhijiayun-gateway 80% 70%
整体 70% 60%