docs: expand business closure test cases

This commit is contained in:
hectorzhao
2026-07-01 15:36:51 +08:00
parent a31beeac0d
commit 19ff6531d1
+685 -11
View File
@@ -22,8 +22,26 @@
| 通道 | active CMPP 通道、disabled 通道、备用通道;通道组包含主备优先级。 |
| 号码 | 合法号码、重复号码、非法号码、企业黑名单号码、全局黑名单号码。 |
| 账户 | 余额充足、余额不足、套餐余量充足、套餐余量不足、授信额度可用。 |
| 企业认证 | 未认证、待审核、已通过、已驳回四类企业认证资料。 |
| 导入文件 | UTF-8 CSV、GBK CSV、TXT、超 20 MB 文件、含空行/重复/非法号码/非法字符文件。 |
| 非法内容 | 控制字符、emoji、换行、不可见字符、超长变量、签名外置内容、敏感词内容。 |
## 3. 客户端功能用例
## 3. 业务闭环覆盖矩阵
| 业务闭环 | 必须验证 |
| --- | --- |
| 企业认证闭环 | 客户提交资料、运营审核、客户查看状态、驳回重提、通过后才允许使用受限发送能力、日志可追溯。 |
| 短信应用闭环 | 创建、启停、删除、密钥重置、IP 白名单、模板不匹配策略、变更后对发送实时生效、日志可追溯。 |
| 签名闭环 | 创建、材料、审核、删除、报备状态变化、发送可用性校验、历史任务不受错误覆盖、日志可追溯。 |
| 引流信息闭环 | 字段配置、客户填写、删除字段或删除客户引流信息、报备材料影响、发送阻断或审核原因可见。 |
| 模板闭环 | 单变量、多变量、审核、删除、变量缺失/多传/格式异常、计费预估、发送可用性校验。 |
| 号码导入闭环 | 文件上传、解析、去重、非法号码、黑名单、导入结果展示、生成任务、生成手机号记录。 |
| 发送闭环 | 立即发送、定时发送、到点触发、入队、submit、回执、上行、任务进度、发送详情、trace、对账。 |
| 内容校验闭环 | 非法字符展示、敏感词、控制字符、内容清洗或拒绝、计费不被非法字符干扰、错误原因可见。 |
| 计费闭环 | 预估、余额校验、冻结、扣费、释放、退款、短信计费记录、账单流水、对账。 |
| 系统日志闭环 | 登录、创建、修改、删除、审核、导入导出、密钥重置、发送、报备、账务动作均可查询和定位操作者。 |
## 4. 客户端功能用例
### TC-CLIENT-001 登录与租户隔离
@@ -152,7 +170,7 @@
- 可展示匹配到的下发 messageId。
- 未匹配上行仍可查询,状态或关联为空。
## 4. 运营端功能用例
## 5. 运营端功能用例
### TC-ADMIN-001 签名审核通过
@@ -326,7 +344,7 @@
- 若人为构造缺失流水,diff 展示差额。
- 查询结果支持定位 taskId/messageId。
## 5. 风控规则专项用例
## 6. 风控规则专项用例
### TC-RISK-001 单任务最大号码数直接拒绝
@@ -398,7 +416,7 @@
- 按规则动作进入人工审核或拒绝。
- 命中记录包含 recentTaskCount。
## 6. 计费专项用例
## 7. 计费专项用例
### TC-BILLING-001 70/67 计费条数
@@ -453,7 +471,7 @@
- 生成退款或释放流水。
- 后续二次成功回执不自动覆盖 timeout 状态。
## 7. 发送链路专项用例
## 8. 发送链路专项用例
### TC-SEND-001 批量任务创建和手机号拆分
@@ -541,7 +559,7 @@
- tenantId 可为空。
- 运营端可查询并人工判断。
## 8. Gateway 专项用例
## 9. Gateway 专项用例
### TC-GW-001 SEQID/MSGID 追踪
@@ -596,7 +614,7 @@
- 第二条记录历史或被幂等处理。
- 不重复扣费或重复变更最终状态。
## 9. 契约与队列用例
## 10. 契约与队列用例
### TC-CONTRACT-001 SubmitCommand Schema 校验
@@ -622,7 +640,7 @@
- 步骤:运行 `npm run spike:contracts`
- 预期结果:`uplink-event.json` 通过 schema 校验。
## 10. 端到端 Smoke 用例
## 11. 端到端 Smoke 用例
### TC-E2E-001 核心发送闭环
@@ -668,7 +686,7 @@
- 账务流水可追溯。
- 对账 diff 为 0。
## 11. 前端 Smoke 用例
## 12. 前端 Smoke 用例
### TC-WEB-001 客户端主页面加载
@@ -697,7 +715,7 @@
- 表格或卡片可滚动/适配。
- 主要操作按钮不被遮挡。
## 12. 性能 Smoke 用例
## 13. 性能 Smoke 用例
### TC-PERF-001 BullMQ 500 TPS Smoke
@@ -719,7 +737,663 @@
- 无重复最终状态。
- 错误率满足阶段 0/8 性能报告要求。
## 13. 回归执行建议
## 14. 业务闭环补充用例
### TC-CERT-001 企业认证资料提交
- 优先级:P0
- 前置条件:企业处于未认证状态,客户端企业管理员已登录。
- 步骤:
1. 打开企业认证页面。
2. 填写企业名称、统一社会信用代码、联系人、联系电话。
3. 上传营业执照和授权材料,提交认证。
4. 打开客户端工作台和企业认证详情。
- 预期结果:
- 企业认证状态从未认证变为 pending。
- 认证资料、文件对象、提交人和提交时间保存。
- 客户端可查看待审核状态,不允许重复提交相同版本资料。
- 系统日志记录企业认证提交动作。
### TC-CERT-002 企业认证审核通过后开放发送能力
- 优先级:P0
- 前置条件:企业认证状态为 pending,短信应用/签名/模板已准备好。
- 步骤:
1. 运营审核员查看企业认证资料。
2. 审核通过。
3. 客户端刷新企业认证状态。
4. 客户端创建或提交短信发送任务。
- 预期结果:
- 企业认证状态变为 approved。
- 审核记录包含审核人、审核时间、审核动作。
- 客户端可见已认证状态。
- 受认证约束的发送能力开放,发送任务可进入后续风控/计费/发送链路。
- 系统日志记录审核通过动作。
### TC-CERT-003 企业认证驳回与重新提交
- 优先级:P0
- 前置条件:企业认证状态为 pending。
- 步骤:
1. 运营审核员填写驳回原因并驳回。
2. 客户端查看驳回原因。
3. 客户端修改资料并重新提交。
4. 运营端再次审核通过。
- 预期结果:
- 驳回后状态为 rejected,驳回原因对客户端可见。
- 驳回状态下,受认证约束的发送能力被阻断,并给出认证未通过原因。
- 重新提交后状态回到 pending,保留历史审核记录。
- 最终通过后可正常发送。
### TC-CERT-004 企业停用对发送的影响
- 优先级:P0
- 前置条件:企业已认证并存在可发送资源。
- 步骤:
1. 运营端将企业状态改为 disabled。
2. 客户端尝试创建立即发送任务。
3. 客户端尝试创建定时发送任务。
4. 到达已有定时任务执行时间。
- 预期结果:
- 新建立即任务被拒绝,原因包含企业已停用。
- 新建定时任务被拒绝。
- 已存在但未执行的定时任务到点前重新校验企业状态,企业停用时不入队,任务变为 rejected/canceled。
- 系统日志记录企业停用和发送阻断。
### TC-TEMPLATE-001 多变量模板识别与顺序展示
- 优先级:P0
- 前置条件:存在 active 应用和可用签名。
- 步骤:
1. 创建模板 `尊敬的${name},您的订单${orderNo}将于${date}送达,验证码${code}`
2. 保存模板并查看变量列表。
3. 提交审核并由运营端审核通过。
4. 客户端进入发送页选择该模板。
- 预期结果:
- 系统识别 `name``orderNo``date``code` 四个变量。
- 变量不重复,展示顺序与模板中首次出现顺序一致。
- 审核通过后模板可被选择发送。
- 系统日志记录模板创建、提交审核、审核通过。
### TC-TEMPLATE-002 多变量完整填充发送成功
- 优先级:P0
- 前置条件:多变量模板审核通过,签名报备通过,账户余额充足。
- 步骤:
1. 选择多变量模板。
2. 填写全部变量:`name``orderNo``date``code`
3. 输入合法手机号并提交立即发送。
4. 模拟 submit accepted 和 delivered 回执。
5. 查询发送详情、trace 和计费记录。
- 预期结果:
- 发送内容正确替换所有变量。
- 内容长度按替换后的真实内容计费。
- 生成批量任务、手机号记录、提交记录、回执记录和计费记录。
- trace 中可看到模板、变量、messageId、submitId、gatewayMessageId。
### TC-TEMPLATE-003 多变量缺失、空值和多传
- 优先级:P0
- 前置条件:多变量模板审核通过。
- 步骤:
1. 缺少 `orderNo` 提交发送。
2.`date` 传为空字符串提交发送。
3. 额外传入未定义变量 `coupon` 提交发送。
4. 查看风控命中和客户端错误展示。
- 预期结果:
- 缺少必填变量命中模板变量异常。
- 必填变量为空按缺失或格式异常处理。
- 多传变量命中模板变量异常或被明确提示不允许。
- 任务不入队,错误原因包含变量名。
- 不生成冻结/扣费流水。
### TC-TEMPLATE-004 多变量重复出现只需填写一次
- 优先级:P1
- 前置条件:模板内容为 `${name}您好,${name}的验证码为${code}`
- 步骤:
1. 保存模板并查看变量列表。
2. 发送时只填写一次 `name` 和一次 `code`
3. 提交发送。
- 预期结果:
- 变量列表只展示一个 `name`
- 发送内容中两处 `${name}` 均被替换。
- 计费按最终内容长度计算。
### TC-TEMPLATE-005 变量值超长导致计费条数变化
- 优先级:P1
- 前置条件:模板审核通过,单价已配置。
- 步骤:
1. 使用短变量值预估费用。
2. 使用超长变量值,使最终内容从 1 条变为 2 条或更多。
3. 提交发送。
- 预期结果:
- 费用预估按最终替换内容计算。
- 发送前账户校验使用最终计费条数。
- 短信计费记录的 contentLength、billingUnits、amountCents 与最终内容一致。
### TC-IMPORT-001 CSV 导入发送成功闭环
- 优先级:P0
- 前置条件:模板审核通过,账户余额充足,准备 UTF-8 CSV 文件,包含手机号和变量列。
- 步骤:
1. 在发送页选择文件导入。
2. 上传 CSV,字段包含 `phone,name,code`
3. 系统解析并展示导入总数、有效数、无效数、重复数。
4. 确认提交发送。
5. 模拟 Gateway submit 和 receipt。
6. 查询批量任务、发送详情、trace、账单流水。
- 预期结果:
- CSV 解析成功,变量列映射到模板变量。
- 每个有效手机号生成一条短信记录。
- 无效和重复数据展示在导入结果中,不进入发送或按配置处理。
- 生成任务、明细、提交记录、回执记录、计费记录和账务流水。
### TC-IMPORT-002 TXT 导入号码发送
- 优先级:P0
- 前置条件:无变量模板或变量使用统一值。
- 步骤:
1. 上传 TXT 文件,号码以换行、逗号、空格混合分隔。
2. 预览解析结果。
3. 提交发送。
- 预期结果:
- 系统正确拆分号码。
- 去除空行和前后空格。
- 合法号码进入发送,非法号码展示原因。
- 生成批量任务和手机号记录。
### TC-IMPORT-003 GBK CSV 导入兼容
- 优先级:P1
- 前置条件:准备 GBK 编码 CSV,包含中文变量值。
- 步骤:
1. 上传 GBK CSV。
2. 预览变量值。
3. 提交发送并查看发送内容。
- 预期结果:
- 中文内容不乱码。
- 变量替换正确。
- 计费长度按正确解码后的内容计算。
### TC-IMPORT-004 导入文件超过 20 MB
- 优先级:P0
- 前置条件:准备大于 20 MB 的 CSV/TXT 文件。
- 步骤:上传文件。
- 预期结果:
- 上传或解析前被拒绝。
- 客户端展示文件大小超限。
- 不创建批量任务,不生成计费或发送记录。
- 系统日志记录导入失败原因。
### TC-IMPORT-005 导入文件中含重复、非法、黑名单号码
- 优先级:P0
- 前置条件:文件包含重复号码、非法号码、企业黑名单号码、全局黑名单号码。
- 步骤:
1. 上传文件。
2. 查看导入分析。
3. 提交发送。
4. 查看风控命中记录和发送明细。
- 预期结果:
- 导入分析展示总数、重复数、非法数、黑名单命中数。
- 重复率、非法率、黑名单率进入风控评估。
- 命中拒绝规则时任务 rejected,不入队。
- 命中人工审核规则时任务 pending_review,审核原因展示具体指标。
### TC-IMPORT-006 导入变量列缺失
- 优先级:P0
- 前置条件:模板要求 `name``code`CSV 只包含 `phone,name`
- 步骤:
1. 上传 CSV。
2. 尝试提交发送。
- 预期结果:
- 导入预览提示缺少 `code` 列。
- 不允许提交,或提交后风控变量异常直接拒绝。
- 不生成发送队列,不产生扣费。
### TC-CONTENT-001 发送内容包含控制字符
- 优先级:P0
- 前置条件:模板或变量值中包含不可见控制字符,例如 `\u0000``\u001F`
- 步骤:
1. 输入含控制字符的变量值。
2. 查看发送预览。
3. 提交发送。
- 预期结果:
- 客户端明确标识或提示非法字符位置。
- 后端校验拒绝或清洗策略明确且一致。
- 若拒绝,不创建可发送状态任务,不计费。
- 若清洗,预览内容、计费内容、实际发送内容必须一致。
- 系统日志记录非法字符校验结果。
### TC-CONTENT-002 emoji 和 UCS2 内容计费
- 优先级:P0
- 前置条件:内容或变量值包含 emoji 或非 GSM 字符。
- 步骤:
1. 输入包含 emoji 的短信内容。
2. 查看预估字数和计费条数。
3. 提交发送并查看短信计费记录。
- 预期结果:
- 系统明确展示特殊字符。
- 计费条数按第一版规则 70/67 执行,不被 emoji 拆分错误干扰。
- contentLength 与系统定义的字符统计口径一致。
- 发送记录、计费记录、trace 中内容一致。
### TC-CONTENT-003 换行、制表符和多空格展示
- 优先级:P1
- 前置条件:模板变量值包含换行、制表符或连续空格。
- 步骤:
1. 输入特殊空白字符。
2. 查看发送预览、审核详情和发送详情。
3. 提交发送。
- 预期结果:
- 页面展示不破版,特殊空白有可识别展示或被规范化。
- 计费按最终规范化后的内容计算。
- 审核详情和发送详情展示内容一致。
### TC-CONTENT-004 敏感词和非法字符同时命中
- 优先级:P0
- 前置条件:敏感词库包含 `测试敏感词`
- 步骤:
1. 发送内容同时包含敏感词和非法控制字符。
2. 提交发送。
- 预期结果:
- 任务被拒绝。
- 错误原因同时或按优先级展示敏感词、非法字符问题。
- 不入队,不冻结,不扣费。
- 风控命中或系统日志可追溯两个校验结果。
### TC-SCHEDULE-001 创建定时短信任务
- 优先级:P0
- 前置条件:发送资源审核和报备均通过,账户余额充足。
- 步骤:
1. 在发送页选择定时发送。
2. 设置发送时间为当前时间 10 分钟后。
3. 提交任务。
4. 查看批量任务列表和详情。
- 预期结果:
- 返回批量任务编号。
- 任务状态为 scheduled。
- 任务详情展示计划发送时间。
- 到点前不生成 Gateway SubmitCommand,不产生 submit 记录。
- 如采用发送前冻结,冻结流水生成;如采用到点前冻结,则无冻结流水但有费用预估。
### TC-SCHEDULE-002 定时任务到点发送并生成记录
- 优先级:P0
- 前置条件:存在 scheduled 任务,计划发送时间已到。
- 步骤:
1. 触发调度器或等待时间到达。
2. 观察任务状态。
3. 模拟 Gateway submit accepted 和 delivered。
4. 查询批量任务、发送详情、submit 记录、receipt 记录、trace、账单流水。
- 预期结果:
- 到点后任务重新校验应用、签名、模板、报备状态、账户余额和通道状态。
- 校验通过后任务进入 queued/sending。
- 按手机号生成发送记录或将已创建记录推进到 queued。
- 生成 SubmitCommand、SmsSubmitRecord、SmsReceiptRecord、SmsBillingRecord 和账务流水。
- 任务最终完成,成功数、失败数、未知数统计正确。
### TC-SCHEDULE-003 定时任务到点前取消
- 优先级:P0
- 前置条件:存在 scheduled 任务且未到执行时间。
- 步骤:
1. 客户端取消定时任务。
2. 查看任务详情和账单流水。
3. 到达原计划时间。
- 预期结果:
- 任务状态变为 canceled。
- 如已冻结费用,应生成 release 流水。
- 到点后不会入队,不生成提交记录。
- 系统日志记录取消动作。
### TC-SCHEDULE-004 定时任务到点时余额不足
- 优先级:P0
- 前置条件:创建 scheduled 任务时余额充足,到点前账户余额被其他任务消耗。
- 步骤:
1. 创建定时任务。
2. 调整或消耗账户余额至不足。
3. 到点触发调度。
- 预期结果:
- 到点前重新进行账户校验。
- 余额不足时任务不入队,状态变为 rejected/failed。
- 失败原因展示余额不足。
- 不生成扣费流水;如曾冻结则释放。
### TC-SCHEDULE-005 定时任务到点时模板或签名已失效
- 优先级:P0
- 前置条件:存在 scheduled 任务。
- 步骤:
1. 创建定时任务。
2. 到点前运营端驳回、停用或删除关联模板/签名。
3. 到点触发调度。
- 预期结果:
- 调度前重新校验模板和签名可用性。
- 关联资源不可用时任务不入队。
- 任务失败原因明确指出模板或签名不可用。
- 历史任务详情仍可展示原模板/签名快照或名称,不因删除而空白。
### TC-SCHEDULE-006 定时任务查看和筛选
- 优先级:P1
- 前置条件:存在 scheduled、queued、finished、canceled 多状态任务。
- 步骤:
1. 客户端按任务编号、应用、发送时间、状态查询。
2. 运营端按租户、应用、状态查询任务进度。
3. 打开定时任务详情。
- 预期结果:
- 查询条件准确生效。
- 定时任务详情展示计划发送时间、创建时间、创建人、号码总数、预估费用、当前状态。
- 到点执行后的状态变化在客户端和运营端一致。
### TC-LOG-001 登录和登出日志
- 优先级:P1
- 前置条件:存在客户端用户和运营端用户。
- 步骤:
1. 分别登录客户端和运营端。
2. 执行登出或 token 失效。
3. 查询系统日志。
- 预期结果:
- 登录日志记录用户、租户、IP、User-Agent、时间。
- 登录失败记录失败原因。
- 运营端可按用户、租户、动作查询。
### TC-LOG-002 配置变更日志
- 优先级:P0
- 前置条件:运营管理员和企业管理员均可操作配置。
- 步骤:
1. 创建、编辑、删除应用。
2. 创建、编辑、删除签名、模板、引流信息。
3. 创建、编辑、停用通道和路由规则。
4. 查询系统日志。
- 预期结果:
- 每个动作均记录 action、resource、resourceId、操作者、租户、时间。
- 日志 detail 包含关键变更字段的前后值或摘要。
- 客户端只能查看本企业相关日志,运营端可看全平台。
### TC-LOG-003 审核和报备日志
- 优先级:P0
- 步骤:
1. 执行企业认证审核、签名审核、模板审核、短信审核。
2. 生成报备任务、导出报备资料、导入回执。
3. 查询系统日志和业务审核记录。
- 预期结果:
- 审核动作有业务审核记录和系统日志两类证据。
- 报备动作有报备记录和系统日志两类证据。
- 日志可定位操作人、状态前后值和原因。
### TC-LOG-004 导入导出日志
- 优先级:P1
- 步骤:
1. 导入号码文件。
2. 导出发送明细或报备资料。
3. 导入报备回执。
4. 查询系统日志。
- 预期结果:
- 日志记录文件名、文件大小、行数、成功数、失败数、操作者、时间。
- 导出日志记录导出条件和导出文件 id。
- 导入失败也应记录失败原因。
### TC-DELETE-001 删除未被使用的签名
- 优先级:P1
- 前置条件:签名未关联模板或发送任务。
- 步骤:
1. 客户端或运营端删除签名。
2. 查询签名列表。
3. 尝试发送时选择该签名。
- 预期结果:
- 删除成功或状态变为 deleted。
- 列表默认不展示。
- 发送页不可选择该签名。
- 系统日志记录删除动作。
### TC-DELETE-002 删除已关联模板的签名
- 优先级:P0
- 前置条件:签名已关联审核通过模板。
- 步骤:
1. 尝试删除签名。
2. 如系统允许软删除,使用关联模板发起发送。
3. 查看模板列表和发送错误。
- 预期结果:
- 系统应阻止硬删除并提示存在关联模板,或执行软删除/停用。
- 被删除或停用签名不可用于新发送。
- 历史发送记录仍保留签名名称或快照。
- 系统日志记录删除失败或软删除动作。
### TC-DELETE-003 删除应用对发送的影响
- 优先级:P0
- 前置条件:应用下存在签名、模板、历史任务和 scheduled 任务。
- 步骤:
1. 删除或停用应用。
2. 尝试创建立即发送任务。
3. 到达 scheduled 任务执行时间。
4. 查询历史批量任务和发送明细。
- 预期结果:
- 新发送被阻断,原因包含应用不可用。
- 关联 scheduled 任务到点前重新校验应用状态,应用不可用时不入队。
- 历史任务和发送明细可查询,不因应用删除丢失。
- 系统日志记录应用删除/停用和发送阻断。
### TC-DELETE-004 删除模板对发送的影响
- 优先级:P0
- 前置条件:模板已审核通过并有历史任务。
- 步骤:
1. 删除或停用模板。
2. 发送页尝试选择该模板。
3. 使用已保存草稿或 scheduled 任务触发送。
4. 查询历史发送详情。
- 预期结果:
- 新发送不可选择已删除模板。
- 草稿或 scheduled 到点时校验失败,不入队。
- 历史发送详情仍展示原短信内容、模板名称或模板快照。
- 不影响历史计费和对账。
### TC-DELETE-005 删除引流信息字段
- 优先级:P0
- 前置条件:签名报备材料依赖某个引流信息字段。
- 步骤:
1. 运营端删除或停用引流字段。
2. 客户端编辑签名引流信息。
3. 生成或重新生成报备任务。
4. 使用该签名发送。
- 预期结果:
- 新签名资料不再要求已删除字段。
- 已存在报备材料保留历史值或标记字段已停用。
- 如通道仍要求该字段但客户资料缺失,报备任务无法通过或发送前校验失败。
- 失败原因明确指向缺少报备/引流资料。
### TC-DELETE-006 删除客户签名引流信息对报备和发送影响
- 优先级:P0
- 前置条件:签名已报备通过,且发送依赖引流信息。
- 步骤:
1. 客户端删除签名上的某项引流信息。
2. 查看签名报备状态。
3. 尝试使用该签名发送。
4. 运营端查看报备任务或报备记录。
- 预期结果:
- 删除关键引流信息后,签名报备状态应变为 waiting_material/pending 或标记需重新报备。
- 使用未重新报备通过的签名发送应被阻断或进入人工审核。
- 系统记录引流信息删除日志和报备状态变化记录。
### TC-REPORT-001 签名审核通过但未报备不能发送
- 优先级:P0
- 前置条件:签名 auditStatus=approvedreportStatus=waiting_material 或 pending。
- 步骤:
1. 客户端选择该签名和已审核模板。
2. 提交发送。
- 预期结果:
- 发送被阻断或进入人工审核,按第一版策略明确处理。
- 原因包含签名未完成通道报备。
- 不投递 Gateway SubmitCommand。
- 不扣费,或已冻结需释放。
### TC-REPORT-002 报备通过后允许发送
- 优先级:P0
- 前置条件:签名审核通过但报备未通过。
- 步骤:
1. 运营端导入报备成功回执。
2. 签名 reportStatus 变为 approved。
3. 客户端使用该签名发送。
4. 模拟 submit 和 receipt。
- 预期结果:
- 报备状态同步到签名详情和客户端列表。
- 发送可进入队列。
- 生成发送记录和计费流水。
### TC-REPORT-003 报备失败后阻断发送
- 优先级:P0
- 前置条件:签名已审核通过,报备任务导入失败回执。
- 步骤:
1. 确认签名 reportStatus=rejected。
2. 客户端使用该签名发送。
3. 运营端查看发送审核或风控记录。
- 预期结果:
- 发送被阻断,不入队。
- 客户端展示报备失败原因。
- 运营端可查询失败报备记录。
### TC-REPORT-004 报备状态从通过变为失败对 scheduled 任务的影响
- 优先级:P0
- 前置条件:签名 reportStatus=approved,存在未来执行的 scheduled 任务。
- 步骤:
1. 创建定时发送任务。
2. 到点前运营端将该签名通道报备状态改为 rejected 或 waiting_material。
3. 到点触发调度。
- 预期结果:
- 调度前重新校验报备状态。
- 报备状态不可用时任务不入队。
- 任务失败原因包含报备状态变化。
- 如已冻结费用,生成释放流水。
### TC-REPORT-005 多通道报备状态影响路由
- 优先级:P0
- 前置条件:通道 A 报备通过,通道 B 报备失败,通道组包含 A/B。
- 步骤:
1. 使用该签名发送,路由规则优先通道 A。
2. 停用通道 A 或模拟 A 不可用。
3. 系统尝试切换到通道 B。
- 预期结果:
- 通道 A 可用时正常发送。
- 切换备用通道前必须校验签名在备用通道的报备状态。
- 通道 B 报备失败时不能切换发送,应选择其他报备通过通道或失败并给出原因。
### TC-REPORT-006 引流信息字段变更触发重新报备
- 优先级:P1
- 前置条件:签名已在通道报备通过。
- 步骤:
1. 客户端修改签名引流信息中的关键字段。
2. 查看签名报备状态。
3. 运营端生成新的报备任务。
4. 新报备通过后再次发送。
- 预期结果:
- 修改关键引流信息后原报备状态失效或标记需重新报备。
- 重新报备前发送被阻断或进入人工审核。
- 新报备通过后恢复发送。
- 保留旧报备记录和新报备记录。
### TC-STATUS-001 已有历史任务不受配置删除错误覆盖
- 优先级:P0
- 前置条件:存在已完成发送任务,关联应用、签名、模板随后被删除或停用。
- 步骤:
1. 删除或停用应用、签名、模板。
2. 打开历史批量任务、发送详情、trace、对账。
- 预期结果:
- 历史任务仍可查询。
- 历史短信内容、手机号、计费条数、通道、回执、账务流水不丢失。
- trace 不因关联资源删除而报错。
- 对账结果不受配置删除影响。
### TC-STATUS-002 配置状态变化必须写入系统日志
- 优先级:P0
- 前置条件:准备应用、签名、模板、引流字段、通道、路由规则。
- 步骤:
1. 分别执行启用、停用、删除、恢复。
2. 对每次操作查询系统日志。
- 预期结果:
- 每次状态变化都有日志。
- 日志包含状态前后值。
- 日志能区分客户侧操作和运营侧操作。
- 日志 resourceId 可跳转或定位到原业务对象。
### TC-E2E-004 定时发送完整闭环
- 优先级:P0
- 步骤:
1. 企业认证通过。
2. 创建应用、签名、模板和报备材料。
3. 审核签名和模板,报备通过。
4. 充值账户。
5. 创建定时发送任务。
6. 到点触发送链路。
7. 模拟 submit accepted、receipt delivered、uplink。
8. 查询任务、发送详情、trace、账单流水、系统日志。
- 预期结果:
- 全链路状态流转完整。
- 发送和回执记录完整。
- 账务预估、冻结、扣费或释放逻辑正确。
- 系统日志覆盖认证、配置、审核、报备、发送、回执关键动作。
### TC-E2E-005 导入数据发送完整闭环
- 优先级:P0
- 步骤:
1. 使用多变量模板。
2. 上传 CSV,包含手机号和变量列。
3. 处理重复、非法、黑名单行。
4. 提交合法数据发送。
5. 模拟 submit 和 receipt。
6. 查询导入结果、批量任务、发送明细、trace、对账。
- 预期结果:
- 导入解析、变量映射、风控、计费、发送、回执、对账形成闭环。
- 被过滤或拒绝的数据有明确原因。
- 合法数据生成完整发送记录。
### TC-E2E-006 配置删除影响发送完整闭环
- 优先级:P0
- 步骤:
1. 创建并完成一条历史发送。
2. 创建一条未来定时发送。
3. 删除或停用应用、签名、模板、引流信息之一。
4. 尝试新建立即发送。
5. 等待定时任务到点。
6. 查询历史任务和日志。
- 预期结果:
- 新建发送被阻断。
- 定时任务到点重新校验并失败或取消。
- 历史发送可查询、可对账。
- 配置删除、发送阻断、定时任务失败均有日志。
## 15. 回归执行建议
每次阶段回归至少执行: