定位断言
Day 10 - Weekly Review 2: Writing Stable Tests
今日目标
- 整合 Locator、Assertion、Auto-waiting。
- 建立稳定测试的基本标准。
学习时间安排(60–120 分钟)
| 时间 | 模块 | 做什么 |
|---|---|---|
| 0-20 分钟 | 本周概念回顾 | 过一遍概念表,标出还不熟练的 locator 和断言。 |
| 20-45 分钟 | 实践任务 | 写 3 条稳定测试:正向、异常、边界。 |
| 45-75 分钟 | 连续运行验证 | 每条测试连跑 5 次,处理暴露的 flaky 点。 |
| 75-105 分钟 | 自查与修复 | 对照自查清单逐项检查并修复。 |
| 105-120 分钟 | 复盘与作业 | 完成复盘问题,让 AI 审查 flaky 风险。 |
本周概念回顾
| English | 中文 | 是否已掌握 |
|---|---|---|
| getByRole / getByLabel | 语义化定位 | |
| getByTestId | 测试 ID 定位 | |
| filter / has / hasText | 过滤与链式定位 | |
| nth / first / last | 序号定位 | |
| toBeVisible / toContainText | 常用断言 | |
| toHaveCount / toHaveURL | 数量与 URL 断言 | |
| web-first assertion | 自动重试断言 | |
| auto-waiting | 自动等待 | |
| actionability | 可操作性检查 | |
| waitForURL / waitForTimeout | 显式等待 |
实践任务
选择一个业务流程,写 3 条稳定测试:
- 正向流程。
- 异常流程。
- 边界流程。
要求:
- 不使用硬等待。
- 不使用长 XPath。
- 每条测试有明确断言。
- locator 尽量语义化。
- 失败时能看出业务原因。
自查清单
- [ ] 是否使用 getByRole/getByLabel/getByText 等推荐 locator
- [ ] 是否避免硬等待
- [ ] 是否每个测试都有明确业务断言
- [ ] 是否每个测试相互独立
- [ ] 是否失败后容易定位原因
今日产出
tests/stable-flow.spec.ts
以及一份自查清单。
复盘问题
- 你写的测试是否能重复运行 5 次都通过?
- 哪些 locator 最稳定?
- 哪些断言最能体现业务价值?
- 当前测试还有哪些 flaky 风险?
- 如果页面文案变化,哪些测试会受影响?
AI 时代扩展:让 AI 审查 flaky 风险
适用场景
把 stable-flow.spec.ts 交给 AI 做 flaky 风险审查:等待、依赖、数据、环境四类风险逐项排查。AI 的猜测需要你用“连跑 5 次”的结果验证。
可复用表达 / 提示词
请从以下 4 个角度审查我的测试的 flaky 风险:等待策略、测试间依赖、数据准备、环境假设。每个风险给出触发条件和修复建议。
追问加练
- AI 列出的风险里,哪条你已经通过连跑 5 次排除了?
- “测试相互独立”具体指什么?你的 3 条测试真的独立吗?
- 如果页面文案变化,AI 能帮你做什么?
今日作业
- 每条测试连跑 5 次并记录结果(
--repeat-each=5)。 - 完成自查清单,全部打勾才算完成。
- 让 AI 审查 flaky 风险,对每条意见给出“采纳/不采纳+理由”。