测试 QA × AI 协同:让 AI 出数量,让人类出独立性

一人公司没有测试同事,AI 就是你的第二双眼睛——但小心“自己检查自己作业”:用 AI 按你的代码生成测试,测的是“代码做了什么”,不是“代码该做什么”。

Posted by WuQingBao on October 12, 2026

07-测试 QA × AI 协同

💬 一句话读懂本篇:一人公司没有测试同事,AI 就是你的第二双眼睛——但小心”自己检查自己作业“:用 AI 按你的代码生成测试,测的是”代码做了什么”,不是”代码该做什么”。

版本 适用范围 前置阅读
V0.1 一人公司 / 超级个体 AI协同开发规范(总纲)、00-汇总·一人公司AI协同岗位全景

岗位定位:🤝 人机协同 · AI 承担约 60% 工作量。测试岗的核心矛盾:AI 生成用例又快又多,但用例的”来源”决定测试的价值——从需求推导的用例能发现 bug,从实现代码推导的用例只会盖章确认。


一、传统画像:测试工程师原来干什么

工作项 传统做法 痛点
用例设计 按 PRD 写等价类/边界值/场景用例 费脑,容易漏
手工测试 点点点,回归测试点到麻木 每次发版重复劳动
自动化 写脚本、维护脚本 维护成本高,常烂尾
Bug 管理 提单、复现、跟进 一人公司:自己给自己提单
验收把关 上线前最后一道闸 传统公司靠独立测试岗的”第三方视角”

二、AI 协同后的新画像

你戴上”QA 帽子”时,AI 是测试大军;但独立性必须人为制造。 关键动作:用例从需求生成,不从代码生成——这是本分册最重要的一句话。

flowchart LR
    subgraph SRC["📥 用例的两条来源"]
        R["✅ 从 PRD/验收标准生成<br>测的是「该做什么」<br>→ 能发现 bug"]
        C["❌ 从实现代码生成<br>测的是「做了什么」<br>→ 只会盖章确认"]
    end
    subgraph A["🤖 AI:测试大军"]
        A1["用例批量枚举<br>等价类/边界/状态机"]
        A2["自动化脚本<br>单测/E2E"]
        A3["日志比对/回归清单"]
    end
    subgraph H["👤 你:独立视角"]
        H1["补 AI 想不到的场景<br>(业务上下文/恶意操作)"]
        H2["验收标准拍板"]
        H3["上线放行签字"]
    end
    R --> A1
    A1 --> A2
    A2 --> H1
    A3 --> H1
    H1 --> H2 --> H3
    C -.->|"仅用于补覆盖率<br>不用于发现bug"| A2

    classDef human fill:#fff3e0,stroke:#e65100,color:#bf360c
    classDef ai fill:#e3f2fd,stroke:#1976d2,color:#0d47a1
    classDef bad fill:#ffebee,stroke:#c62828,color:#b71c1c
    class H1,H2,H3 human
    class A1,A2,A3,R ai
    class C bad

三、逐项对比:传统做法 vs AI 协同做法

工作项 🐢 传统做法 🚀 AI 协同做法 谁主导
用例设计 测试手写,评审补漏 AI 从验收标准批量推导(模板 A),你补”业务里才懂的坑” 🤝 AI 量产,你补盲区
边界枚举 靠经验 AI 系统性枚举:空/超长/非法/并发/超时/权限组合 🤖 AI 主导
单元测试 开发顺手写(常不写) AI 批量生成(04 分册模板 C),你验断言质量 🤖 AI 主导
E2E 自动化 专人搭框架写脚本 AI 搭 Playwright/Cypress 脚本,你维护选择器稳定性 🤝 人机协同
手工回归 发版前全量点点点 AI 生成”变更影响面→最小回归清单”,你只点关键路径 🤝 人机协同
Bug 定位 复现→排查→提单 贴日志+步骤,AI 给可疑点(04 分册模板 B),你验证 🤝 人机协同
测试数据 手造 AI 生成假数据(禁止用真实用户数据,总纲红线) 🤖 AI 主导
上线放行 测试经理签字 你签字——放行责任 AI 永远分担不了 🧠 人主导

四、协同工作流:一个功能的测试闭环

flowchart TD
    PRD["📋 PRD 验收标准<br>(01 分册产出)"] --> C["🤖 AI 从验收标准推导用例<br>(不看实现代码!)"]
    C --> H1{"👤 关口①:用例评审<br>补业务盲区:恶意操作/组合场景/历史坑"}
    H1 --> AUTO["🤖 AI 把用例转自动化<br>单测 + 关键路径 E2E"]
    AUTO --> RUN["🤖 跑测试 + AI 分析失败项"]
    RUN --> H2{"👤 关口②:断言质检<br>改坏一行代码,测试会红吗?"}
    H2 -->|"不会红=假测试"| AUTO
    H2 -->|"会红"| REG["🤖 AI 出最小回归清单<br>👤 手工过关键路径"]
    REG --> H3{"👤 关口③:放行决策<br>遗留 bug 分级:阻塞/可带病上线/下版修"}
    H3 -->|"放行"| REL["✅ 上线(08 分册接手)"]
    H3 -->|"阻塞"| FIX["修复 → 回炉"]
    FIX --> RUN

    classDef human fill:#fff3e0,stroke:#e65100,color:#bf360c
    classDef ai fill:#e3f2fd,stroke:#1976d2,color:#0d47a1
    class H1,H2,H3 human
    class C,AUTO,RUN,REG,FIX ai

节奏建议:日常小改动跑”自动化 + 影响面抽查”即可;碰钱、碰权限、碰数据的变更必须走完三关口。测试时间的分配原则:AI 覆盖 80% 常规面,你把省下的时间全砸在”AI 想不到的 20%”。


五、提示词模板(直接抄作业)

模板 A · 用例设计(从需求,不从代码)

1
2
3
4
5
6
7
8
【输入】功能描述与验收标准:(粘贴 PRD 相关节)
业务规则:(粘贴)
【任务】设计测试用例集,要求:
1. 方法覆盖:等价类 / 边界值 / 状态转换 / 权限矩阵,各标注属于哪类
2. 每条用例:前置条件 / 操作步骤 / 预期结果 / 优先级(P0~P2)
3. 单独一节「恶意与异常场景」:非法输入、重放、并发、越权尝试
【约束】只依据我给的验收标准推导,不要看实现代码;
验收标准含糊处,列出【需求疑问】向我提问,禁止自行脑补预期结果。

模板 B · E2E 自动化脚本

1
2
3
4
5
6
7
8
【输入】用例清单(P0 部分,粘贴);技术栈:Playwright/Cypress + 前端框架版本
【任务】为 P0 用例生成 E2E 脚本
【约束】
1. 选择器优先用 data-testid / 语义化 role,禁止脆弱的 nth-child 和文本匹配
2. 测试数据自建自清(before/after),禁止依赖环境残留数据
3. 每个脚本独立可跑,不依赖执行顺序
4. 失败时自动截图
【输出】脚本 + 需要在页面代码里补的 data-testid 清单

模板 C · 变更影响面分析(最小回归清单)

1
2
3
4
【输入】本次变更的 diff:(粘贴);项目模块依赖关系:(描述/贴目录)
【任务】1) 分析这个 diff 可能影响到的功能面(顺着调用链说,别只看改动文件);
2) 输出「最小回归清单」:上线前必须手工验证的场景,按风险排序,控制在 10 条以内;
3) 指出哪些既有自动化测试覆盖了这次变更,哪些没覆盖。

模板 D · 断言质检(防假测试)

1
2
3
4
5
6
以下是一组测试代码(粘贴)和它测的业务代码(粘贴)。
请挑毛病:
1. 哪些断言是"弱断言"(改了业务逻辑它也不会红)?逐个指出并加强
2. 哪些用例实际没测到声称在测的场景(Mock 掉了被测逻辑本身)?
3. 测试之间有没有顺序依赖或共享状态?
输出修正后的测试代码。

六、验收清单(放行前逐项勾)

用例质量

  • P0 用例全部来自验收标准推导(不是照着代码写的)
  • 你人工补过至少一轮”业务盲区”场景(AI 不知道的历史坑、恶意操作)
  • 【需求疑问】全部澄清,无”AI 脑补的预期结果”

测试有效性

  • 断言质检做过:故意改坏一处业务逻辑,相关测试变红
  • 无”只测顺利路径”的用例集;错误路径、边界都有覆盖
  • E2E 脚本独立可重复跑,数据自建自清

回归与放行

  • 最小回归清单手工过完(碰钱/碰权限/碰数据的变更:全量回归)
  • 测试数据无真实用户信息(总纲红线)
  • 遗留 bug 已分级并有书面决定:可带病上线的,写明理由和下版修复计划
  • 放行决定是你做的,不是”AI 说测试都过了”

七、坑点清单

坑 长什么样 怎么防
自己检查自己作业 用实现代码生成用例,bug 和测试”配套出错” 模板 A 铁律:只喂验收标准,不喂代码
弱断言 覆盖率漂亮,断言全是 not null、status 200 模板 D 质检 + “改坏代码看红”实测
Mock 掉被测物 测了半天测的是 Mock 自己 评审时问”这段逻辑真的被执行了吗”
覆盖率虚荣 为凑 90% 生成一堆无效用例 盯 P0 场景覆盖,不盯数字
E2E 脆断 选择器绑文本/位置,改个文案全红 模板 B 强制 data-testid
脑补预期结果 需求没写清,AI 自己定了个”合理”预期 模板 A 强制【需求疑问】机制
真实数据图省事 直接拿生产数据当测试数据 红线:只用 AI 造的假数据/脱敏数据

💬 收尾一句:测试岗的 AI 协同精髓是”让 AI 出数量,让人类出独立性“。一人公司最容易死在”没人挑刺”上——戴上 QA 帽子的那天下午,请对你上午写的代码保持敌意。 下一册:08-运维 DevOps × AI 协同——AI 写部署脚本很爽,但生产环境的每一个回车,都得你亲手按。