1. 这套 Skill 体系到底解决了什么问题
先说说我为什么攒了这么一套东西。日常做 AI 测试和 Agent 开发,最头疼的不是模型能力不够,而是每次遇到新任务都要从头写提示词、重新调流程、重新验证输出格式。一个测试用例生成任务,今天用这个模板,明天换个项目又得重写一遍。时间全花在重复劳动上,真正有价值的测试策略设计反而没精力做。
后来我开始把高频操作沉淀成一个个独立的 Skill——你可以理解成“可复用的能力单元”。每个 Skill 只干一件事,输入输出格式固定,可以单独调用,也可以串起来组成工作流。攒到 25 个之后,我发现日常 80% 的测试任务都能直接拼装完成,效率提升非常明显。
这套东西适合谁?如果你在做 AI 应用测试、Agent 开发、自动化测试框架搭建,或者只是想让日常的 AI 辅助工作更顺手,那这些 Skill 的思路和实现方式都能直接参考。不需要你从零造轮子,我把每个 Skill 的设计逻辑、关键参数、踩过的坑都拆开讲。
提示:Skill 的核心不是提示词写得多花哨,而是输入输出边界清晰、失败可定位、结果可复现。这三点做不到,再长的提示词也是空中楼阁。
2. 核心设计思路:为什么是 25 个而不是 5 个或 100 个
2.1 粒度控制:一个 Skill 只做一件事
我见过很多人把提示词写成“万能助手”,一个模板里塞了生成测试用例、分析日志、写报告、发邮件四件事。结果就是每次调用都要重新解释上下文,模型输出格式飘忽不定,出了问题根本不知道是哪一步崩的。
我的做法是严格按“单一职责”拆分。比如“生成边界值测试用例”和“生成等价类测试用例”是两个独立 Skill,虽然都属于测试用例生成,但输入参数不同、输出结构不同、验证方式也不同。拆开之后,每个 Skill 的提示词可以写得非常精准,模型不容易跑偏。
25 个这个数字不是拍脑袋定的。我按测试工作流梳理了一遍:需求分析阶段 4 个、用例设计阶段 6 个、执行与监控阶段 5 个、缺陷分析阶段 4 个、报告与协作阶段 3 个、通用工具类 3 个。加起来正好覆盖完整链路,又不会多到记不住。
2.2 输入输出标准化:让 Skill 可以串联
每个 Skill 我都强制定义了三样东西:输入参数表、输出格式模板、失败重试策略。输入参数用 JSON Schema 描述,输出格式用固定模板约束,失败重试最多两次并记录原因。
这样做的好处是 Skill 之间可以像积木一样拼接。比如“解析需求文档”的输出直接作为“生成测试点”的输入,“生成测试点”的输出再喂给“生成测试用例”。整条链路跑下来,中间不需要人工干预格式转换。
2.3 版本管理:每个 Skill 都有迭代记录
我在每个 Skill 文件头部都加了版本号和变更日志。比如test_case_generator_v3.md,v1 是基础版,v2 加了边界值约束,v3 优化了输出格式让下游解析更稳定。每次修改都记录改了什么、为什么改、效果对比如何。
这个习惯是从一次惨痛教训来的。有个 Skill 我改了一版提示词,当时觉得效果更好,结果两周后另一个项目调用时发现输出格式变了,下游解析全挂。从那以后所有修改必须记版本,调用时指定版本号,避免意外升级导致的问题。
3. 25 个 Skill 的完整拆解与实操要点
3.1 需求分析类 Skill(4 个)
Skill 1:需求文档结构化解析
输入是一段自然语言需求描述,输出是结构化的功能点列表、约束条件、验收标准。关键点在于提示词里要明确要求模型区分“功能需求”和“非功能需求”,并且对模糊表述主动标注“待确认”。
实操中我发现,让模型输出 JSON 格式比 Markdown 表格更稳定。JSON 的字段名固定,下游解析几乎不会出错。但要注意在提示词里给出完整的 JSON Schema 示例,否则模型会自己发明字段名。
Skill 2:需求歧义检测
这个 Skill 专门用来找需求文档里前后矛盾、表述模糊、缺失边界的地方。输入是需求文本,输出是问题列表加建议澄清方向。
我踩过的坑是:一开始没限制输出数量,模型能给你列 50 条“潜在问题”,其中一半是废话。后来加了约束“只输出影响测试设计的关键歧义,最多 10 条”,质量明显提升。
Skill 3:验收标准提取
从需求中提取可验证的验收标准,每条标准必须包含“给定条件、操作、预期结果”三要素。这个 Skill 的价值在于把模糊的“系统应该快速响应”转化成“在 100 并发下,95% 请求响应时间小于 2 秒”。
Skill 4:需求变更影响分析
输入是变更前后的需求文本,输出是受影响的测试用例列表、需要新增的测试点、需要回归的范围。这个 Skill 我用了对比分析提示词模板,让模型逐条对比差异,而不是整体概括。
3.2 用例设计类 Skill(6 个)
Skill 5:等价类划分用例生成
输入是输入参数的取值范围和约束,输出是等价类划分表和对应的测试用例。关键参数是“有效等价类”和“无效等价类”的比例,我一般设 1:2,因为无效场景更容易出 bug。
Skill 6:边界值用例生成
专门针对数值型、日期型、字符串长度型参数生成边界测试用例。提示词里要明确要求覆盖“最小值、最小值减一、最小值加一、最大值、最大值减一、最大值加一”六个点。
Skill 7:场景法用例生成
输入是业务流程描述,输出是基本流、备选流、异常流的测试场景。这个 Skill 的难点在于让模型理解“业务流”和“测试流”的区别,我通常在提示词里给一个完整示例来锚定输出格式。
Skill 8:状态迁移用例生成
输入是状态机定义,输出是状态覆盖、迁移覆盖、路径覆盖的测试用例。这个 Skill 我用了表格驱动的方式,让模型先输出状态迁移表,再基于表生成用例,准确率比直接生成高很多。
Skill 9:正交实验用例生成
输入是多个因子的取值列表,输出是正交表。这个 Skill 需要模型做组合计算,我实测下来纯靠提示词让模型算容易出错,后来改成让模型输出因子和水平,我自己用脚本生成正交表,模型只负责解释结果。
Skill 10:用例优先级排序
输入是用例列表和风险评估维度,输出是按优先级排序的用例。我用的排序维度是“影响范围、发生概率、检测难度”,让模型给每个维度打分再加权计算。
3.3 执行与监控类 Skill(5 个)
Skill 11:测试数据生成
输入是数据模板和约束条件,输出是批量测试数据。这个 Skill 我加了“数据多样性”约束,要求生成的数据在性别、年龄、地域等维度上分布合理,避免全是“张三、李四、王五”。
Skill 12:自动化脚本骨架生成
输入是测试用例描述,输出是 pytest 或 unittest 的脚本骨架。关键点是让模型只生成骨架和关键断言,具体定位器留空由人工填充,避免模型瞎猜元素定位方式。
Skill 13:日志异常检测
输入是日志片段,输出是异常模式识别结果和可能原因。这个 Skill 我用了“先分类再定位”的两步提示词,先让模型判断日志级别和异常类型,再分析具体原因。
Skill 14:接口响应校验
输入是接口返回的 JSON 和预期 Schema,输出是校验结果和差异点。这个 Skill 的核心是让模型做结构化对比,而不是简单字符串匹配。
Skill 15:性能测试指标分析
输入是性能测试报告数据,输出是瓶颈分析和优化建议。我通常把响应时间、吞吐量、错误率、资源利用率四个维度的数据一起喂给模型,让它做关联分析。
3.4 缺陷分析类 Skill(4 个)
Skill 16:缺陷报告结构化
输入是自由格式的缺陷描述,输出是标准缺陷报告,包含标题、复现步骤、预期结果、实际结果、严重程度、优先级。这个 Skill 我加了“复现步骤必须可执行”的约束,避免模型写“打开页面,点击按钮”这种废话。
Skill 17:缺陷根因分析
输入是缺陷现象和日志,输出是可能根因列表和验证方法。我用的提示词模板是“5 Why”分析法,让模型连续追问五次为什么,层层深入。
Skill 18:缺陷聚类
输入是一批缺陷描述,输出是按模块、类型、根因聚类的分组。这个 Skill 我用了“先提取关键词再聚类”的两步法,比直接让模型聚类准确率高。
Skill 19:回归范围推荐
输入是缺陷修复信息和代码变更范围,输出是建议回归的测试用例列表。这个 Skill 的关键是让模型理解“变更影响面”,我通常会把代码 diff 摘要一起喂进去。
3.5 报告与协作类 Skill(3 个)
Skill 20:测试报告生成
输入是测试执行结果数据,输出是结构化测试报告。我强制要求报告包含“测试范围、执行概况、缺陷统计、风险评估、结论建议”五个部分,缺一不可。
Skill 21:测试进度周报
输入是本周任务完成情况和下周计划,输出是周报文本。这个 Skill 我加了“数据说话”约束,要求每个结论都有具体数字支撑,避免“进展顺利”这种空话。
Skill 22:跨团队协作沟通模板
输入是沟通场景和关键信息,输出是邮件或消息模板。这个 Skill 我按“背景、问题、影响、建议、请求”五段式结构约束输出。
3.6 通用工具类 Skill(3 个)
Skill 23:提示词优化器
输入是原始提示词,输出是优化后的版本和优化说明。这个 Skill 我用来迭代其他 Skill 的提示词,形成自举循环。
Skill 24:测试术语解释
输入是测试相关术语,输出是通俗解释和示例。这个 Skill 主要给团队新人用,降低沟通成本。
Skill 25:测试策略推荐
输入是项目特征(规模、复杂度、风险等级、时间约束),输出是推荐的测试策略组合。这个 Skill 我用了决策树逻辑,让模型按条件分支推荐方案。
4. 实操过程:从零搭建一个 Skill 的完整流程
4.1 第一步:明确 Skill 的输入输出边界
拿“边界值用例生成”这个 Skill 举例。我先问自己三个问题:输入是什么?输出是什么?什么情况下算失败?
输入我定义为:参数名、参数类型、取值范围、精度要求。输出定义为:边界点列表和对应的测试用例,每条用例包含输入值、预期结果、测试目的。失败定义为:输出缺少六个边界点中的任何一个,或者预期结果不明确。
这三个问题回答清楚了,提示词就有了骨架。
4.2 第二步:编写提示词并加入约束
我的提示词模板一般包含五部分:角色定义、任务描述、输入格式说明、输出格式说明、约束条件。以边界值 Skill 为例:
角色:你是一名资深测试工程师,擅长边界值分析。 任务:根据给定的参数信息,生成完整的边界值测试用例。 输入格式: - 参数名:字符串 - 参数类型:整数/浮点数/日期/字符串 - 取值范围:最小值到最大值 - 精度要求:小数位数或字符长度 输出格式: | 边界点 | 输入值 | 预期结果 | 测试目的 | |--------|--------|----------|----------| | 最小值 | ... | ... | ... | 约束条件: 1. 必须覆盖最小值、最小值减一、最小值加一、最大值、最大值减一、最大值加一六个点 2. 预期结果必须明确说明是“接受”还是“拒绝”,拒绝时说明错误提示 3. 如果参数类型是浮点数,边界值要考虑精度误差这个模板我迭代了三个版本。v1 没加约束条件,模型经常漏掉“最小值减一”这种点。v2 加了约束但没给输出示例,格式不稳定。v3 加上完整示例后才真正稳定下来。
4.3 第三步:设计验证用例并测试
每个 Skill 写完后,我会用至少 5 个不同类型的输入去测试。还是拿边界值 Skill 举例,我用了这些测试输入:
- 整数参数,范围 1 到 100
- 浮点数参数,范围 0.0 到 1.0,精度 2 位小数
- 日期参数,范围 2024-01-01 到 2024-12-31
- 字符串参数,长度 1 到 50
- 边界情况:最小值等于最大值
测试过程中记录每个输入的输出质量,发现的问题直接反馈到提示词里修改。比如浮点数那个用例,模型一开始没考虑精度误差,把 0.01 的边界写成 0.00 和 0.02,后来在约束里明确要求“浮点数边界值需考虑精度,如精度为 2 位小数时,边界值应取 0.01 和 0.99”才修正。
4.4 第四步:版本固化与文档化
测试通过后,我把 Skill 文件按skill_name_v版本号.md命名保存,并在文件头部写清楚:适用场景、输入参数表、输出格式、已知限制、变更记录。
已知限制这一项很重要。比如边界值 Skill 我标注了“不适用于枚举类型参数,枚举类型请使用等价类 Skill”。这样调用时就不会用错。
5. 常见问题与排查技巧实录
5.1 模型输出格式不稳定怎么办
这是最高频的问题。我的解决方案是三层约束:第一层在提示词里给完整输出示例,第二层在输出格式说明里用 JSON Schema 或表格模板严格定义,第三层在调用后加格式校验脚本,不合格就重试。
实测下来,加了输出示例之后格式稳定性能提升 70% 以上。如果还不行,就把任务拆得更细,让模型一次只输出一个字段。
5.2 Skill 之间串联时数据丢失怎么办
常见原因是上游 Skill 的输出格式和下游 Skill 的输入格式不匹配。我的做法是在每个 Skill 定义里明确标注“输出格式”和“可接受的输入格式”,串联时先做一次格式转换。
比如“需求解析”输出的是 JSON,“用例生成”输入要求是 Markdown 列表,中间就需要一个转换步骤。我写了一个通用的格式转换 Skill 来处理这类问题。
5.3 模型对某些领域术语理解偏差怎么办
在提示词里加术语表。比如测试领域里的“冒烟测试”“回归测试”“探索式测试”,模型有时候会混淆。我在提示词开头加一段“术语定义”,把关键术语的解释写清楚,准确率明显提升。
另一个技巧是给反例。比如“冒烟测试不是全面测试,不要生成大量用例,只生成核心路径的验证用例”,用否定式约束来纠正模型的理解偏差。
5.4 如何处理模型幻觉问题
测试领域对准确性要求高,模型编造信息是致命的。我的应对策略是:所有事实性输出必须附带来源或依据,无法确认的信息标注“待验证”,关键结论要求模型给出推理过程。
比如缺陷根因分析 Skill,我要求模型对每个根因假设都给出“支持证据”和“反对证据”,没有证据的假设直接丢弃。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| 输出格式飘忽 | 提示词缺少示例 | 检查是否有完整输出示例 | 补充示例并加格式校验 |
| 遗漏关键点 | 约束条件不完整 | 对照需求逐条检查 | 在约束里明确列出必须覆盖的点 |
| 术语理解偏差 | 缺少术语定义 | 检查提示词是否有术语表 | 添加术语定义和反例 |
| 串联数据丢失 | 格式不匹配 | 检查上下游格式定义 | 增加格式转换步骤 |
| 输出内容空洞 | 缺少具体性约束 | 检查是否要求数据支撑 | 加“每个结论必须有数字支撑”约束 |
| 重试仍失败 | 任务粒度过大 | 检查是否一个 Skill 干了多件事 | 拆分成更小的 Skill |
6. 我日常调用这 25 个 Skill 的工作流
6.1 新项目启动阶段
接到新项目后,我先用 Skill 1 解析需求文档,再用 Skill 2 检测歧义,把问题清单发给产品确认。确认完后用 Skill 3 提取验收标准,用 Skill 25 推荐测试策略。这一套跑下来大概 20 分钟,以前手工做至少半天。
6.2 用例设计阶段
根据测试策略,选用例设计类 Skill。功能测试为主就用 Skill 5 和 Skill 6,业务流程复杂就用 Skill 7,状态多的用 Skill 8,参数组合多的用 Skill 9。生成完用例后用 Skill 10 排优先级。
这个阶段我一般会生成两轮:第一轮快速生成覆盖主要场景,第二轮针对第一轮遗漏的边界和异常场景补充。两轮下来覆盖率能到 90% 以上。
6.3 执行与缺陷处理阶段
执行阶段用 Skill 11 生成测试数据,用 Skill 12 生成自动化脚本骨架,用 Skill 13 监控日志异常,用 Skill 14 校验接口响应。发现缺陷后用 Skill 16 结构化缺陷报告,用 Skill 17 做根因分析,用 Skill 18 聚类,用 Skill 19 推荐回归范围。
6.4 报告与复盘阶段
用 Skill 20 生成测试报告,用 Skill 21 写周报,用 Skill 22 做跨团队沟通。复盘时用 Skill 23 优化提示词,用 Skill 24 给新人解释术语。
整个工作流跑下来,我的时间分配从“70% 写文档、20% 执行、10% 分析”变成了“20% 写文档、30% 执行、50% 分析”。分析时间多了,测试策略质量自然就上去了。
7. 几个让我少走弯路的实操心得
第一个心得:Skill 不是越多越好,而是越精越好。我一开始攒了 40 多个,后来发现常用的就那 25 个,剩下的要么功能重叠,要么使用频率太低维护成本高。砍掉之后反而效率更高。
第二个心得:每个 Skill 都要有“失败模式”文档。记录什么情况下这个 Skill 会输出错误结果,调用时就能提前规避。比如边界值 Skill 对枚举类型无效,等价类 Skill 对连续范围无效,这些都要写清楚。
第三个心得:定期用 Skill 23 优化其他 Skill 的提示词。我每个月会把所有 Skill 跑一遍,用 Skill 23 分析哪些提示词可以精简、哪些约束可以加强。迭代三轮之后,整体输出质量能提升一个档次。
第四个心得:不要追求全自动。有些环节人工介入反而更快,比如用例优先级排序,模型排完后我通常会手动调整几条,因为模型不了解项目当前的实际风险焦点。人机结合才是最优解。
第五个心得:把 Skill 当成代码来管理。用 Git 做版本控制,每次修改提交 commit message,定期 review 变更记录。这样团队协作时不会出现“谁改了这个 Skill 导致输出变了”的问题。
提示:Skill 体系的价值不在于单个 Skill 多强大,而在于组合起来能覆盖完整工作流。先跑通一条链路,再逐步扩展,比一开始就追求大而全要靠谱得多。
这套东西我用了大半年,最大的感受是:AI 测试的效率瓶颈不在模型能力,而在任务拆解和流程设计。把这两件事做好了,模型的能力才能真正释放出来。