AI辅助QA工作流

一个使用AI技术辅助QA工程师进行测试计划生成、自动化测试代码生成和测试执行的工具,旨在提高测试效率并减少手动测试负担。

  • by NewLara
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 NewLara/ai-qa-workflow

使用说明

使用Claude Code的AI辅助QA工作流程

许多QA工程师陷入了手动测试的循环,几乎没有留下什么 是时候培养自动化技能了。本项目探讨了人工智能如何辅助工具 可以处理手动测试的执行负担,使QA工程师能够 向左移动,投资自动化,专注于更高价值的工作。

  • 一个展示人工智能辅助的项目 plan -> generate -> run QA工作流程 作为Claude Code的子代理和技能而构建。
  • 规划者子代理探索实时应用程序并编写结构化的测试计划, 生成器子代理将该计划转换为剧作家页面对象 specs,runner子代理执行套件并报告结果——每个 用斜线命令调用的stage。

旨在展示实用的QA自动化技能,包括代理设计, 测试计划和AI辅助测试执行。


这个项目是如何建造的

克劳德担任战略层 --架构决策、代理和 技能设计、模式评估和方法验证。

Claude Code的子代理充当执行层 --探索应用程序, 编写Playwright代码并运行测试,每一项都限定在一个范围内 责任。

人类策划了这两件事 --决定构建什么,何时构建, 以及输出是否可接受。

这种三方协作——人类+战略人工智能+执行人工智能——是人工智能辅助工程中一种有意的工作方式。


这个项目展示了什么

  • 使用Claude Code子代理驱动真正的浏览器(通过 claude-in-chrome MCP工具)用于探索性测试规划
  • 设计组成管道的单一责任子代理和技能
  • 从实时应用探索中生成结构化测试计划
  • 使用页面对象模型和夹具将测试计划转换为Playwright自动化测试
  • 纯粹在Playwright中实现的具有安全意识的测试设计(会话/cookie检查、输入验证、未经身份验证的路由检查)
  • 与共享身份验证会话 auth.setup.ts 和 storageState
  • 可重用、可审计的管道工件——每个计划和运行都会得到一个已提交的降价报告
  • 通过REST API与测试管理工具集成

工程决策

这些是我做出的人工智能没有建议的决定:

  • .env 获取凭据 --AI默认为硬编码值。使用 .env 是基于现实世界安全实践的深思熟虑的选择。
  • 文件夹结构 --the pages/, fixtures/, ai-testing/, .claude/ 架构是由工程师设计的,而不是生成的。
  • 带夹具的页面对象模型 --被确定为失踪 AI生成了规范。我指导了实施。
  • 共享身份验证会话 --将登录重复识别为模式问题 并指导 auth.setup.ts + storageState 实施。
  • 子代理和技能作为承诺的工件 --版本控制决策 代理/技能定义,使工作流可重复和可审计。
  • 每个功能单独的页面对象 --导演 EmployeeListPage 作为 分离类而不是合并到 AddEmployeePage.
  • 按测试类别划分覆盖率 --指示发电机进行生产 每个功能单独的E2E/安全/集成规范文件,而不是一个 未分化的斑点。
  • 所有提交和提交消息 --版本控制决策、检查点 时间和变化描述始终是人类的选择。

技术栈

工具 目的
剧作家 浏览器自动化和测试运行器
TypeScript 测试编写语言
Claude Code 子代理+计划、生成和运行测试的技能
claude-in-chrome MCP 用于规划者/生成器实时应用探索的浏览器驱动
Claude(Claude.ai) 战略人工智能层——架构和代理/技能设计
OrangeHRM演示 测试中的应用程序
GitHub操作 CI/CD(计划中)

项目结构

ai-qa-workflow/
├── .claude/
│   ├── agents/                         # Claude Code subagent definitions
│   │   ├── qa-planner.md               # Explores the app, writes a test plan
│   │   ├── qa-generator.md             # Plan -> Playwright code
│   │   └── qa-runner.md                # Runs tests, writes a run report
│   └── skills/                         # Slash-command entry points
│       ├── qa-plan/SKILL.md            # /qa-plan <feature>
│       ├── qa-generate/SKILL.md        # /qa-generate <feature-slug>
│       ├── qa-run/SKILL.md             # /qa-run <feature-slug|all>
│       └── qa-feature/SKILL.md         # /qa-feature <feature> (full chain)
├── ai-testing/
│   ├── test-plans/                     # Planner output — one file per feature
│   └── test-runs/                      # Runner output — one file per run
├── pages/                              # Page Object Model classes
│   ├── AddEmployeePage.ts
│   └── EmployeeListPage.ts
├── fixtures/                           # Custom Playwright fixtures
│   └── baseTest.ts
├── playwright/                         # Playwright-specific artifacts
│   └── .auth/                          # Auth session storage (gitignored)
│       └── user.json                   # Session state — never committed
├── tests/                              # Playwright spec files
│   ├── auth.setup.ts                   # Shared auth session setup
│   └── add-employee/
│       ├── add-employee.e2e.spec.ts
│       ├── add-employee.security.spec.ts
│       └── add-employee.integration.spec.ts
├── playwright.config.ts
├── tsconfig.json
└── .envExample                         # Environment variable template

工作流是如何工作的

1.计划-- qa-planner

/qa-plan <feature> 调用 qa-planner 子代理。它登录直播 应用程序通过 claude-in-chrome,探索目标特征,并编写 结构化测试计划 ai-testing/test-plans/[feature-slug]-plan.md — 场景分为E2E、安全和集成类别,每个类别都有 ID、先决条件、步骤和预期结果。它不写代码。

2.生成-- qa-generator

/qa-generate <feature-slug> 调用 qa-generator 子代理。上面写着 计划、重用或创建功能的页面对象,注册夹具 在 fixtures/baseTest.ts,并为中存在的每个类别写入一个规范文件 计划下 tests/[feature-slug]/.它跑 npx tsc --noEmit 抓住 在切换之前键入错误,但不会执行套件。

3.跑步-- qa-runner

/qa-run <feature-slug|all> 调用 qa-runner 子代理。它在运行 npx playwright test,解析通过/失败/不稳定的结果,并写入运行 向...汇报 ai-testing/test-runs/YYYY-MM-DD_[feature-slug]-run.md.

全链条-- qa-feature

/qa-feature <feature> 背靠背跑完所有三个赛段 功能,暂停以显示每个阶段的输出。

认证

tests/auth.setup.ts 每次测试运行使用来自的凭据登录一次 .env, 将会话保存到 playwright/.auth/user.json,并且所有测试都重用它。 身份验证文件是gitignored的——它包含重新生成的实时会话Cookie 每次跑步。生成的规范从不添加自己的登录步骤。


入门指南

先决条件

  • Node.js 18+
  • 克劳德代码与 claude-in-chrome MCP工具可用
  • OrangeHRM演示证书(公开--请参阅 .envExample)

设置

git clone https://github.com/NewLara/ai-qa-workflow.git
cd ai-qa-workflow
npm install
npx playwright install chromium
cp .envExample .env
# Edit .env with your credentials

运行管道

来自此仓库中的Claude Code会话:

/qa-plan Add Employee
/qa-generate add-employee
/qa-run add-employee

或者在一个命令中运行整个链:

/qa-feature Add Employee

直接运行自动化测试

# Run all tests
npx playwright test

# Run all specs for one feature
npx playwright test tests/add-employee/

# Run a specific spec
npx playwright test tests/add-employee/add-employee.e2e.spec.ts

# Run with browser visible
npx playwright test --headed

# Run in debug mode
npx playwright test --debug

# Run in UI mode
npx playwright test --ui

在被测应用程序

Orange人力资源管理 --开源人力资源管理系统 网址: https://opensource-demo.orangehrmlive.com 资格证书: 看 .envExample

因其现实的企业工作流程而选择——员工管理、休假 请求、用户角色——反映真实世界的QA场景。不是玩具应用程序。


QA管道参考

技能 子代理 输出
/qa-plan <feature> qa-planner ai-testing/test-plans/[feature-slug]-plan.md
/qa-generate <feature-slug> qa-generator pages/, fixtures/baseTest.ts, tests/[feature-slug]/*.spec.ts
/qa-run <feature-slug|all> qa-runner ai-testing/test-runs/YYYY-MM-DD_[feature-slug]-run.md
/qa-feature <feature> 所有三个,都被锁住了

作者

Lara Caves——QA自动化工程师 GitHub · 领英