test: record step4 precheck coverage
This commit is contained in:
@@ -0,0 +1,98 @@
|
|||||||
|
# 测试实施第四步执行记录
|
||||||
|
|
||||||
|
## 执行时间
|
||||||
|
|
||||||
|
- 日期:2026-07-01
|
||||||
|
- 总步骤数:8
|
||||||
|
- 当前步骤:第 4 步,执行发送前校验测试
|
||||||
|
|
||||||
|
## 第四步目标
|
||||||
|
|
||||||
|
验证客户发送前的核心前置校验闭环,包括短信模板多变量识别、变量完整性校验、风控规则直接拒绝、风控规则进入人工审核、计费预估和账户余额检查。
|
||||||
|
|
||||||
|
导入数据发送、非法字符展示、敏感词/非法字符对计费的干扰当前缺少完整发送前校验入口,本步按阻塞缺口记录。
|
||||||
|
|
||||||
|
## 执行环境
|
||||||
|
|
||||||
|
| 项目 | 结果 |
|
||||||
|
| --- | --- |
|
||||||
|
| PostgreSQL | 可连接,使用真实数据库。 |
|
||||||
|
| Redis | 可连接,本步未直接消费队列。 |
|
||||||
|
| MinIO | 可连接,本步未执行文件导入。 |
|
||||||
|
| API | 使用 `API_PORT=3101 npm --prefix api run start:dev` 启动,执行完成后已停止。 |
|
||||||
|
|
||||||
|
## 已执行命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
Test-NetConnection 127.0.0.1 -Port 5432
|
||||||
|
Test-NetConnection 127.0.0.1 -Port 6379
|
||||||
|
Test-NetConnection 127.0.0.1 -Port 9000
|
||||||
|
$env:API_PORT='3101'; npm --prefix api run start:dev
|
||||||
|
node <inline step4 precheck smoke>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 本步执行过的测试用例
|
||||||
|
|
||||||
|
| 用例编号 | 用例名称 | 执行范围 | 结果 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| TC-TEMPLATE-001 | 多变量模板识别 | 创建包含 `${name}`、`${orderNo}`、`${code}`、`${minutes}` 的短信模板,查询模板变量列表。 | 通过 |
|
||||||
|
| TC-TEMPLATE-002 | 多变量完整提交 | 使用完整变量集调用发送风控评估,验证任务可提交、状态 approved。 | 通过 |
|
||||||
|
| TC-TEMPLATE-003 / TC-RISK-005 | 模板变量异常 | 少传 `orderNo` 且多传 `coupon`,验证任务 rejected、命中 TEMPLATE_VARIABLE_ANOMALY,并记录 missing/extra 变量。 | 通过 |
|
||||||
|
| TC-RISK-001 | 最大号码数直接拒绝 | 应用 `maxPhonesPerTask=3`,提交 4 个号码,验证任务 rejected 并命中 MAX_PHONES_PER_TASK。 | 通过 |
|
||||||
|
| TC-RISK-002 | 重复率进入人工审核 | 3 个号码中 1 个重复,重复率 33.33%,验证任务 pending_review 并命中 DUPLICATE_PHONE_RATIO。 | 通过 |
|
||||||
|
| TC-RISK-003 | 非法号码率直接拒绝 | 2 个号码中包含 `10086X`,非法号码率 50.00%,验证任务 rejected 并命中 ILLEGAL_PHONE_RATIO。 | 通过 |
|
||||||
|
| TC-RISK-004 | 黑名单率进入人工审核 | 创建平台黑名单号码后提交,黑名单命中率 50.00%,验证任务 pending_review 并命中 BLACKLIST_HIT_RATIO。 | 通过 |
|
||||||
|
| TC-BILLING-001 / TC-TEMPLATE-005 | 费用预估与变量长度计费影响 | 分别估算短内容和长内容,验证 70/67 分段规则导致长内容计费条数和金额增加。 | 通过 |
|
||||||
|
| TC-BILLING-PRECHECK-001 | 账户余额发送前检查 | 创建账户余额 100 分、5 条,分别执行小额和超额检查,验证小额可发、超额拦截。 | 通过 |
|
||||||
|
|
||||||
|
## 本步创建的数据
|
||||||
|
|
||||||
|
| 数据类型 | ID |
|
||||||
|
| --- | --- |
|
||||||
|
| 测试运行编号 | `step4-1783101678315` |
|
||||||
|
| Tenant | `cmr1wlzm3000vqgyuztjypar9` |
|
||||||
|
| SmsApplication | `cmr1wlzpi000wqgyugengdtei` |
|
||||||
|
| SmsSignature | `cmr1wlzq4000xqgyuytwb1tmn` |
|
||||||
|
| SmsTemplate | `cmr1wlzr70011qgyugx8f6gs8` |
|
||||||
|
| 风控放行任务 | `cmr1wm03w001aqgyucjy5palb` |
|
||||||
|
|
||||||
|
## 通过项
|
||||||
|
|
||||||
|
- 短信模板可自动识别多个变量,并在客户侧查询中返回变量列表。
|
||||||
|
- 完整变量、合法号码、未触发风险规则时,发送前风控评估可放行。
|
||||||
|
- 模板变量缺失或多传时,发送前风控评估会直接拒绝,并记录变量异常详情。
|
||||||
|
- 应用最大号码数配置会参与风控阈值计算,超过上限时直接拒绝。
|
||||||
|
- 重复号码比例过高会进入人工审核。
|
||||||
|
- 非法手机号比例过高会直接拒绝。
|
||||||
|
- 命中平台黑名单会进入人工审核。
|
||||||
|
- 计费预估按 70/67 规则计算短信分段,内容变长会增加计费条数和金额。
|
||||||
|
- 账户检查能够同时校验金额余额和短信条数余额。
|
||||||
|
|
||||||
|
## 本步发现的问题
|
||||||
|
|
||||||
|
| 问题 | 影响 | 证据 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 审核接口传入不存在的 `reviewerId` 会返回 500 | 签名/模板审核接口没有提前校验 reviewer 是否存在,且签名状态可能已更新后审计记录失败。 | `AuditRecord_reviewerId_fkey` 外键错误。 |
|
||||||
|
| 风控评估传入不存在的 `createdById` 会返回 500 | 客户端误传或前端传入无效用户 ID 时,发送前校验会被数据库外键错误中断。 | `SmsSendTask_createdById_fkey` 外键错误。 |
|
||||||
|
|
||||||
|
## 未执行或阻塞项
|
||||||
|
|
||||||
|
| 用例编号 | 用例名称 | 原因 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| TC-IMPORT-001 到 TC-IMPORT-006 | 导入数据发送 | 当前 API 未提供客户侧导入文件解析、号码预览、导入批次确认发送的完整入口;MinIO 文件能力已在前序 smoke 验证。 |
|
||||||
|
| TC-CONTENT-001 | 非法字符展示 | 当前风控评估只校验手机号、黑名单、变量、频控等,没有短信内容非法字符检测和展示字段。 |
|
||||||
|
| TC-CONTENT-002 | 敏感词命中展示 | 当前有敏感词字典管理接口,但发送前风控未接入敏感词扫描。 |
|
||||||
|
| TC-CONTENT-003 | 非法字符不干扰计费 | 缺少内容非法字符校验结果与计费预估联动入口,本步只能验证普通长短内容计费。 |
|
||||||
|
| TC-CONTENT-004 | 非法字符修正后重新计费 | 缺少内容修正闭环入口。 |
|
||||||
|
| TC-RISK-006 | 非工作时间营销大批量人工审核 | 默认阈值为 5000,本步未构造大批量真实请求;已在 API 单元测试中覆盖。 |
|
||||||
|
| TC-RISK-007 | 短时间任务创建频控 | 本步避免污染同租户任务频控;已在 API 单元测试中覆盖。 |
|
||||||
|
|
||||||
|
## 本步结论
|
||||||
|
|
||||||
|
第四步可执行的发送前校验闭环已通过。当前系统已经具备多变量模板识别、变量异常拒绝、最大号码数拒绝、重复率人工审核、非法号码率拒绝、黑名单人工审核、计费预估和余额检查能力。
|
||||||
|
|
||||||
|
主要缺口集中在客户侧导入发送、内容非法字符展示、敏感词接入发送前风控,以及无效外键入参的接口健壮性处理。
|
||||||
|
|
||||||
|
## 下一步
|
||||||
|
|
||||||
|
进入第 5 步:执行发送链路闭环测试。重点覆盖任务创建、号码拆分、发送入队、submit result、receipt、uplink、任务查看、定时短信到点发送和 72 小时未知转超时。
|
||||||
@@ -47,6 +47,8 @@ npm run spike:gateway
|
|||||||
npm --prefix api test
|
npm --prefix api test
|
||||||
npm run test:gateway
|
npm run test:gateway
|
||||||
node tools/smoke/real-env-smoke.mjs
|
node tools/smoke/real-env-smoke.mjs
|
||||||
|
$env:API_PORT='3101'; npm --prefix api run start:dev
|
||||||
|
node <inline step4 precheck smoke>
|
||||||
```
|
```
|
||||||
|
|
||||||
### 当前结果
|
### 当前结果
|
||||||
@@ -61,9 +63,14 @@ node tools/smoke/real-env-smoke.mjs
|
|||||||
- `npm --prefix api run prisma:migrate:deploy` 通过,无待应用迁移。
|
- `npm --prefix api run prisma:migrate:deploy` 通过,无待应用迁移。
|
||||||
- API 以真实 `.env` 启动,`GET http://127.0.0.1:3101/api/health` 返回 `ok`。
|
- API 以真实 `.env` 启动,`GET http://127.0.0.1:3101/api/health` 返回 `ok`。
|
||||||
- `tools/smoke/real-env-smoke.mjs` 已补充最小幂等 seed,并验证登录、企业/客户、人工充值、余额检查、发送任务、MinIO 预签名上传、运营日志、发送链路追踪和账务对账聚合。
|
- `tools/smoke/real-env-smoke.mjs` 已补充最小幂等 seed,并验证登录、企业/客户、人工充值、余额检查、发送任务、MinIO 预签名上传、运营日志、发送链路追踪和账务对账聚合。
|
||||||
|
- 第 4 步发送前置校验 smoke 通过:
|
||||||
|
- `TC-TEMPLATE-001`、`TC-TEMPLATE-002`、`TC-TEMPLATE-003 / TC-RISK-005`、`TC-RISK-001`、`TC-RISK-002`、`TC-RISK-003`、`TC-RISK-004`、`TC-BILLING-001 / TC-TEMPLATE-005`、`TC-BILLING-PRECHECK-001` 均通过。
|
||||||
|
- 记录两个接口健壮性问题:不存在的 `reviewerId`、不存在的 `createdById` 会触发数据库外键 500。
|
||||||
|
- 客户侧导入发送、非法字符展示、敏感词接入发送前风控当前缺少完整入口,已在 `docs/testing-execution-step-4.md` 记录为阻塞缺口。
|
||||||
|
|
||||||
### 已知缺口
|
### 已知缺口
|
||||||
|
|
||||||
- 暂未新增前端测试框架,前端仍以 `npm run build` 作为 smoke。
|
- 暂未新增前端测试框架,前端仍以 `npm run build` 作为 smoke。
|
||||||
- BullMQ 真实链路仍由 `npm run spike:bullmq` 覆盖,不在 Jest 内启动 Redis。
|
- BullMQ 真实链路仍由 `npm run spike:bullmq` 覆盖,不在 Jest 内启动 Redis。
|
||||||
- Gateway 未接真实运营商 SMSC;真实 CMPP 互通需要运营商测试环境后补充联调记录。
|
- Gateway 未接真实运营商 SMSC;真实 CMPP 互通需要运营商测试环境后补充联调记录。
|
||||||
|
- 客户侧导入发送、短信内容非法字符展示和敏感词发送前拦截尚未形成完整业务入口。
|
||||||
|
|||||||
Reference in New Issue
Block a user