# 智价云药店 - 测试文档 > **⚠️ 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 全量测试 ```bash mvn test ``` ### 4.2 指定模块测试 ```bash mvn test -pl zhijiayun-gateway ``` ### 4.3 指定测试类 ```bash mvn test -pl zhijiayun-gateway -Dtest=AuthControllerTest ``` ### 4.4 指定测试方法 ```bash 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% |