docs: add customer and cmpp status test steps

This commit is contained in:
hectorzhao
2026-07-01 15:45:55 +08:00
parent 19ff6531d1
commit db27ace069
+385 -1
View File
@@ -23,6 +23,7 @@
| 号码 | 合法号码、重复号码、非法号码、企业黑名单号码、全局黑名单号码。 |
| 账户 | 余额充足、余额不足、套餐余量充足、套餐余量不足、授信额度可用。 |
| 企业认证 | 未认证、待审核、已通过、已驳回四类企业认证资料。 |
| 客户 | 正常客户、停用客户、欠费客户、未认证客户、跨租户客户、客户联系人和开票资料。 |
| 导入文件 | UTF-8 CSV、GBK CSV、TXT、超 20 MB 文件、含空行/重复/非法号码/非法字符文件。 |
| 非法内容 | 控制字符、emoji、换行、不可见字符、超长变量、签名外置内容、敏感词内容。 |
@@ -31,12 +32,14 @@
| 业务闭环 | 必须验证 |
| --- | --- |
| 企业认证闭环 | 客户提交资料、运营审核、客户查看状态、驳回重提、通过后才允许使用受限发送能力、日志可追溯。 |
| 客户管理闭环 | 客户创建、编辑、启停、认证、额度/余额、客户下应用/签名/模板/发送记录联动、租户隔离、日志可追溯。 |
| 短信应用闭环 | 创建、启停、删除、密钥重置、IP 白名单、模板不匹配策略、变更后对发送实时生效、日志可追溯。 |
| 签名闭环 | 创建、材料、审核、删除、报备状态变化、发送可用性校验、历史任务不受错误覆盖、日志可追溯。 |
| 引流信息闭环 | 字段配置、客户填写、删除字段或删除客户引流信息、报备材料影响、发送阻断或审核原因可见。 |
| 模板闭环 | 单变量、多变量、审核、删除、变量缺失/多传/格式异常、计费预估、发送可用性校验。 |
| 号码导入闭环 | 文件上传、解析、去重、非法号码、黑名单、导入结果展示、生成任务、生成手机号记录。 |
| 发送闭环 | 立即发送、定时发送、到点触发、入队、submit、回执、上行、任务进度、发送详情、trace、对账。 |
| CMPP 连接闭环 | 通道连接状态、登录认证、active test、断线重连、连接异常对路由/发送影响、状态监控和日志告警。 |
| 内容校验闭环 | 非法字符展示、敏感词、控制字符、内容清洗或拒绝、计费不被非法字符干扰、错误原因可见。 |
| 计费闭环 | 预估、余额校验、冻结、扣费、释放、退款、短信计费记录、账单流水、对账。 |
| 系统日志闭环 | 登录、创建、修改、删除、审核、导入导出、密钥重置、发送、报备、账务动作均可查询和定位操作者。 |
@@ -1393,7 +1396,388 @@
- 历史发送可查询、可对账。
- 配置删除、发送阻断、定时任务失败均有日志。
## 15. 回归执行建议
### TC-CUSTOMER-001 运营端创建客户并初始化租户
- 优先级:P0
- 前置条件:运营管理员已登录。
- 步骤:
1. 运营端新建客户,填写客户名称、客户编码、联系人、手机号、邮箱、状态、备注。
2. 保存后打开客户详情。
3. 查看客户下应用、签名、模板、账户、认证资料、发送记录入口。
4. 使用该客户管理员账号登录客户端。
- 预期结果:
- 创建客户成功,同时生成或关联租户。
- 客户详情展示基础信息和业务入口。
- 客户管理员只能进入本客户租户上下文。
- 系统日志记录客户创建动作和操作者。
### TC-CUSTOMER-002 客户资料编辑影响展示但不破坏历史数据
- 优先级:P1
- 前置条件:客户已有应用、签名、模板和历史发送记录。
- 步骤:
1. 运营端修改客户名称、联系人、联系电话、备注。
2. 客户端刷新工作台和账号信息。
3. 运营端查看历史发送记录、账单流水、trace。
- 预期结果:
- 新客户资料在客户端和运营端同步展示。
- 历史发送记录、账单流水、trace 仍可查询。
- 历史记录中的 tenantId 不变化,必要时展示当前客户名称或历史快照。
- 系统日志记录修改前后关键字段。
### TC-CUSTOMER-003 客户停用阻断新发送
- 优先级:P0
- 前置条件:客户已认证且有可用应用、签名、模板、余额和 active 通道。
- 步骤:
1. 运营端将客户状态改为 disabled。
2. 客户端尝试创建立即发送任务。
3. 客户端尝试创建定时发送任务。
4. API 调用或 CMPP 接入尝试发送。
5. 查询系统日志和发送任务列表。
- 预期结果:
- 客户端、API、CMPP 接入的新发送均被阻断。
- 错误原因包含客户已停用。
- 不生成可发送状态任务,不入队,不扣费。
- 历史任务仍可查询。
- 系统日志记录客户停用和发送阻断。
### TC-CUSTOMER-004 客户停用对定时任务到点执行的影响
- 优先级:P0
- 前置条件:客户 active 时已创建未来定时发送任务。
- 步骤:
1. 创建 scheduled 任务。
2. 到点前运营端停用客户。
3. 等待或触发调度器执行。
4. 查询任务详情、账单流水和系统日志。
- 预期结果:
- 定时任务到点前重新校验客户状态。
- 客户停用时任务不入队,状态变为 rejected/canceled/failed。
- 如已冻结费用,生成 release 流水。
- 任务失败原因和系统日志均指向客户停用。
### TC-CUSTOMER-005 客户重新启用恢复发送能力
- 优先级:P0
- 前置条件:客户曾被停用,应用/签名/模板/报备/账户均可用。
- 步骤:
1. 运营端重新启用客户。
2. 客户端创建立即发送任务。
3. 模拟 submit accepted 和 delivered。
4. 查询任务、发送详情、账单流水。
- 预期结果:
- 客户状态变为 active。
- 新发送可进入风控、计费和发送链路。
- 发送记录和账务流水完整。
- 系统日志记录重新启用动作。
### TC-CUSTOMER-006 客户欠费或额度不足状态联动发送
- 优先级:P0
- 前置条件:客户余额、套餐余量、授信额度不足,或运营端标记欠费。
- 步骤:
1. 客户端创建发送任务。
2. API 调用发送。
3. 运营端查看客户账户、账单流水、发送失败记录。
- 预期结果:
- 发送前账户校验失败。
- 错误原因包含余额/额度/欠费。
- 不生成扣费流水,不投递 Gateway。
- 运营端客户详情可看到欠费或余额不足状态。
### TC-CUSTOMER-007 客户租户隔离和越权访问
- 优先级:P0
- 前置条件:存在客户 A 和客户 B,各有应用、签名、模板、任务、账单流水。
- 步骤:
1. 使用客户 A 用户登录客户端。
2. 尝试通过 URL、筛选条件或 API 参数访问客户 B 的资源 id。
3. 运营端使用客户维度查询两边数据。
- 预期结果:
- 客户 A 无法访问客户 B 的任何资源。
- 返回无权限或无数据,不泄露客户 B 业务信息。
- 运营端按客户过滤时数据准确。
- 越权访问失败记录进入安全或系统日志。
### TC-CUSTOMER-008 客户删除或归档的业务影响
- 优先级:P0
- 前置条件:客户有历史任务、账单流水、应用、签名、模板和 scheduled 任务。
- 步骤:
1. 运营端删除、归档或停用客户。
2. 客户端尝试登录和发送。
3. 到达 scheduled 任务执行时间。
4. 运营端查询历史任务、账单流水、trace。
- 预期结果:
- 如系统不允许硬删除,应提示存在业务数据并要求停用/归档。
- 被归档/停用客户不能新建发送。
- 未执行定时任务不应继续发送。
- 历史任务、账单、trace 必须保留可查。
- 系统日志记录删除失败、归档或停用动作。
### TC-CMPP-STATUS-001 通道初始连接状态展示
- 优先级:P0
- 前置条件:运营端已创建 CMPP 通道,Gateway 未启动或未连接。
- 步骤:
1. 打开运营端通道管理和发送监控。
2. 查看通道连接状态、最近心跳时间、重连次数、错误信息。
3. 调用健康检查或监控接口。
- 预期结果:
- 通道业务状态 active 与 CMPP 连接状态分开展示。
- Gateway 未连接时连接状态显示 disconnected/unknown。
- 最近心跳为空或过期。
- 不误显示为可提交状态。
### TC-CMPP-STATUS-002 CMPP 登录成功后连接状态变为在线
- 优先级:P0
- 前置条件:模拟 SMSC 可用,通道账号密码正确。
- 步骤:
1. 启动 Gateway。
2. Gateway 连接模拟 SMSC 并完成 CMPP connect/login。
3. 运营端刷新通道详情和监控。
4. 创建发送任务并提交一条短信。
- 预期结果:
- 连接状态变为 connected/online。
- 展示连接建立时间、最近 active test 时间、窗口大小或可用窗口。
- 发送任务可被路由到该通道。
- submit accepted 后通道健康指标更新。
### TC-CMPP-STATUS-003 CMPP 登录失败展示认证错误
- 优先级:P0
- 前置条件:通道账号、密码或企业代码配置错误。
- 步骤:
1. 启动 Gateway 连接模拟 SMSC。
2. 模拟 SMSC 返回登录失败。
3. 运营端查看通道状态和错误信息。
4. 创建发送任务。
- 预期结果:
- 连接状态显示 auth_failed/login_failed。
- 错误信息包含认证失败原因或错误码。
- 发送路由不应选择该通道,除非无备用通道时任务失败并展示原因。
- 系统日志或告警记录登录失败。
### TC-CMPP-STATUS-004 Active Test 心跳超时变更连接状态
- 优先级:P0
- 前置条件:Gateway 已连接模拟 SMSC。
- 步骤:
1. 模拟 SMSC 停止响应 active test。
2. 等待心跳超时。
3. 查看通道连接状态。
4. 提交发送任务。
- 预期结果:
- 通道连接状态从 online 变为 heartbeat_timeout/disconnected。
- 最近心跳时间不再刷新。
- Gateway 进入重连流程。
- 新发送不应继续提交到该失联连接,应走备用通道或失败排队。
### TC-CMPP-STATUS-005 断线重连成功后恢复发送
- 优先级:P0
- 前置条件:通道在线,存在备用通道或队列可暂存。
- 步骤:
1. 模拟 SMSC 断开 TCP 连接。
2. 观察 Gateway 重连次数和连接状态。
3. 恢复模拟 SMSC。
4. 提交新发送任务。
- 预期结果:
- 断线后状态变为 disconnected/reconnecting。
- 重连次数增加,日志记录断线原因。
- 重连成功后状态回到 online。
- 新发送可正常 submit。
- 断线期间未确认的消息有明确重试、失败或待补偿状态。
### TC-CMPP-STATUS-006 通道连接离线时路由到备用通道
- 优先级:P0
- 前置条件:通道组包含主通道 A 和备用通道 B,A active 但连接离线,B active 且 online,签名在 B 报备通过。
- 步骤:
1. 确认 A 业务状态 active、连接状态 disconnected。
2. 确认 B 业务状态 active、连接状态 online。
3. 创建发送任务。
4. 查询 submit record 和 trace。
- 预期结果:
- 路由跳过连接离线的 A。
- 选择 B 提交。
- trace 显示实际 channelId 为 B。
- 通道健康指标记录 A 不可用和 B 提交成功。
### TC-CMPP-STATUS-007 无在线通道时发送任务失败或等待
- 优先级:P0
- 前置条件:路由范围内所有通道连接状态均 disconnected/auth_failed/heartbeat_timeout。
- 步骤:
1. 创建发送任务。
2. 触发送 worker。
3. 查看任务状态、发送明细、系统日志。
- 预期结果:
- 系统不向离线连接 submit。
- 按设计进入 delayed/retry、failed 或 pending_channel 状态。
- 客户端和运营端展示“无可用在线通道”原因。
- 不产生 submit accepted 记录,不错误扣费。
### TC-CMPP-STATUS-008 连接状态与通道启停状态组合
- 优先级:P1
- 前置条件:通道连接 online。
- 步骤:
1. 运营端将通道业务状态改为 disabled。
2. 查看连接状态是否仍可展示。
3. 创建发送任务。
4. 再将通道启用。
- 预期结果:
- disabled 通道即使连接 online,也不可被路由选中。
- 连接状态可继续用于运维观察,但发送可用性显示为不可用。
- 启用后如连接仍 online,可恢复路由;如连接已断开,需要等待重连。
- 系统日志记录启停操作。
### TC-CMPP-STATUS-009 慢响应导致窗口占满和状态告警
- 优先级:P1
- 前置条件:模拟 SMSC 可配置慢 submit respGateway 有滑动窗口限制。
- 步骤:
1. 配置模拟 SMSC 延迟 submit resp。
2. 连续提交多条短信直到窗口占满。
3. 查看通道监控和队列积压。
4. 恢复 SMSC 正常响应。
- 预期结果:
- 通道状态展示窗口占用、慢响应或拥塞指标。
- 新消息排队等待,不丢失。
- 恢复后积压逐步下降。
- 超时消息按 submit timeout 处理并可追踪。
### TC-CMPP-STATUS-010 连接状态变化写入日志和监控
- 优先级:P0
- 前置条件:通道经历 online、disconnected、reconnecting、online 状态变化。
- 步骤:
1. 触发连接成功、断线、重连成功。
2. 查询通道健康指标。
3. 查询系统日志或运维日志。
- 预期结果:
- 每次连接状态变化都有时间戳。
- 健康指标记录重连次数、连接可用性、submit 成功/失败。
- 日志包含 channelId、channelCode、错误原因、恢复时间。
- 运营端监控可按通道查看状态历史。
## 15. 测试实施步骤
系统功能测试建议分 8 步执行。第一步先做测试基线和数据准备,不直接开始点页面;原因是后续所有闭环都依赖客户、认证、应用、签名、模板、通道、账户和模拟 Gateway 的一致初始状态。
### 第一步:准备测试环境和基线数据
- 目标:让后续所有测试在同一套可复现数据上执行。
- 执行内容:
1. 启动或确认 PostgreSQL、Redis、MinIO、API、前端、Gateway、模拟 SMSC。
2. 初始化客户 A、客户 B、运营管理员、运营审核员、客户管理员、客户普通用户。
3. 初始化 active/disabled 客户、未认证/待审核/已认证/驳回企业认证资料。
4. 初始化可用应用、停用应用、待删除应用。
5. 初始化签名、引流信息、模板、多变量模板、通道、通道组、路由规则。
6. 初始化账户余额、套餐余量、欠费/不足余额场景。
7. 准备 CSV/TXT/GBK/大文件/非法字符/黑名单号码测试文件。
8. 确认 Gateway 模拟器可切换 online、auth_failed、heartbeat_timeout、disconnected、slow_response。
- 产出物:
- 测试账号清单。
- 测试客户和租户 id。
- 测试应用/签名/模板/通道 id。
- 测试文件目录。
- 环境健康检查截图或日志。
### 第二步:执行静态配置和权限基础测试
- 覆盖范围:
- 客户创建、编辑、启停、租户隔离。
- 登录、用户权限、客户越权访问。
- 应用、签名、模板、引流字段、通道、路由规则的基础 CRUD。
- 通过标准:
- 数据隔离正确。
- 启停/删除状态能影响后续发送。
- 系统日志记录所有关键配置变更。
### 第三步:执行认证、审核、报备闭环测试
- 覆盖范围:
- 企业认证提交、审核通过、驳回重提、企业停用。
- 签名审核、模板审核、短信审核。
- 签名引流信息和通道报备状态变更。
- 通过标准:
- 审核状态在客户端和运营端一致。
- 报备未通过或失效时发送被阻断。
- 审核记录、报备记录、系统日志三类证据完整。
### 第四步:执行发送前校验测试
- 覆盖范围:
- 多变量模板、变量缺失/多传/超长。
- 导入文件解析、重复、非法、黑名单。
- 非法字符、敏感词、内容展示和计费预估。
- 风控规则和账户余额校验。
- 通过标准:
- 所有阻断场景都不入队、不扣费,原因可读。
- 所有允许场景的计费预估与最终内容一致。
- 风控命中记录包含阈值、实际值、动作和原因。
### 第五步:执行发送链路闭环测试
- 覆盖范围:
- 立即发送。
- 定时发送创建、查看、取消、到点执行。
- 导入数据发送。
- submit result、receipt、uplink、72 小时超时。
- 通过标准:
- 批量任务、手机号记录、提交记录、回执记录、上行记录完整。
- 任务进度统计准确。
- trace 能串起 messageId、submitId、sequenceId、gatewayMessageId。
### 第六步:执行计费和对账测试
- 覆盖范围:
- 70/67 计费。
- 预估、冻结、扣费、释放、退款。
- 失败退款、超时退款。
- 账单流水和 reconciliation。
- 通过标准:
- 每条短信记录可追溯到账务流水。
- 成功、失败、超时的金额方向正确。
- 对账 diff 符合预期。
### 第七步:执行 CMPP 连接状态和通道路由测试
- 覆盖范围:
- online、auth_failed、heartbeat_timeout、disconnected、reconnecting、slow_response。
- 主备通道路由。
- 无在线通道。
- 连接状态和业务启停状态组合。
- 通过标准:
- 离线或认证失败通道不被错误提交。
- 可用备用通道能接管。
- 连接状态变化有监控、健康指标和日志。
### 第八步:执行回归验证和报告归档
- 覆盖范围:
- 自动化测试命令。
- 前端 smoke。
- 性能 smoke。
- 缺陷复测。
- 建议执行命令:
```bash
npm run spike:contracts
npm run test:api
npm run test:gateway
npm run verify:phase8
```
- 产出物:
- 测试执行记录。
- 缺陷列表和复测结果。
- 性能 smoke 结果。
- 未覆盖项和延期说明。
## 16. 回归执行建议
每次阶段回归至少执行: