Claude Code辅助测试:导入篇skills

笔记由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
  1. 注册/充值:DeepSeek

  2. 生成APIKEY:DeepSeek

  3. 下载cc-switch:Releases · farion1231/cc-switch · GitHub

  4. 在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的组成:

  1. YAML Frontmatter(严格语法):告诉Agent这个skill是什么、什么时候用

  2. 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的方式

  1. 用户直接调用 :输入 /skill-name

  2. Claude自动调用:根据description判断当前任务是否匹配

  3. 在提示词中点名调用:明确使用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代码

待深挖

📊 全课知识图谱(速览)

复制代码
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当测试工程师,人当测试架构师。


复习建议:

  1. 先理解"AI主导测试"和传统自动化测试的本质区别

  2. 动手搭建一次完整环境(跟着2.1-2.4步骤)

  3. 重点练习Prompt四要素 + Few-shot的写法

  4. 尝试把一个常用的测试任务封装成Skill

  5. 对照课程中的登录功能测试点示例,理解专业测试分析的颗粒度

相关推荐
whcyhhh2 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
for_ever_love__3 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76893 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python
Niuguangshuo4 小时前
DeepFilterNet 3:端侧实时全带降噪的开源标杆
python
第一程序员5 小时前
AI 辅助编程的 7 个误区:把模型当高级搜索引擎是对它的最大浪费
python·rust·github
HiDev_6 小时前
【非标自动化】2、认识元器件(节流阀)
运维·自动化
Groundwork Explorer6 小时前
W5500 网卡编程初始化与使用指南
python·单片机
逸Y 仙X7 小时前
MCP(模型控制协议)完全指南:从核心概念到实战开发
python·大模型·llm·ai编程·mcp
WILLF7 小时前
前端视角:Python requests vs JS axios
前端·python