☰
别再手动提 Bug 了:测试工程师用 3 个 Skill 打造 AI 提单 Agent,附完整 SOP 与目录结构
2026/10/14 16:55:26 网站建设 项目流程

摘要

别再瞎用 AI 测试工具了。真正能落地的,不是让大模型“随便帮我看个 Bug”,而是把提 Bug、验 Bug、出报告这三件最耗时的重复劳动,封装成 AI 能稳定执行的 Skill。

本文先把 AI Agent 拆成两件事:

  • MCP Server = AI 的手脚:负责调接口、操作工具、对接缺陷平台、OCR、浏览器自动化。
  • Skill = AI 的脑子 + SOP 手册:负责定规则、排流程、控输出、约束边界。

然后重点拆解 3 个测试三件套 Skill:

  1. bug-report-writer:自动提 Bug 单,支持两步提交、附件上传、PII 脱敏;
  2. bug-fix-verifier:批量验证缺陷修复状态,支持四分类判定;
  3. test-report-generator:自动生成测试报告,上线结论由门禁规则算出来,不是 AI 拍脑袋。

文末会给出 Skill 目录结构、开发流程、最佳实践和上线自查清单。MCP 封装、Stdio/HTTP 方案、5 大核心工具对接自研缺陷平台,会放到系列第二篇单独讲。

一、先搞清楚:Skill 和 MCP 到底是什么关系?

很多测试同学做 AI Agent 时,最容易犯的错误是:把所有逻辑都塞给大模型。

结果就是:

  • 模型有时候会脑补;
  • 有时候会把本地路径写进 Bug 描述;
  • 有时候会跳过复现步骤;
  • 有时候还会把手机号、Token 直接提交到缺陷平台。

所以一定要先拆清楚:

组件

角色

负责什么

MCP Server

AI 的手脚

调接口、上传附件、查缺陷、跑用例、调 OCR

Skill

AI 的脑子 + SOP

规定怎么判断、怎么输出、什么能做、什么不能做

一句总结:

手脚负责执行,脑子负责指挥。

Skill 的价值不是“让 AI 更聪明”,而是把测试经验变成可复用的规则。比如:提 Bug 前必须先解析证据、根因只能是推测、敏感信息必须脱敏、提交前必须 dry-run。这些都不是模型天然会的,必须写进 Skill。

二、测试三件套 Skill 1:bug-report-writer

核心指令解析

这个 Skill 的目标很简单:把日志、截图、复现步骤、接口响应等证据,整理成一条合格的 Bug 单。

但它必须遵守三条铁律:

  1. 先解析证据,再下结论。
    不能看到报错就说是后端问题,也不能看到空指针就直接定“代码缺陷”。
  2. 根因只能是推测,不能写成定论。
    除非有明确日志、堆栈、接口返回证据,否则根因字段必须写“疑似”。
  3. 提交前必须 dry-run。
    真正调用缺陷平台接口前,先输出一次预览,让测试或 AI 确认字段、优先级、附件、描述是否合理。

最值钱的设计:两步提交

很多 AI 提单工具最容易翻车的地方就是附件。

常见错误写法是:

附件路径:/Users/xxx/Desktop/bug.png

但缺陷平台拿不到你本地文件。正确做法是两步提交:

  1. 第一步:先建单,拿到 issue key。
  2. 第二步:再用 multipart 上传截图附件,并绑定到该 issue key。

这样既避免了“附件上传失败导致整单失败”,也避免了把本地路径写进 Bug 描述。

PII 自动脱敏

提 Bug 时经常会出现手机号、身份证、Token、Cookie、内部域名、账号 ID 等敏感信息。

Skill 必须规定:

  • 手机号脱敏为138****8888;
  • Token/Cookie 替换为<TOKEN>;
  • 身份证、邮箱、内部账号按需脱敏;
  • 待脱敏附件禁止直接上传,必须先提示人工确认。

这一步非常关键。测试平台一旦把真实 Token 或用户数据写进缺陷系统,就不是提效问题,而是安全问题。

效果对比

没有 Skill 时:

Bug:登录失败
描述:用户说登不上,帮我看下
优先级:高
附件:无

有 Skill 后:

Bug:登录页输入正确账号密码后提示“系统异常”,未返回具体错误码
环境:测试环境 / iOS 17.2 / App 3.8.1
复现步骤:

目录结构

skills/bug-report-writer/ ├── SKILL.md ├── references/ │ ├── bug_template.md │ ├── priority_rules.md │ └── pii_rules.md ├── templates/ │ ├── bug_report.md │ └── bug_report_json.json └── scripts/ ├── dry_run.py ├── upload_attachment.py └── submit_bug.py
  • SKILL.md:定义角色、输入、输出、边界、工作流。
  • references/:知识库,包括 Bug 模板、优先级规则、脱敏规则。
  • templates/:输出模板,保证每次生成格式一致。
  • scripts/:执行脚本,负责 dry-run、上传附件、提交缺陷。

三、测试三件套 Skill 2:bug-fix-verifier

核心指令解析

这个 Skill 用来做缺陷修复后的批量验证。

输入通常包括:

  • 待验证缺陷列表;
  • 缺陷原描述;
  • 原复现步骤;
  • 最新构建版本;
  • 自动化用例执行结果;
  • 日志或截图证据。

输出不是简单一句“已修复”,而是结构化结果。

反直觉设计:四分类判定

很多人做缺陷验证时,只分“已修复 / 未修复”。但这在真实测试场景里远远不够。

这个 Skill 采用四分类:

分类

含义

处理建议

fixed

已修复

关闭缺陷或转回归

not_fixed

未修复

打回开发,附最新证据

intermittent

偶现

强制多跑 5 次,记录复现率

env_issue

环境问题

优先判定,避免误伤研发

其中env_issue 必须优先判定。

因为很多“看起来没修复”的问题,其实是测试环境数据脏、服务未重启、配置未生效、依赖服务异常、Mock 未更新导致的。如果不先判断环境,很容易把环境问题当成开发未修复,造成无效返工。

两个关键机制

1. 环境问题优先判定

只要出现以下信号,就优先标记为env_issue:

  • 依赖服务不可用;
  • 配置中心未生效;
  • 数据库/缓存数据异常;
  • 账号权限缺失;
  • 构建版本未更新;
  • 自动化用例在本地可过、环境必挂。

2. 偶现问题强制多跑 5 次

如果某缺陷在验证过程中出现“有时成功、有时失败”,不能直接判 fixed,也不能直接判 not_fixed。

必须:

  • 标记为intermittent;
  • 强制重复执行至少 5 次;
  • 记录成功次数、失败次数、失败特征;
  • 输出复现率。

例如:

重复执行 5 次,成功 3 次,失败 2 次,复现率 40%。失败时接口返回 timeout,疑似并发场景下锁竞争导致。

输出契约

这个 Skill 的输出会被下游报告消费,所以必须定义稳定 JSON 契约。

示例:

{ "bug_id": "BUG-20261012-003", "status": "not_fixed", "confidence": 0.92, "evidence": [ "api_response_500.json", "verify_step3_fail.png" ], "repeat_count": 1, "intermittent_rate": null, "env_issue_reason": null, "suggestion": "打回开发,补充服务端异常堆栈" }

这样后续生成测试报告时,就可以直接统计:

  • 已修复多少;
  • 未修复多少;
  • 偶现多少;
  • 环境问题多少;
  • 哪些缺陷必须拦截上线。

四、测试三件套 Skill 3:test-report-generator

核心指令解析

这个 Skill 负责把缺陷数据、用例执行数据、环境信息、版本信息汇总成一份测试报告。

但它最狠的设计不是“会写报告”,而是:

“建议上线”不是 AI 拍脑袋,而是门禁规则算出来的。

AI 只负责汇总、解释、表达;是否上线,必须由规则决定。

上线门禁规则

示例规则可以这样设计:

  1. 用例通过率 ≥ 95%:建议上线;
  2. 用例通过率 ≥ 90% 且无 P0/P1 遗留缺陷:可评审后上线;
  3. 存在 P0 缺陷未关闭:禁止上线;
  4. 存在 P1 缺陷且无临时规避方案:禁止上线;
  5. blocked 用例不计入分母,skipped 用例也不计入分母;
  6. 偶现缺陷必须标注复现率,不能直接忽略。

这里有一个很关键但容易被忽略的口径:

通过率分母应剔除 skipped,但不剔除 blocked。

因为 skipped 通常是主动跳过,blocked 则是被阻塞,后者更能反映真实风险。如果 blocked 也被剔除,报告会显得比实际情况更乐观。

输出格式

支持三种输出:

  • Markdown:适合 Wiki、飞书文档、CSDN 同步;
  • HTML:适合邮件发送;
  • PDF:适合正式归档。

如果环境缺少 PDF 生成依赖,就优雅降级为 Markdown/HTML,而不是直接报错。

示例报告结构

# 测试报告:订单服务 v3.8.2 ## 结论 建议上线 ## 门禁结果 - 用例通过率:97.2% - P0 缺陷:0 - P1 缺陷:1(已确认规避方案) - 偶现缺陷:2 - 环境问题:1 ## 风险说明 1. 订单超时补偿存在偶现延迟,复现率 20%,建议上线后观察; 2. 支付回调 Mock 环境不稳定,已标记为环境问题; 3. 用户地址解析接口仍有 1 条 P1 缺陷,已通过降级方案规避。 ## 建议 1. 上线后重点观察订单超时补偿任务; 2. 支付回调异常告警阈值下调; 3. 下一版本优先修复地址解析兼容性问题。

五、配套辅助 Skill

除了三大主 Skill,还可以配套几个辅助能力:

Skill

用途

visual-ocr-analyzer

解析截图、弹窗、报错页面、日志图片

test-case-runner

批量执行用例,返回通过/失败/阻塞结果

rootcause-analyzer

基于日志、堆栈、接口响应增强根因分析

这些辅助 Skill 不一定要一次性做完。建议先从bug-report-writer开始,因为它收益最直观:提 Bug 是测试最高频、最容易被感知的动作。

六、Skill 开发标准流程

做 Skill 不能凭感觉写,建议按这 7 步走:

  1. 明确需求边界
    这个 Skill 只解决什么问题?不解决什么问题?
  2. 定义角色和 SOP
    AI 扮演什么角色?输入是什么?输出是什么?必须先做什么、后做什么?
  3. 编写 SKILL.md
    把规则、模板、边界、异常处理写清楚。
  4. 单场景测试
    用一条典型日志、一张截图、一个缺陷先跑通。
  5. Skill + MCP 联调
    验证它能否正确调用缺陷平台、OCR、用例执行工具。
  6. 版本管理
    SKILL.md、模板、脚本都要纳入版本控制,不能口头改。
  7. 灰度上线
    先给小范围测试同学用,确认不会乱提单、不会泄露敏感信息,再推广。

七、高能最佳实践

这几条建议直接避开 90% 的翻车点。

1. 职责隔离

Skill 只负责决策和输出格式,MCP 只负责调用工具和接口。不要把接口鉴权、重试、上传逻辑全部塞进 SKILL.md。

2. 固定输出模板

Bug 单、验证结果、测试报告都必须有固定模板。否则 AI 今天输出 Markdown,明天输出纯文本,后天输出 JSON,下游根本没法消费。

3. 高危操作必须人工确认

提交 Bug、关闭缺陷、变更状态、发送报告,这些动作都必须有 dry-run 或人工确认环节。

4. 信息不足就提问,严禁脑补

如果缺少环境、版本、日志、截图、账号权限,Skill 应该主动追问,而不是自己编一个“疑似后端异常”。

5. 拆分细粒度 Skill

不要做一个“万能测试 Agent”。提单、验证、报告、OCR、用例执行,最好拆成多个 Skill。这样更容易调试,也更容易复用。

6. 完善异常容错

接口超时、附件过大、缺陷平台限流、OCR 识别失败、用例执行中断,都要有兜底策略。

八、上线前终极自查清单

发布前建议逐条过一遍:

  1. 这个 Skill 的职责是否清晰?有没有越权?
  2. 它是否有权限提交、修改、关闭缺陷?
  3. 输出是否固定模板?下游能否稳定解析?
  4. 是否会输出手机号、Token、Cookie、内部账号?
  5. 高危操作是否有 dry-run 或人工确认?
  6. 信息不足时是否会主动追问,而不是脑补?
  7. 是否已经用真实缺陷、真实日志、真实截图验证过?
  8. SKILL.md、模板、脚本是否都有版本管理?

九、完整落地链路

第一篇先把 Skill 讲清楚,第二篇再展开 MCP 封装。完整链路是这样的:

封装自研缺陷平台 MCP → 开发三大 Skill → 单 Skill 调试 → Skill + MCP 联调 → 灰度给小范围测试同学 → 收集反馈持续迭代

下一篇会重点讲:

  • Stdio MCP 和 HTTP MCP 怎么选;
  • 自研缺陷平台如何封装 5 大核心工具;
  • create_bug、get_bug、list_bugs、update_bug_status、get_bug_statistics怎么设计;
  • 鉴权、CORS、HTTPS、参数校验、异常处理怎么落地。

最后聊两句

你平时提 Bug、验 Bug、写报告,最烦的是哪一步?是反复截图、补复现步骤,还是跟开发来回确认环境?评论区吐槽一下,说不定下一个 Skill 就帮你解决它。

如果觉得这类“测试 + AI Agent”的实战对你有帮助,点个赞让我知道有人看,我会继续把系列更下去。下一篇打算写《用 MCP 封装自研缺陷平台:5 个核心工具实战》,想看的评论区扣 1。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询