test: close remaining quality verification gaps

This commit is contained in:
hectorzhao
2026-08-28 16:27:00 +08:00
parent 3834d67a30
commit 9ac41e9308
8 changed files with 602 additions and 1 deletions
@@ -0,0 +1,205 @@
# CMPP 平台登录后浏览器验收清单
- 验收环境:测试环境 `http://100.93.204.60:12026`
- 客户端入口:`/#/client/login`
- 运营端入口:`/#/admin/login`
- 禁止范围:不得使用预生产;不得发送、补发或重投短信;不得充值、改余额、改通道账号或启停状态
- 建议浏览器:Edge 或 Chrome 无痕窗口,桌面视口优先使用 1440×900;移动端补测 390×844
## 1. 证据要求
每个失败项至少记录:入口 URL、账号类型、操作步骤、实际结果、期望结果、时间、截图、控制台错误和失败请求。每个通过项至少保留一张能证明最终状态的截图。
验收前打开开发者工具:
1.`F12`
2. 在 Network 勾选 `Preserve log`,清空旧请求。
3. 在 Console 清空旧日志。
4. Network 筛选 `Fetch/XHR`,不要只看页面文字。
统一通过标准:
- 页面不是空白页,没有 Vite/React 错误遮罩。
- Console 没有新的 errorwarning 必须能解释且与本次操作无关。
- 业务接口不能出现未处理的 500、HTML 错误页或裸 `Internal server error`
- API 请求路径必须是 `/api/client/**``/api/admin/**` 对应门户,状态码与页面结果一致。
- 刷新后状态与刷新前一致,不依赖只存在于页面内存的假数据。
## 2. 客户端登录与会话
### CL-AUTH-01 正常登录
1. 打开客户端登录页。
2. 输入客户端账号、密码和当前图形验证码。
3. 点击“登录”。
4. 确认进入客户端首页,而不是停留在登录页或白屏。
5. 在 Network 找到登录请求,确认返回 2xx;后续 `/api/client/**` 初始化请求返回 2xx。
通过标准:页面进入客户端工作台,企业名称和当前账号正确;Console 无 error。
### CL-AUTH-02 刷新与深层链接
1. 在已登录状态按 `Ctrl+R`
2. 直接在地址栏打开账户余额、短信应用、批量任务、短信详情、上行短信各一个深层路由。
3. 每个路由再刷新一次。
通过标准:刷新后仍保持登录;页面正常恢复数据;不先闪现其他企业数据;不错误跳回运营端或登录页。
### CL-AUTH-03 会话隔离
1. 保持客户端已登录,新开标签访问 `/#/admin/...` 任一运营端深层地址。
2. 不输入运营端账号。
通过标准:客户端 Cookie 不能直接获得运营端权限,应进入运营端登录页或返回明确的未授权状态。
## 3. 客户端租户边界(C2
### CL-TENANT-01 请求不携带客户端租户头
1. 已登录客户端后,在 Network 打开任意 `/api/client/**` 请求。
2. 查看 Request Headers。
通过标准:请求中没有 `x-tenant-id`;页面仍能正常显示当前企业的数据。
### CL-TENANT-02 localStorage 不参与授权
1. 在 Application → Local Storage 中记录现有内容。
2. 若存在历史 `tenantId` 字段,先截图,再删除该字段;没有则不新增。
3. 刷新当前客户端页面。
通过标准:当前企业仍由登录会话识别,页面不出现默认租户导致的 403,也不切换到其他企业。
### CL-TENANT-03 资源归属抽查
1. 打开短信应用、签名、模板、账户余额和用户管理。
2. 核对企业名称、应用、签名和余额均属于当前账号企业。
通过标准:不出现其他企业名称、应用、手机号、签名或余额。
> 安全接口矩阵中的“伪造其他租户头返回 403”已由自动化和真实 API 记录覆盖,人工浏览器验收不要求修改请求后重放。
## 4. 客户端核心页面
### CL-PAGE-01 首页与账户余额
1. 打开客户端首页,检查所有金额数字。
2. 打开账户余额页。
3. 检查标题是否为图标+页面标题,顶部不应重复出现单独“账户”标题。
4. 检查金额字体、颜色和字重。
通过标准:金额使用普通大号黑色字体;首页金额与“今日发送”视觉一致;账户状态不显示“余额水位”。
### CL-PAGE-02 短信应用
1. 打开短信应用列表和一个应用详情。
2. 对照运营端同一应用的 CMPP 连接状态。
通过标准:两端连接状态一致;页面没有 `Internal server error`
### CL-PAGE-03 接口对接
1. 打开接口对接页。
2. 依次查看配置、HTTP 凭据、Webhook、请求日志和投递日志。
通过标准:五个区域均能加载真实接口结果;空数据使用中文空态;不能显示裸 `Internal server error`
### CL-PAGE-04 签名与引流信息
1. 打开签名列表及详情。
2. 查看引流信息列表及详情。
通过标准:不显示“已提交资料”和“使用场景”;不显示笼统“是否审核”;只显示移动、联通、电信三网是否可用;运营端“部分通过”和“全部通过”在客户端均显示“报备通过”。
### CL-PAGE-05 时间默认值
分别打开:批量任务、短信发送详情、上行短信。
通过标准:首次进入时开始/结束时间默认为近7天;刷新后仍按近7天发起请求;列表结果与筛选时间一致。
### CL-PAGE-06 发送状态中文化
1. 打开短信发送详情。
2. 抽查成功、失败、处理中、未知等不同状态。
通过标准:页面不显示 `delivered``failed``submit_queued` 等英文内部状态;未知值使用明确中文兜底,不能误映射为成功。
### CL-PAGE-07 顶部导航
通过标准:客户端右上角不存在“待审核任务”按钮。
## 5. 运营端核心页面
### AD-AUTH-01 正常登录、刷新和深层链接
使用运营端账号登录,重复客户端的正常登录、刷新和深层链接检查。
通过标准:运营端会话独立,刷新不丢失;客户端 Cookie 不能替代运营端会话。
### AD-PAGE-01 签名质量通道搜索
1. 打开签名质量检测页面。
2. 在通道搜索输入一个已知通道名称或编号。
3. 清空条件后重复一次。
通过标准:列表请求携带通道条件,结果只保留匹配通道;清空后恢复全部;无匹配时显示正常空态。
### AD-PAGE-02 通道签名活跃度热力图搜索
执行与签名质量页相同的通道搜索。
通过标准:热力图和关联统计同步更新,不只是前端隐藏标签;清空后恢复。
### AD-PAGE-03 短信任务进度状态搜索
1. 打开短信任务进度页面。
2. 依次选择至少两个状态。
3. 清空状态。
通过标准:请求状态参数正确;表格与状态条件一致;清空后恢复全部。
### AD-PAGE-04 系统日志日期区间
1. 打开系统日志页面。
2. 检查默认开始和结束时间。
3. 改为一个更短区间并查询。
通过标准:默认近7天;请求携带正确起止时间;修改区间后数据同步变化。
## 6. 通用异常状态
### COMMON-01 慢请求与 Loading
在 Network 将速度切换为 Slow 3G,刷新一个列表页。
通过标准:显示稳定 Loading,不闪白屏、不出现旧企业数据;完成后 Loading 消失。
### COMMON-02 空结果
使用一个不可能匹配的关键字或安全的空时间区间查询。
通过标准:显示中文空态,不报错,不保留上一次列表冒充新结果。
### COMMON-03 业务错误
在不改变业务数据的前提下触发一个前端可校验错误,例如缺少必填字段。
通过标准:显示中文、可理解的字段或业务提示;不显示裸 500 文案。
### COMMON-04 移动端
使用开发者工具切换到 390×844,检查客户端首页、余额页、列表筛选和详情弹窗。
通过标准:无横向页面滚动;按钮、金额、标题不遮挡;弹窗可滚动且关闭按钮可见。
## 7. 验收结果模板
| 编号 | 结果 | 截图 | Console | 失败请求/备注 |
|---|---|---|---|---|
| CL-AUTH-01 | 通过/失败 | 文件名 | 0 error / 摘要 | 状态码与接口 |
| CL-TENANT-01 | 通过/失败 | 文件名 | 0 error / 摘要 | 是否存在 x-tenant-id |
| CL-PAGE-0107 | 通过/失败 | 文件名 | 0 error / 摘要 | 具体页面 |
| AD-AUTH-01 | 通过/失败 | 文件名 | 0 error / 摘要 | 状态码与接口 |
| AD-PAGE-0104 | 通过/失败 | 文件名 | 0 error / 摘要 | 筛选条件与结果 |
| COMMON-0104 | 通过/失败 | 文件名 | 0 error / 摘要 | 状态与视口 |
所有项目通过后,浏览器验收才可以标记为关闭;仅登录页可见或接口返回 200 不算登录后验收完成。