05-测试文档.md 8.8 KB

智价云药店 - 测试文档

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

版本:v1.1-MVP | 更新日期:2026-07-01 | 状态:开发中


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

2.5 支付模块测试 (PaymentControllerTest)

编号 用例 预期结果
PAY-01 GET /api/payment/plans - 无需认证返回方案列表 200, 方案数组
PAY-02 GET /api/payment/plans - 方案含价格、会员等级等字段 200, price/membershipLevel存在
PAY-03 POST /api/payment/order/create - 微信支付返回二维码 200, channel=WECHAT, qrCodeBase64存在
PAY-04 POST /api/payment/order/create - 支付宝返回二维码 200, channel=ALIPAY
PAY-05 POST /api/payment/order/create - 无效渠道返回错误 200, code=2004
PAY-06 POST /api/payment/order/create - 无Token返回401 401
PAY-07 GET /api/payment/order/{orderNo} - 查询存在订单 200, 返回详情
PAY-08 GET /api/payment/order/{orderNo} - 不存在订单返回错误 200, code=2001
PAY-09 POST /api/payment/order/{orderNo}/pay - 模拟支付成功 200, status=PAID, paidTime存在
PAY-10 POST /api/payment/order/{orderNo}/pay - 已支付订单再次支付 200, code=2005
PAY-11 GET /api/payment/orders - 查询用户订单列表 200, data为数组
PAY-12 POST /api/payment/callback/wechat - 缺少订单号 200, 返回FAIL
PAY-13 POST /api/payment/callback/alipay - 缺少订单号 200, 返回fail

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
INV-08 GET /api/invite/my-inviter - 已注册用户查询邀请人信息 P1
INV-09 GET /api/invite/my-inviter - 未被邀请的用户返回invited=false P1
INV-10 POST /api/invite/bind - 补填邀请码成功 P1
INV-11 POST /api/invite/bind - 无效邀请码返回错误 P1
INV-12 POST /api/invite/bind - 已有邀请关系时拒绝重复绑定 P2
INV-13 补填邀请码后 → my-inviter 返回对应邀请人信息 P1

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

3.5 重复支付与退款测试

编号 用例 优先级
DUP-01 渠道切换 - PENDING订单切换渠道成功 P0
DUP-02 渠道切换 - 已支付订单切换渠道拒绝 P1
DUP-03 渠道切换 - 已过期订单切换渠道拒绝 P1
DUP-04 重复支付回调 - 订单已PAID时第二笔回调记录重复支付 P0
DUP-05 重复支付回调 - 同一tradeNo幂等不重复记录 P0
DUP-06 自动退款 - 微信渠道重复支付触发退款(mock模式) P0
DUP-07 自动退款 - 支付宝渠道重复支付触发退款(mock模式) P0
DUP-08 退款状态 - 退款成功后refund_status=SUCCESS P0
DUP-09 退款失败 - 记录refund_fail_reason,refund_status=FAILED P1
DUP-10 退款幂等 - 同一重复支付记录不重复退款 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 默认等级数据

:旧的等级版本体系(NORMAL/VIP/SVIP)已下线,统一迁移至会员体系(PLUS/PRO/ULTRA)。 爬虫配额现在由会员权益配置 + 日/月/年三周期 + 额外配额组成。

membership_level daily_quota monthly_quota yearly_quota max_concurrent
PLUS 10 200 2000 2
PRO 50 1000 10000 5
ULTRA 200 5000 50000 10

5.2 测试用户

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


6. 测试覆盖率目标

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