From ac08ca6cd16c1757ff5a135cb29a64adb4675754 Mon Sep 17 00:00:00 2001 From: haoliang <821644@qq.com> Date: Sun, 3 May 2026 01:38:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=A7=84=E8=8C=83=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=EF=BC=9A20=E7=BB=B4=E5=BA=A6=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=80=BB=E8=A1=A8=E3=80=81=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=80=82=E7=94=A8=E6=80=A7=E9=80=9F=E6=9F=A5?= =?UTF-8?q?=E3=80=81=E5=8F=8D=E6=A8=A1=E5=BC=8F=E8=A1=A5=E5=85=853?= =?UTF-8?q?=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/06-测试规范.md | 50 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/docs/06-测试规范.md b/docs/06-测试规范.md index 60346a0..7295c8a 100644 --- a/docs/06-测试规范.md +++ b/docs/06-测试规范.md @@ -290,7 +290,48 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium ## 五、Playwright E2E测试断言标准 -### 5.1 交互控件测试矩阵 +> **强制要求:每次编写Playwright测试时,必须逐项对照以下维度清单。每个页面的每个维度都必须有对应测试用例覆盖,不允许遗漏。** + +### 5.0 测试维度总表(每个页面必查) + +以下20个维度是每个管理后台页面的**最低测试覆盖要求**。写任何页面的Playwright测试时,必须逐条确认是否有对应测试用例。如果某个维度不适用于当前页面(如该页面无下拉框),需在测试文件中用注释说明跳过原因。 + +| # | 维度 | 必须断言的内容 | 适用场景 | 禁止做法 | +|---|------|---------------|----------|----------| +| 1 | **页面加载** | URL正确 + 关键元素可见 | 所有页面 | 只goto不等待 | +| 2 | **默认数据** | 页面打开即有数据(表格行数>0 / 卡片有值) | 有数据展示的页面 | 打开页面不检查数据 | +| 3 | **汇总卡片数值** | 每个卡片的数值 ≠ 空 ≠ `-` ≠ `--` ≠ `undefined` ≠ `null` | 有统计卡片的页面 | 只检查卡片可见不检查数值 | +| 4 | **表格行数** | `.el-table__row` 数量 > 0 | 有表格的页面 | 只检查table可见 | +| 5 | **表格每列有值** | 第一行每列文本 ≠ 空(日期、名称、数值、时间、状态等逐列检查) | 有表格的页面 | 只检查前2-3列 | +| 6 | **运行时间/数值列** | 时间列有具体数值(非空非NULL) | 有时间/数值列的页面 | 跳过时间列验证 | +| 7 | **状态标签** | 标签文本为已知中文文案(正常/离线/缺失/告警等) | 有状态列的页面 | 不检查状态文本内容 | +| 8 | **下拉框展开** | 点击展开 → 选项数量 ≥ 1 → 每个选项文本非空非占位 | 有下拉框的页面 | 只检查select可见 | +| 9 | **下拉框选择** | 选择一项 → 输入框显示选中label | 有下拉框的页面 | 选择后不验证显示值 | +| 10 | **筛选生效** | 选择筛选条件 → 点查询 → 表格数据变化 | 有查询功能的页面 | 不验证筛选后数据是否真的变了 | +| 11 | **文本筛选** | 输入关键词 → 点查询 → 结果每行包含关键词 | 有文本搜索框的页面 | 不验证搜索结果匹配度 | +| 12 | **日期筛选** | 切换日期范围 → 查询 → 数据正确变化 | 有日期选择的页面 | 不验证日期筛选效果 | +| 13 | **重置按钮** | 重置后所有筛选恢复默认占位符 | 有重置按钮的页面 | 不验证重置是否清空 | +| 14 | **分页切换** | 切到第2页 → 页码高亮 + 表格第一行数据变化 | 有分页且数据>1页 | 只检查分页组件可见 | +| 15 | **弹窗打开** | 点击触发 → 弹窗可见 + 标题正确 + 表单有初始值 | 有弹窗的页面 | 不验证弹窗标题和内容 | +| 16 | **弹窗提交闭环** | 填写表单 → 提交 → 成功提示 → 列表刷新 → 数据已变更 | 有写操作弹窗的页面 | 只验证弹窗能打开不验证提交 | +| 17 | **API vs 页面对账** | 调API拿JSON → 对比页面卡片/表格显示值是否一致 | 有统计卡片的页面 | 不和API实际值对比 | +| 18 | **下拉框选项值有效性** | 每个选项的文本非空、value可选中 | 有下拉框的页面 | 不验证选项文本内容 | +| 19 | **空数据状态** | 选不可能的条件 → 表格行数为0 + 无"白屏/报错" | 有筛选功能的页面 | 不验证极端情况 | +| 20 | **错误处理** | 异常场景(如网络断开)→ 显示友好提示不白屏 | 所有页面 | 不考虑异常场景 | + +### 5.1 维度适用性速查表 + +不同类型的页面,必须覆盖的维度子集不同。写测试前先确认页面类型: + +| 页面类型 | 必须覆盖的维度编号 | +|----------|-------------------| +| **列表页(带表格+筛选)** | 1,2,4,5,8,9,10,13,14,19 | +| **列表页(带统计卡片)** | 1,2,3,4,5,8,9,10,13,14,17,19 | +| **仪表盘/概览页** | 1,2,3 | +| **详情/表单页** | 1,15,16 | +| **所有页面通用** | 1,20 | + +### 5.3 交互控件测试矩阵 每个页面的每个交互控件,都必须按此矩阵验证: @@ -308,7 +349,7 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium | **弹窗-提交** | 填写并提交 | 返回成功提示,列表刷新 | 不验证提交后的状态 | | **导出** | 点击导出 | 触发下载或显示提示 | 不验证导出行为 | -### 5.2 数据展示验证矩阵 +### 5.4 数据展示验证矩阵 | 展示元素 | 验证标准 | 非法值(不通过) | |----------|----------|------------------| @@ -318,7 +359,7 @@ npx playwright test e2e/smoke-iis.spec.ts --project=chromium | **时间列** | 有值且格式正确(`YYYY-MM-DD` 或 `HH:mm:ss`) | 空值、格式错误 | | **空状态** | 无数据时显示"暂无数据"或类似提示 | 空白页面、报错 | -### 5.3 断言红黑榜 +### 5.5 断言红黑榜 #### ✅ 正确的断言(数据层面) @@ -457,3 +498,6 @@ echo "数量: $($wr.data.items.Count)(应>0)" | 8 | 前端凭假设绑定字段名 | 必须对照API实际返回值 | | 9 | 硬编码配置值(serviceId、端口等) | 从配置文件读取或与实际部署保持一致 | | 10 | 不检查Element Plus组件库的日期/格式要求 | 查阅文档确认格式(如 dayjs 的 `YYYY-MM-DD`) | +| 11 | Playwright测试不按维度表逐项覆盖 | 必须对照5.0节维度总表,每个维度有测试用例或注释跳过原因 | +| 12 | 测试脚本只覆盖部分页面 | 每次改动涉及的页面都必须有测试覆盖 | +| 13 | 新增测试维度后不更新维度总表 | 维度总表是强制标准,任何新发现的问题必须补充为新维度 |