测试工程师 · 角色指南¶
假设你已读过
docs/00_overview/与docs/01_onboarding/。
你的工具箱¶
| 工具 | 用途 |
|---|---|
| PingCode CZTST | 用例 / 缺陷 |
| Postman / Knife4j | 接口手工测试 |
| Playwright(AI 回归引擎) | UI 自动化 |
| 本仓库 czerp-qa | 计划 / 用例 / 回归 / 缺陷四件套 |
| PingCode MCP + Gitee MCP | 拉故事 / 看 PR diff |
本角色推荐方法 / 工具:Playwright Test Agents(planner / generator / healer)做 AI 回归(已落在
ai-driven-regression);用例设计走「验收标准 → 用例 ×(主流程 + 边界 + 异常 + 权限)」。
高价值工作流(触发 → AI 做什么 → 人怎么验)¶
| # | 触发 | AI 做什么 | 人怎么验 |
|---|---|---|---|
| 验收标准→用例 | 故事就绪 | 读 验收标准 + 代码转功能/回归/探索用例,补边界与异常 | 每 验收标准 ≥1 用例,含 1 边界 + 1 异常,上 CZTST |
| Planner | 新功能可测 | Playwright 探索应用产 markdown 测试计划 | 审计划是否覆盖 验收标准、漏关键路径否(关键闸 1) |
| Generator | 计划通过 | 把计划转 Playwright 脚本,边执行边校验 selector | 检查 selector 与测试逻辑(关键闸 2) |
| Healer | 回归失败 | 自愈 locator/等待/数据;判真 bug 则 skip 报告 | 区分"用例漂移"vs"真缺陷",别把真 bug 治没 |
| API/接口测试 | 接口联调 | 用 Playwright request 验 R<T> 包络与状态码 |
核对契约 + 多租户/币种数据组合 |
| 测试数据 | 造数据 | test-data-prep 列覆盖组合 + 产造数脚本(dev/test) |
确认边界覆盖,用完清理 |
| 缺陷三角化 | 失败 / 反馈 | 转结构化缺陷 + 去重 | 证据齐 + 先搜后提 |
新增 skill:test-data-prep(多租户/币种/语言/边界数据)。
一天典型流程¶
计划会后:
- 跑 testplan-author 起 Sprint 测试计划 → 上 PingCode CZTST
平时:
- 按计划逐故事起用例 (testcase-author)
- 用例上传 CZTST,标记可自动化的部分
开发交付:
- 在 dev / test 环境手工跑核心用例
- 跑 ai-driven-regression 自动回归
- 失败 → defect-submission → 自动到 CZTST 缺陷库
Sprint Review 前:
- 出测试报告(通过率 / 失败率 / 缺陷统计)
- 决定准出
必读 skills¶
铁律¶
- 每条故事必有测试计划;计划在计划会后 24h 内挂 PingCode。
- 每条 验收标准 ≥ 1 条用例;用例至少含 1 条边界 + 1 条异常。
- 缺陷必有证据(截图 / 日志 / 控制台错误 / curl 重现)。
- AI 回归在 PR 合并后自动跑 — 不要让 P0/P1 用例只靠手工。
- 不要重复提缺陷 — 先搜全文。
与各角色协作¶
- 与 PM:审故事完整性(验收标准 / 原型 / 风险)。
- 与 Dev:交付时必须附 dev 环境验证证据;不接受口头 "好了"。
- 与 Ops:紧急缺陷需要回滚时立即同步。
常见错误¶
- ❌ 用例不可独立准备(依赖另一条用例先跑过)
- ❌ 一个用例覆盖多条 验收标准(失败时不知道哪条 验收标准 挂了)
- ❌ 缺陷标"严重程度 Blocker + 优先级 P3"自相矛盾
- ❌ 重复提缺陷(同一现象提了 3 个)
- ❌ AI 回归 flaky 直接 retry 掩盖不调查根因
数据与环境¶
- E2E 引擎:Playwright Test Agents(初始化后 specs 在 czerp-console
tests/e2e/,浏览器版本由该仓库锁定)。czerp-console 目前尚未落地 Playwright,初始化步骤见docs/03_workflows/04_ai-testing.md。 - 测试数据 SQL:初始化后随 czerp-console
tests/e2e/prep/。 - test 环境入口/账号:
E2E_BASE_URL/E2E_USER/E2E_PWD,由 CI secret 注入;本地从config/environments.md取,不进 spec。