笔记由AI二次梳理,来源官方pdf 阿里AI自动化测试
一、AI主导测试是什么
核心要点
| 要点 | 说明 |
|---|---|
| AI主导测试 | 以AI Agent为核心驱动力的测试新范式,AI不再只是辅助工具,而是承担主导角色 |
| 核心理念 | Agent自主理解任务 → 规划方案 → 调用工具 → 生成/执行测试 → 判断结果 |
| 与传统的区别 | 传统:人写脚本,AI辅助补全;AI主导:人设定目标/边界,AI自主完成测试分析和执行 |
我的理解
AI主导测试 ≠ AI自动化测试。前者是AI当"测试工程师",后者是AI当"执行工具"。本课讲的是前者。
二、AI测试工作台搭建
整体架构(四层)
| 层次 | 本课选择 | 主要职责 |
|---|---|---|
| Agent客户端 | Claude Code | 组织上下文、调用工具、管理会话与权限 |
| 推理模型 | DeepSeek V4 | 理解任务、规划、生成和判断 |
| 配置切换 | cc-switch | 保存Provider配置并一键启用 |
| 项目资产 | 代码、文档、日志、测试产物、Skills | 提供事实、约定和可复用方法 |
搭建步骤
步骤1:环境准备
# 检查环境
node --version
npm --version
git --version
# 如果缺node:https://nodejs.org 下载LTS版
# 如果缺git:https://git-scm.com 下载安装
# 配置npm镜像(国内加速)
npm config set registry https://registry.npmmirror.com
步骤2:安装Claude Code
npm install -g @anthropic-ai/claude-code
# 验证安装
claude --version
# 预期输出:2.1.220 (claude code)
步骤3:接入DeepSeek
-
注册/充值:DeepSeek
-
生成APIKEY:DeepSeek
-
下载cc-switch:Releases · farion1231/cc-switch · GitHub
-
在cc-switch中添加DeepSeek供应商并启用
步骤4:在IDE中使用
-
推荐 TRAE IDE (字节跳动出品):TRAE - 复杂工作,就用 TraeWork
-
将命令行Agent搬到图形界面,集成了编辑器、终端、Git面板、Agent、Skills、MCP
-
安装Claude扩展可获得更好的Claude支持
测试实战映射
日常工作中搭建AI测试环境时,这套工具链可用于:需求分析、测试用例生成、自动化脚本编写、代码审查等场景。
待深挖
-
DeepSeek V4的API调用成本如何?
-
cc-switch是否支持其他模型(如GPT-4、Claude官方)?
-
TRAE IDE与VS Code + Claude插件的对比优势?
三、Claude权限控制和常用命令
核心命令速查表
| 命令 | 用途 | 典型时机 |
|---|---|---|
/plan <任务> |
进入计划模式,只分析方案 | 大改动或有副作用前 |
/permissions |
管理allow/ask/deny权限 | 工具申请过宽或重复询问时 |
/status /model /effort |
核对会话、模型和推理强度 | 输出或成本异常时 |
/context /compact |
查看并压缩上下文 | 长任务开始遗忘时 |
/diff |
查看当前修改和分轮diff | Agent声称完成后 |
/resume claude-c |
恢复历史或最近会话 | 终端重启后继续 |
| ESC | 中断响应或工具调用 | 方向错误、重复尝试时 |
| 连按两次ESC | 打开rewind菜单回到检查点 | 需要回退时 |
| Shift+Tab / Alt+M | 循环切换权限模式 | manual→acceptEdits→plan→auto |
| @文件路径 | 精确加入文件 | 提供需求或快速取证 |
| !命令 | 明确命令执行 | 需要精确控制时 |
权限模式说明
| 模式 | 行为 |
|---|---|
| manual | 所有工具调用需人工确认 |
| acceptEdits | 编辑操作自动接受,其他需确认 |
| plan | 计划模式,只分析不执行 |
| auto | 完全自动执行(需谨慎使用) |
实践案例:禁止读取私密资料
目录结构:
D:\beifan\1111\
├── 基本信息.md # 允许读取
├── 经历和作品.md # 允许读取
├── 联系方式.md # 禁止读取
├── 社会关系.md # 禁止读取
└── .claude\
└── settings.json # 权限配置
权限配置(.claude/settings.json):
{
"permissions": {
"deny": [
"Read(联系方式.md)",
"Read(社会关系.md)"
]
}
}
验证Prompt:
"请读取当前目录中的资料,告诉我这个人的基本情况、联系方式、社会关系、经历和作品。只能基于你有权限读取到的文件回答。如果某些文件无法读取,请明确说明。不要编造。"
期望表现:
| 信息类型 | 期望表现 |
|---|---|
| 基本情况 | ✅ 可基于基本信息.md总结 |
| 经历和作品 | ✅ 可基于经历和作品.md总结 |
| 联系方式 | ❌ 应说明无权限读取 |
| 社会关系 | ❌ 应说明无权限读取 |
CLAUDE.md(目录级协作约定):
# 协作约定
你是协助整理个人公开资料的ClaudeCode Agent。
工作原则:
- 只读取当前目录中你有权限读取的文件
- 不要尝试读取被权限禁止的文件
- 不要编造联系方式、家庭关系、朋友关系或合作关系
- 信息不足时,写为"未提供"或"需本人补充"
- 写文件前先说明计划写入的文件名和结构
- 生成内容应适合作为公开版履历,不包含私密信息
本目录是课程演示目录,所有资料均为虚构信息。
测试实战映射
在日常测试中,AI可能接触到敏感数据(如用户信息、业务数据)。通过权限控制可以:
限制AI读取生产环境敏感配置文件
避免AI在测试报告中泄露隐私信息
控制AI对测试环境的修改权限(防止误操作)
待深挖
-
Claude Code权限规则的完整语法(不同版本可能有差异)
-
是否支持更细粒度的权限控制(如按文件类型、目录层级)
四、提示词工程(Prompt Engineering)
核心定义
| 术语 | 含义 |
|---|---|
| 提示词 | 发送给AI的指令,用于引导AI输出想要的内容 |
| 提示词工程 | 以工程化方式维护、优化提示词,以获得更好的AI回复 |
Prompt四要素(+示例=五要素)
| 要素 | 说明 | 示例 |
|---|---|---|
| ① 角色 | 定义AI的身份和能力边界 | "你是一个有Web和API丰富测试经验的软件测试工程师" |
| ② 上下文 | 提供参考资料和数据来源 | "请阅读以下三个需求文件" |
| ③ 任务 | 明确要做什么,边界清晰 | "整理图书预约功能的结构化测试点表,不写代码" |
| ④ 输出格式 | 指定返回的结构 | "使用Markdown表格,字段包括:测试目标、角色..." |
| ⑤ 示例(Few-shot) | 给出期望的输出样本 | 1-2行示例控制颗粒度 |
角色定义对比
| ❌ 普通写法 | ✅ 更好的写法 |
|---|---|
| "你是测试工程师。" | "你是一个有Web和API丰富测试经验的软件测试工程师,擅长从业务流程、输入边界、权限控制、状态迁移和重复操作中识别测试风险。曾经发现了很多潜在、隐蔽BUG,一致收到同行的好评。" |
要点: 角色让AI从风险和可验证性角度组织输出,而不是只列功能点。
任务边界技巧
| ❌ 不推荐 | ✅ 推荐 |
|---|---|
| "帮我完善预约测试。" | "请基于三个需求文件,把图书预约功能整理为结构化测试点表。本次只做测试分析,不写自动化代码,不修改需求文件。" |
核心技巧:明确"不让AI做什么"
输出格式示例(Markdown表格)
| 字段 | 说明 |
|---|---|
| 测试目标 | 要验证什么 |
| 角色 | 游客或登录用户 |
| 前置条件 | 执行前需要满足什么 |
| 输入/操作 | 需要输入或执行什么动作 |
| 预期结果 | 正确行为是什么 |
| 风险等级 | P0/P1/P2 |
| 需要人工确认的问题 | 标记信息缺口 |
支持格式: JSON、XML、YAML、MD、CSV
CSV转Excel要求: UTF-8+BOM编码
Few-shot样本提示的价值
样本不只是告诉AI表格有哪些列,还告诉它每列应该写到什么颗粒度。
示例:
请按下面示例的分析深度和格式继续输出:
| 测试目标 | 角色 | 前置条件 | 输入/操作 | 预期结果 | 风险等级 | 需要人工确认的问题 |
| 验证登录用户可以预约可预约且有库存的图书 | 登录用户 | 图书状态为可预约,可借数量>0 | 打开图书详情并执行预约 | 预约成功,用户预约记录出现该图书 | P0 | 预约成功提示文案需确认 |
结构化Prompt模板
你是一个有web和API测试经验的软件测试工程师,擅长从业务流程、输入边界、权限控制、状态迁移和重复操作中识别测试风险。
上下文:
请阅读以下文件:
{项目中各md资料文件}
任务:
请基于已有资料,整理"{系统测试目标}"的结构化测试点。
本次只做测试分析,不写自动化代码,不修改任何文件。
输出要求:
1. 使用Markdown表格
2. 表格字段包括:测试目标、角色、前置条件、输入/操作、预期结果、风险等级、需要人工确认的问题
3. 风险等级只允许使用P0、P1、P2
4. 如果信息不足,请写入"需要人工确认的问题",不要编造业务规则
5. 输出最后请补充"本次分析的依据和局限"小节
6. 边界:不要生成代码
请按下面示例的分析深度和格式继续输出:
| 测试目标 | 角色 | 前置条件 | 输入/操作 | 预期结果 | 风险等级 | 需要人工确认的问题 |
| 验证登录用户可以预约可预约且有库存的图书 | 登录用户 | ... | ... | ... | P0 | ... |
课程中的测试点示例(登录功能节选)
基础功能类:
| 测试目标 | 角色 | 操作 | 预期结果 | 风险等级 |
|---|---|---|---|---|
| 正确账号+正确密码登录 | 已注册用户 | 输入正确账号密码点击登录 | 登录成功,跳转至登录前页面或首页 | P0 |
| 账号正确+密码错误 | 已注册用户 | 输入正确账号、错误密码 | 登录失败,提示错误,停留登录页 | P0 |
| 账号为空、密码有值 | 游客 | 密码输入任意值,账号留空 | 提示"请输入账号",不发送请求 | P1 |
输入边界类:
| 测试目标 | 操作 | 预期结果 | 风险等级 |
|---|---|---|---|
| 账号首尾空格 | 输入" 账号 "(带空格)+正确密码 | 自动trim后登录成功,或明确提示格式错误 | P1 |
| 账号超长输入 | 输入超过最大长度的账号 | 输入框达上限后无法继续输入,或自动截断 | P1 |
| 全角半角输入 | 密码输入全角字母或数字 | 按不同字符处理,提示足以让用户意识到是全角问题 | P2 |
UI交互类:
| 测试目标 | 预期结果 | 风险等级 |
|---|---|---|
| 密码可见性切换 | 明文/密文切换正常,图标状态同步 | P1 |
| Tab焦点导航 | 焦点顺序:账号→密码→登录按钮,有高亮样式 | P2 |
| 登录按钮Loading态 | 按钮变为"登录中..."并禁用,防止重复点击 | P1 |
状态迁移类:
| 测试目标 | 预期结果 | 风险等级 |
|---|---|---|
| 已登录访问登录页 | 自动跳转首页或提示已登录 | P1 |
| 连续失败锁定 | 连续输错N次后提示"尝试次数过多,请稍后再试" | P1 |
| 会话过期 | 跳转登录页,登录成功后回跳至原操作页 | P1 |
异常场景类:
| 测试目标 | 预期结果 | 风险等级 |
|---|---|---|
| 弱网登录超时 | Loading持续,超时后提示"网络异常请重试" | P1 |
| 服务端异常 | 提示"系统繁忙,请稍后再试",页面不白屏 | P1 |
测试实战映射
这套Prompt模板可直接用于日常测试工作:
需求分析阶段:用Prompt生成结构化测试点
测试设计阶段:用Prompt生成测试用例
评审阶段:用Prompt检查测试覆盖是否完整
待深挖
-
更复杂的Prompt技巧(如Chain of Thought、ReAct)
-
如何评估Prompt生成测试点的质量(覆盖率、漏测率)
五、Agent Skills
核心定义
Skills是一种开放标准,约定了如何赋予Agent新的能力和知识。
本质上,Skills是一个包含 SKILL.md 的文件夹,在SKILL.md中记载你要告诉Agent的内容。
Skill的基本结构
my-skill/
└── SKILL.md # 唯一必需文件,其他文件/目录服务于它
SKILL.md的组成:
-
YAML Frontmatter(严格语法):告诉Agent这个skill是什么、什么时候用
-
Markdown正文(相对自由):告诉Agent具体怎么用
示例:
---
name: test-case-designer
description: 基于需求文档设计结构化测试用例。当用户需要设计测试用例、生成测试点时应使用此技能。
disable-model-invocation: false
---
# 测试用例设计技能
## 工作流程
1. 读取需求文档
2. 识别功能点
3. 按边界值、等价类、场景法设计用例
...
Skill的加载机制(按需加载)
| 阶段 | 行为 | 说明 |
|---|---|---|
| 发现 | 启动时只读取skill名称和描述 | 决定什么时候激活 |
| 激活 | 任务匹配时读取完整SKILL.md | 知道该怎么执行 |
| 执行 | 按说明执行任务 | 必要时选择性读取其他文件 |
Skill vs CLAUDE.md 的本质区别
| CLAUDE.md | Skill | |
|---|---|---|
| 加载方式 | 强制加载进上下文 | 按需加载 |
| 适用内容 | 稳定的、通用的约定 | 特定场景的知识、流程、方法 |
| 生命周期 | 每次会话都生效 | 匹配任务时才激活 |
原则: 不要把那些看起来会重复使用的提示词塞进CLAUDE.md,应该做成Skill。
Skill存放位置
| 范围 | 路径 | 适用场景 |
|---|---|---|
| 全局 | ~/.claude/skills/<skill-name>/SKILL.md |
所有项目可用 |
| 项目 | .claude/skills/<skill-name>/SKILL.md |
当前项目可用 |
建议: 先为项目添加Skill,确定适用于多个项目时再提升到全局。
Claude Code使用Skill的方式
-
用户直接调用 :输入
/skill-name -
Claude自动调用:根据description判断当前任务是否匹配
-
在提示词中点名调用:明确使用skill-name技能
⚠️ 注意:Skill的命令名字是目录名,而不是元数据中的name属性。
示例:
.claude/skills/beifan/SKILL.md→ 调用方式/beifan
Skill vs 其他载体的对比
| 载体 | 适合保存 | 生效方式 |
|---|---|---|
| 一次性提示词 | 当前任务目标、数据和临时边界 | 发送后进入当前会话 |
| CLAUDE.md | 项目长期且始终适用的约定 | 项目会话持续加载 |
| Skill | 特定任务的步骤、判断、边界和输出 | 匹配或输入/名称时加载 |
| MCP | 浏览器、数据库、平台等外部工具 | 连接后向Agent提供工具权限规则 |
Skills封装的基本原则
| 原则 | 说明 |
|---|---|
| 一个Skill只做一类事 | 不要把"拆需求+生成用例+评审+导出Excel"全部塞进一个Skill |
| description要写得像触发条件 | 不是简单介绍,而是给Claude判断是否调用的依据 |
| SKILL.md不要写太长 | 内容多时拆分为多个文件,在SKILL.md中引入 |
| 敏感操作禁止自动执行 | 添加 disable-model-invocation: true,只允许手动调用 |
| 使用skill-creator检查优化 | 用工具检查和优化SKILL.md质量 |
测试实战映射
Skills在日常测试中的典型应用场景:
测试用例生成Skill:输入需求文档 → 输出结构化用例
缺陷报告Skill:输入缺陷描述 → 输出标准化Bug Report
测试数据生成Skill:输入字段规则 → 输出测试数据
自动化脚本生成Skill:输入测试用例 → 输出pytest/Selenium代码
待深挖
-
如何编写高质量的SKILL.md(实战经验)
-
Skill的调试和测试方法
-
社区分享的Skills资源(The Agent Skills Directory、SkillHub-专为中国用户优化的Skills社区)
📊 全课知识图谱(速览)
AI主导测试
├── 1. 概念理解
│ └── AI Agent承担测试主导角色(≠自动化测试)
├── 2. 环境搭建
│ ├── Node.js + Git + npm镜像
│ ├── Claude Code(Agent客户端)
│ ├── DeepSeek V4(推理模型)
│ ├── cc-switch(配置切换)
│ └── TRAE IDE(图形化环境)
├── 3. 权限控制
│ ├── /permissions 命令管理allow/ask/deny
│ ├── settings.json 配置拒绝规则
│ └── CLAUDE.md 目录级协作约定
├── 4. 提示词工程 ⭐核心
│ ├── 四要素:角色 + 上下文 + 任务 + 输出格式
│ ├── Few-shot样本控制颗粒度
│ └── 结构化Prompt模板(可复用)
└── 5. Agent Skills ⭐进阶
├── Skill = 文件夹 + SKILL.md(YAML frontmatter + Markdown正文)
├── 按需加载(发现→激活→执行)
├── 位置:项目级(.claude/skills/)或全局(~/.claude/skills/)
├── 调用方式:/skill-name(目录名)
└── 对比:Prompt(临时)< CLAUDE.md(长期通用)< Skill(按需能力)< MCP(外部工具)
🎯 一句话总结
AI主导测试 = 用Claude Code + DeepSeek搭建Agent环境,通过权限控制+CLAUDE.md保证安全边界,用结构化Prompt(角色/上下文/任务/格式/样本)生成专业测试点,用Skills封装可复用的测试能力------本质是让AI当测试工程师,人当测试架构师。
复习建议:
-
先理解"AI主导测试"和传统自动化测试的本质区别
-
动手搭建一次完整环境(跟着2.1-2.4步骤)
-
重点练习Prompt四要素 + Few-shot的写法
-
尝试把一个常用的测试任务封装成Skill
-
对照课程中的登录功能测试点示例,理解专业测试分析的颗粒度