智价云药店 - 测试文档
⚠️ 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% |