Agentic Test Engineer — 代理测试工程师
v1.0.0基于AI的自动化测试生成和自愈测试维护。生成单元/集成/端到端测试,检测不稳定测试,自动修复破损选择器,并维护测试覆盖率。面向QA工程师和开发人员。关键词:AI测试自动化,自愈测试,自治QA,测试生成,Playwright,Selenium,CI/CD测试,不稳定测试检测,视觉AI测试,测试覆盖率,AI原生QA。
运行时依赖
安装命令
点击复制技能文档
Agentic 测试工程师概述 一个使用 AI 的自动化测试助手,革新了 QA 工作流程。它从用户故事和代码中生成全面的测试套件,使用视觉 AI 自动修复破损的选择器,检测和诊断不稳定的测试,并持续维护测试覆盖率指标 —— 所有这些都需要最少的人工干预。 触发器: “为 [功能/代码] 生成测试” “为 [函数] 编写单元测试” “自愈我的破损测试” “在 [项目] 中查找不稳定的测试” “检查 [模块] 的测试覆盖率” “为 [工作流程] 运行 E2E 测试” “为什么我的测试失败” “智能测试生成” “自愈测试修复” “测试覆盖率分析”
工作流程 步骤 1:检测上下文 识别测试场景: 单元测试:Python、JavaScript、TypeScript、Java、Go 函数 集成测试:API 端点、数据库交互、服务网格 E2E 测试:浏览器工作流(Playwright、Cypress、Selenium) API 测试:REST/GraphQL 端点、契约测试 不稳定测试诊断:测试结果历史、计时问题、异步竞争条件 自愈:破损选择器、更改的 DOM、移动的 UI 元素
步骤 2:测试生成 对于测试生成: 分析代码结构、用户故事或 API 规范 选择适当的测试框架: Python:pytest、unittest JavaScript/TypeScript:Jest、Vitest、Playwright、Cypress Java:JUnit、TestNG Go:testing 包、testify 生成全面的测试用例: 快乐路径场景 边界条件和边缘情况 错误处理场景 负面测试用例 包括设置/拆卸固定装置 添加数据驱动测试参数
步骤 3:自愈(当触发时) 当测试由于 UI 更改而破损时: 捕获失败的选择器/错误消息 使用视觉 AI 识别新的元素位置 使用多种策略生成更新的选择器: 文本内容匹配 语义角色/标签 视觉接近稳定的元素 Shadow DOM 遍历 验证修复在相关测试中的有效性 记录修复操作以备审计跟踪
步骤 4:不稳定测试检测 从 CI/CD 收集测试执行历史 分析失败模式: 计时问题(竞争条件、异步等待) 资源竞争(DB 连接、文件锁) 环境不稳定 测试相互依赖 生成诊断报告,包括: 不稳定性概率 根本原因分析 推荐修复(添加显式等待、模拟外部调用等)
步骤 5:覆盖率分析 解析代码和现有测试文件 计算行/分支/函数覆盖率 识别未测试的代码路径 建议优先测试用例以覆盖未覆盖的区域 生成覆盖率趋势报告
输入/输出示例 示例 1:生成单元测试 输入:为此 Python 函数生成单元测试: def calculate_premium(age: int, health_score: float, coverage_amount: float) -> float: if age < 18 or age > 70: raise ValueError("Age must be between 18 and 70") base_rate = coverage_amount 0.05 health_factor = 1.0 - (health_score / 100) 0.3 return base_rate * health_factor 输出: import pytest from your_module import calculate_premium class TestCalculatePremium: def test_happy_path(self): result = calculate_premium(age=30, health_score=80, coverage_amount=100000) assert 3000 <= result <= 5000
示例 2:自愈破损的 Playwright 测试 输入:我的 Playwright 测试失败:选择器 ".submit-button" 未找到。按钮文本现在是 "提交保单"。 输出: 🔧 自愈分析:
- 原始选择器:".submit-button"
- 问题:UI 更新,元素选择器更改
- 自愈选择器策略:文本内容匹配
- await page.getByRole('button', { name: '提交保单' }).click()
- await page.locator('button[type="submit"]').click()
- await page.getByText('提交保单').click()
- 使用语义角色绑定(可以在 CSS 类更改时生存)
- 语言感知(可以与 i18n 更新一起工作)
示例 3:不稳定测试诊断 ...(省略)