关于 qa-test-planner
面向 QA 自动化工程师的测试规划技能,可从需求生成手动用例、Playwright 测试、回归套件和缺陷报告。它还可选用 Playwright MCP 进行浏览器验证,并提供模板指导测试执行。
主要功能
- 01生成测试计划和手动用例
- 02编写 Playwright 自动化测试
- 03按风险构建回归套件
- 04创建含复现信息的缺陷报告
- 05使用 Playwright MCP 验证界面
适用场景
- 01为登录或结账流程规划测试
- 02从需求设计可追踪的测试用例
- 03用浏览器自动化检查界面元素
- 04按优先级整理回归测试
MCP 相关
可选用 Playwright MCP 执行浏览器验证,例如导航页面并检查界面元素。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ fugazi/ test-automation-skills-agents --skill qa-test-planner安装后在 Claude Code 中输入/qa-test-planner确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSE.txtreferences/bug_report_templates.mdplaywright_automation.mdregression_testing.mdtest_case_templates.mdtemplates/bug-report.mdplaywright-test.mdtest-case.mdtest-plan.md详细介绍
QA 测试规划器
这是一项全面的技能,可帮助 QA 自动化工程师制定测试计划、生成手动测试用例、编写自动化 Playwright 测试、创建回归测试套件、使用浏览器自动化验证 UI,并有效记录缺陷。
激活: 只有在明确按名称调用时才会触发此技能(例如
/qa-test-planner、qa-test-planner或use the skill qa-test-planner)。
快速开始
创建测试计划:
"Create a test plan for the user authentication feature using the test-plan.md template"
生成测试用例:
"Generate manual test cases for the checkout flow using the test-case.md template"
创建自动化 Playwright 测试:
"Create Playwright automated tests for the login flow using the playwright-test.md template"
使用浏览器验证 UI:
"Navigate to the login page and validate all form elements are visible using Playwright MCP"
构建回归测试套件:
"Build a regression test suite for the payment module using test-case.md templates grouped by priority"
创建缺陷报告:
"Create a bug report for the form validation issue using the bug-report.md template"
快速参考
| 任务 | 模板 | 时间 |
|---|---|---|
| 测试计划 | templates/test-plan.md | 10-15 分钟 |
| 测试用例 | templates/test-case.md | 每个 5-10 分钟 |
| 自动化测试 | templates/playwright-test.md | 每个 5-15 分钟 |
| 缺陷报告 | templates/bug-report.md | 5 分钟 |
何时使用此技能
在以下情况下使用此技能:
- 创建或评审测试计划和测试策略
- 根据需求或用户故事生成测试用例
- 编写包含明确复现步骤的缺陷报告
- 根据风险选择构建回归测试套件
- 遵循最佳实践实现 Playwright 自动化
- 记录测试执行和结果
- 开展探索性测试会话
- 使用浏览器自动化验证 UI 元素
前置条件
| 要求 | 说明 |
|---|---|
| Node.js 18+ | Playwright 自动化所必需 |
| Playwright | 使用 npm init playwright@latest 进行自动化 |
| 文本编辑器 | 用于创建和编辑 Markdown 文件 |
| Git | 建议用于测试工件的版本控制 |
| Playwright MCP | 可选,用于基于浏览器的验证 |
工作原理
Your Request
│
▼
┌─────────────────────────────────────────────────────┐
│ 1. ANALYZE │
│ • Parse feature/requirement │
│ • Identify test types needed (manual/automated) │
│ • Determine scope and priorities │
├─────────────────────────────────────────────────────┤
│ 2. SELECT TEMPLATE │
│ • Choose appropriate template from assets/ │
│ • Review template structure and sections │
│ • Identify placeholders to fill │
├─────────────────────────────────────────────────────┤
│ 3. CUSTOMIZE │
│ • Fill in placeholders with project details │
│ • Add specific test steps and scenarios │
│ • Apply Playwright best practices │
├─────────────────────────────────────────────────────┤
│ 4. EXECUTE (with Playwright MCP) │
│ • Navigate and interact with browser │
│ • Capture screenshots and evidence │
│ • Validate UI elements and behavior │
├─────────────────────────────────────────────────────┤
│ 5. VALIDATE │
│ • Check completeness │
│ • Verify traceability │
│ • Ensure actionable steps │
└─────────────────────────────────────────────────────┘
│
▼
QA Deliverable Ready
工作流
1) 创建测试计划
- 使用
templates/test-plan.md作为起点 - 确定测试目标、范围、假设和限制
- 定义测试级别和类型(功能、UI、性能等)
- 指定环境、测试数据、工具和配置需求
- 定义准入/退出标准、交付物和报告频率
- 添加风险矩阵和缓解措施
- 据此确定测试优先级(基于风险的测试)
2) 生成测试用例
- 使用
templates/test-case.md编写单个测试用例 - 将需求转换为测试条件(要测试的内容)
- 选择一种测试设计技术:
- 针对输入使用等价类划分和边界值
- 针对规则组合使用决策表
- 针对生命周期/流程使用状态转换
- 针对端到端流程使用用例/场景测试
- 编写原子性强、明确且可追溯的测试用例
- 添加可观察、可衡量的预期结果
- 添加优先级和风险标签,以支持基于风险的回归测试
- 根据稳定性和价值标准标记适合自动化的候选项
模板:
templates/test-case.md- 单个测试用例
3) 实现自动化测试脚本(Playwright)
- 使用
templates/playwright-test.md作为模板 - 确保测试易于阅读,并与测试用例保持一致
- 优先使用稳定的定位器(例如
getByTestId),避免脆弱的选择器 - 避免随意休眠;依靠 Playwright 的自动等待和显式断言
- 确保测试彼此独立(明确设置前置条件)
- 在测试标题中使用标签(例如
@smoke、@regression)以便运行测试套件 - 调试时捕获用于问题分类的工件(屏幕截图/视频/跟踪记录)
模板: templates/playwright-test.md
4) 构建和维护回归测试套件
- 使用
templates/regression-suite.md定义测试套件 - 定义套件层级:冒烟(关键路径)、基本检查(构建验证)、回归(广泛覆盖)、完整(发布)
- 根据风险 + 频率 + 重要性 + 缺陷历史选择测试
- 统一标记测试,并记录选择规则
- 定期审核测试套件:移除过时的覆盖项,增加对已逃逸缺陷的覆盖
模板: 按优先级分组使用单个 test-case.md 模板
5) 创建 Bug 报告
- 以
templates/bug-report.md为起点 - 确保能够稳定复现,并简化为最少步骤
- 记录变化情况(频率)和影响范围
- 记录环境详情(构建版本/应用版本、操作系统、浏览器/设备、账户/角色)
- 描述预期行为与实际行为
- 说明影响,并统一设置严重性和优先级
- 附上证据(屏幕截图、控制台日志、网络跟踪记录、Playwright 跟踪记录)
- 跟踪生命周期:分诊记录、负责人、修复版本、验证步骤
安全指南
凭据处理
绝不要在测试用例或代码中嵌入真实凭据。 请改用占位符:
| 不要使用 | 改用 |
|---|---|
[email protected] / Test123! | ${TEST_USER_EMAIL} 或 process.env.TEST_USER_EMAIL |
password: "actualpassword" | password: "${TEST_PASSWORD}"(来自环境变量) |
| 硬编码的密钥 | 通过 .env 文件设置的环境变量 |
测试数据最佳实践:
- 使用通过 API 或管理面板配置的测试账户
- 将凭据存储在环境变量中
- 使用 Faker.js 或类似工具生成测试数据
- 绝不要将真实凭据提交到版本控制系统
URL 导航安全
使用 Playwright MCP 验证外部/不可信 URL 时:
- 导航前确认 URL 属于受信任的域名
- 避免执行来自不可信来源的任意 JavaScript
- 测试第三方应用时使用沙盒环境
- 未经验证,切勿导航到不可信用户输入提供的 URL
输入清理
所有用户输入都应:
- 验证是否符合预期格式
- 在用于生成代码时进行转义
- 绝不要直接传递给
eval()或 shell 执行
反模式
| 避免 | 原因 | 改用 |
|---|---|---|
| 测试步骤含糊 | 无法复现 | 具体操作 + 预期结果 |
| 缺少前置条件 | 测试会意外失败 | 记录所有设置要求 |
| 没有测试数据 | 测试人员无法继续 | 提供示例数据或数据生成方式 |
| Bug 标题过于笼统 | 难以跟踪 | 具体描述:“[功能] 在 [操作] 时出现问题” |
| 跳过边界情况 | 会漏掉关键 Bug | 包含边界值、null 值 |
| 嵌入凭据 | 存在安全风险 | 使用环境变量 |
验证清单
测试计划:
- 明确定义范围(包含/不包含)
- 明确指定进入/退出标准
- 识别风险并制定缓解措施
- 时间安排切实可行
测试用例:
- 每个步骤都有预期结果
- 记录前置条件
- 测试数据使用占位符(不硬编码凭据)
- 指定优先级
自动化测试:
- 使用基于角色的定位器
- 实现 Web 优先断言
- 应用页面对象模型
- 使用 test.step() 分组以提高可读性
- 处理错误并截取屏幕截图
- 从环境变量加载凭据
Bug 报告:
- 提供可复现的步骤
- 记录环境信息
- 附上屏幕截图/证据
- 设置严重性/优先级
模板
可用模板
| 模板 | 用途 | 格式 |
|---|---|---|
test-plan.md | 符合 ISTQB 标准的测试计划结构 | Markdown |
test-case.md | 包含完整章节的单个测试用例 | Markdown |
bug-report.md | 详细的缺陷报告 | Markdown |
playwright-test.md | 遵循最佳实践的 Playwright 测试模板 | Markdown |
模板用法
所有模板都位于 templates/ 中。使用方法如下:
- 将模板复制到项目目录
- 填写占位符(以
[brackets]或${VARIABLE}标记) - 根据具体需求自定义章节
- 视情况删除或添加章节
- 保存并进行版本控制,完成文档
参考资料
references/test_case_templates.md- 所有测试类型的标准格式references/bug_report_templates.md- 文档模板references/regression_testing.md- 测试套件的构建与执行references/playwright_automation.md- 浏览器自动化与测试生成
示例
示例:使用测试用例模板
请求:
"Create a test case for user login with valid credentials using the test-case.md template"
结果: AI 将:
- 打开
templates/test-case.md - 用具体信息填写占位符:
- TC-ID:
TC-LOGIN-001 - 标题:
验证使用正确凭据登录的有效用户 - 优先级:
P0 (Critical) - 类型:
Functional - 目标:
验证用户能否使用有效凭据成功登录 - 前提条件:
测试环境中存在用户账户;已清除浏览器 Cookie - 测试步骤:填写具体的登录步骤
- 测试数据:使用
${TEST_USER_EMAIL}和${TEST_USER_PASSWORD}占位符
- TC-ID:
- 提供填写完成的测试用例 Markdown 文件
示例:使用错误报告模板
请求:
"Create a bug report for a login form validation issue using the bug-report.md template"
结果: AI 将:
- 打开
templates/bug-report.md - 生成唯一的错误 ID(例如,
BUG-1715345678) - 填写占位符:
- 标题:
登录表单接受无效的电子邮件格式 - 严重程度:
High - 优先级:
P1 - 环境:填写实际的操作系统、浏览器和构建信息
- 重现步骤:添加具体且可复现的步骤
- 预期结果与实际结果:清晰描述问题
- 影响:描述对用户和业务的影响
- 标题:
- 提供填写完成的错误报告 Markdown 文件
示例:使用 Playwright 规范模板
请求:
"Create Playwright tests for the login flow using the playwright-test.md template"
结果: AI 将:
- 打开
templates/playwright-test.md - 根据登录功能自定义测试 describe 块
- 添加具体测试用例:
TC-LOGIN-001 @smoke @regression- 有效登录TC-LOGIN-002 @regression @negative- 无效凭据TC-LOGIN-003 @regression @boundary- 密码验证
- 使用 Playwright 最佳实践实现测试步骤:
- 基于角色的定位器(
getByRole) - Web 优先断言(
toBeVisible、toHaveText) - 使用 test.step() 分组,提高可读性
- 基于角色的定位器(
- 添加有关环境变量的安全说明
- 提供填写完成的 Markdown 模板,其中包含 TypeScript 代码示例
最佳实践(避免上述反模式)
编写测试用例
- 描述具体且明确;为每个步骤注明预期结果
- 每个用例只测试一件事;记录所有前提条件和测试数据
- 纳入边界情况和边界值;使用一致的命名方式
报告错误
- 提供精简、准确的重现步骤;注明环境详情
- 附上截图或视频,并描述对用户和业务的影响
- 设置严重程度和优先级;使用清晰、具体的标题以避免重复报告
回归测试
- 将重复测试自动化;优先覆盖关键路径
- 经常运行冒烟测试;定期审查并精简测试套件
- 使用一致的标签;绝不忽略失败的回归测试
安全
- 使用环境变量存储凭据;绝不提交机密信息
- 导航前验证 URL;报告可疑内容
- 绝不执行来自用户输入的任意 JavaScript
质量门禁(自检)
- 测试计划包含范围、方法、风险、环境、进入/退出标准、交付物和指标
- 测试用例可追溯、原子化、确定性强,并包含明确的判定依据和数据
- 自动化易于维护(稳定的定位器、尽量减少不稳定测试、测试相互独立、断言清晰)
- 回归测试基于风险、带有标签,并经过筛选,且有明确的增删规则
- 错误报告可复现、可执行,并包含证据、环境和影响
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 测试用例缺乏可追溯性 | 缺少需求 ID | 添加 requirement_id 列;关联用户故事/AC |
| Bug 报告被拒绝 | 复现步骤不足 | 使用最少步骤;提供准确的数据和环境 |
| 回归测试套件耗时过长 | 测试过多,未进行优先级排序 | 采用基于风险的筛选;分为冒烟、健全性和完整测试 |
| 自动化测试不稳定 | 定位器或时序不稳定 | 使用 data-testid;避免使用固定等待;使用 Playwright 自动等待 |
| 测试估算不准确 | 范围蔓延、遗漏风险 | 增加预留时间;范围变更时重新估算 |
常见借口
常见的捷径和“差不多就行”的借口会降低测试质量——以下是每种说法背后的实际情况。
| 借口 | 实际情况 |
|---|---|
| “测试计划只是文档形式主义” | 良好的测试计划能在测试开始前防止范围蔓延、场景遗漏和预期不一致。 |
| “我们可以边做边设计测试用例” | 临时测试会留下漏洞。结构化测试用例能确保系统化覆盖和可追溯性。 |
| “Bug 报告可以随意一点” | 包含准确步骤、可复现的 Bug 报告能节省测试人员和开发人员之间反复沟通的数小时。 |
| “估算只是猜测” | 测试估算技术(功能点分析、Delphi 方法)能提高准确性和可信度。 |
| “回归测试套件会自行维护” | 不加整理,测试套件就会变得臃肿且缓慢。定期审查和精简是必不可少的。 |
| “模板会拖慢我们的进度” | 模板能确保不会遗漏任何事项,并使团队的质量标准保持一致。 |
“测试显示的是缺陷的存在,而非缺陷的不存在。”——Edsger Dijkstra
“品质不是一时之举,而是一种习惯。”——Aristotle
验证
完成此技能的工作流后,请确认:
- 已创建测试策略文档 — 涵盖范围、方法、资源、时间安排和风险
- 已定义测试级别 — 定义单元、集成、E2E 和验收级别及其标准
- 已记录进入/退出标准 — 明确测试开始和结束的条件
- 已按风险确定优先级 — 根据影响 x 可能性对测试进行优先级排序
- 已列出环境要求 — 硬件、软件、数据和网络要求
- 已定义缺陷管理流程 — 说明如何报告、跟踪和解决 Bug
- 已获利益相关方签字确认 — 测试计划已由相关利益相关方审查并批准