1. 拆解需求:为什么直接让AI“帮我写测试用例”会翻车
事情是这样的。我这边负责一个中后台系统的质量保障,每天要面对的模块五花八门,从用户登录、权限校验,到订单状态流转、金额计算,再到各类导出导入任务。以往写功能测试用例,靠的是翻需求文档、对照历史缺陷、再结合自己对业务的理解,一条条往用例管理平台里填。运气好、业务熟的时候,一个常规模块的用例大概要花半小时到四十分钟;遇到状态多、分支杂的模块,写上一个小时也不算夸张。
后来团队引入了AI编程工具,最开始我的用法很粗糙,就是在对话里丢一句“帮我写一下登录模块的测试用例”。结果怎么说呢,能用,但远谈不上好用。AI确实能给你列出来“账号为空、密码错误、验证码过期”这类常规场景,但一旦涉及到具体的字段长度边界、状态机流转、权限组合,它就容易泛泛而谈,甚至一本正经地编造一些系统里根本不存在的规则。我拿到之后还得逐条人工核对、修补,有时候改完的时间比自己从头写还要长。所以“AI提效”在我这里一度成了个笑话,直到我开始研究Codex这类工具的skill机制,才彻底改观。
先说结论:如果你也在用AI生成测试用例,但觉得结果泛泛、不稳定、不够贴合业务,那么大概率不是模型不行,而是你的用法缺了一个关键的中间层。这个中间层就是skill——一套可复用、可维护、能约束模型输出方式的“技能包”。它不是普通提示词,而是把“一个资深测试是怎么思考、怎么列场景、怎么设计边界、怎么组织描述”的整套方法论,固化成AI能在指定场景里主动加载并执行的任务脚本。
所以这篇文章不打算讲什么大道理,就把我自己从0到1写一个测试用例生成skill的全过程,连同踩过的坑、反复调优的细节、实测的数据对比,全部摊开来讲。你看完可以直接照着在自己的工具链里复刻一份,然后把那类重复性极强的用例编写工作,真正从“分钟级”压到“秒级”。
1.1 从一次翻车的“AI直接生成”开始
先还原一下我最早是怎么被AI坑的。当时我给AI的指令很简单:
“请为‘用户登录’功能编写测试用例,模块包括用户名、密码、验证码。”
AI返回了一份很标准的答案:正确登录、用户名错误、密码错误、验证码为空、验证码错误……总共二十来条。表面上看结构清晰、分类也算合理,但真正落库的时候问题就全暴露了。
第一,描述太泛。它写“输入错误用户名”,但我们的系统里用户名规则是6-20位字母数字组合,错误用户名至少应该区分“格式不合法”和“合法但不存在”两种场景,这不是同一类,预期结果也不一样。
第二,缺少状态依赖。登录功能在我们系统里还关联了账号锁定、密码过期、多端互踢这些逻辑,这些如果不主动喂给AI,它根本不可能凭空想出来。
第三,和平台字段对不上。我们的用例管理平台需要填前置条件、测试步骤、预期结果、优先级、用例类型这些字段,AI给的输出是纯文本,我自己还得重新整理粘贴。
所以那一轮我的体感是:AI就像个刚入职的实习生,行业常识懂一点,但你不把项目背景、约束条件、输出格式一条条交代清楚,它交出来的东西永远是“看起来对,用起来废”。这其实就是我后来下决心要写一个专属skill的根本原因——与其每次花20分钟写一段很长很长的提示词去约束AI,不如把这套约束沉淀成一个文件,让AI在需要的时候自动调用,稳定复现。
1.2 核心瓶颈:模型不差,差的是“领域上下文”
围绕这个现象,我后来反复测试了很多次,逐渐形成了一个判断:直接让AI写测试用例,效果不稳定的核心瓶颈,不在于模型不理解“测试用例”这个概念,而在于它缺少三层上下文。第一层是我这个系统的业务规则和字段约束;第二层是当前项目约定俗成的用例组织方式,比如前置条件怎么提取、描述用不用模块前缀;第三层是它对“什么才是一条好用例”的标准理解,和我、和我们团队的标准不一样。
普通提示词是没办法稳定承载这三层上下文的。你不可能每次写用例都把整个需求文档、项目规范、历史用例示例塞进去,token消耗是一方面,更重要的是AI会在长上下文里逐渐丢失重点,输出质量方差很大。而skill机制恰好就是解决这个问题的:它把这三层上下文工具化、模块化、版本化管理起来,在需要的时候以结构化的方式注入,让AI在有限的上下文里拿到高密度的“本案关键信息”,再按你的标准去输出。
这里可以打个比方。普通提示词相当于你临时拉了一个刚毕业的新人,花二十分钟给他讲需求、讲规范、讲格式,然后让他动手写,写完你还要逐条改;而skill相当于你给这个新人配了一套标准作业手册和经验库,他上手前只需要翻一遍手册,就知道按什么流程做、做到什么标准、用什么格式交付。显然后者的质量和效率都稳定得多。
1.3 真正该提效的是“从需求到用例”的翻译过程
再深挖一层。我们写测试用例花掉的30分钟,其实还可以拆开看:真正用到思考的时间并不多,大部分时间都耗在了“翻译”上。把需求语言翻译成场景语言,把业务规则翻译成预期结果,把系统行为翻译成操作步骤——这些翻译逻辑其实高度重复,一旦模块类型固定,翻译的模式也就固定了。
就拿“列表查询”这种功能来说,不管业务是订单列表、用户列表还是日志列表,核心用例永远跳不出那几个维度:分页是否正确、筛选条件是否生效、关键字搜索是否匹配、排序是否稳定、空数据是否有提示、接口异常是否有兜底。差别只在于具体字段名和业务规则。这类用例的编写其实根本没有多少智力含量,纯属体力劳动,但它又必须写得细致、不能遗漏。
而我的这个skill,本质上就是把“列表查询”“新增编辑”“登录认证”这些高频通用场景的用例设计模板,连同我们项目的字段命名风格、预期结果写法、优先级划分规则,全部固化成一套可自动执行的体系。AI拿到需求之后,不再是从零理解“测试用例怎么写”,而是直接套用已有的用例骨架,把具体业务参数填进去,再根据项目的特殊情况增删场景。这样一来,我的收益就很直接——不需要每次都跟AI解释“什么是前置条件”“优先级分几档”,AI自己就会按我的方式去写,而且每一次的格式和颗粒度都能保持稳定。
2. 理解skill机制:它不是提示词,是一个“可复用的专业流程”
在动手写skill之前,我觉得有必要先把skill本身是什么、它和普通提示词、和Agent有什么关系讲清楚。因为我在最初了解这个概念的时候,也一度把它想复杂了,甚至以为它是什么高深的算法框架。实际上,它就是一个结构化的知识/流程包,只不过它的触发方式和运行机制让它在AI工具链里表现得非常像一个“技能”。
2.1 skill和普通prompt到底差在哪里
普通prompt是“一次性”的。你写一段话,AI当时照着执行,下次你再写同样一段话,AI不会记得上次你是怎么优化的。而skill是“持久化”的:它以文件形式存在于项目里(通常是一个带固定结构的目录),AI能在合适的任务场景下自动识别并加载,也可以被你显式地调用。
另外,普通prompt是纯文本,而skill是结构化、多文件的。一个标准的skill通常包含这几个部分:主说明文件(用来描述这个skill是什么、在什么场景下使用、需要哪些输入)、配套的模板文件(给AI提供输出格式参考)、示例文件(让AI看到正确的“答案”长什么样)、以及检查清单(让AI在输出前自行核对有没有缺失项)。这种结构意味着一件事:你可以把非常完整的领域经验塞进skill里,而不需要在每次对话里重复输入。
我用一个更生活化的比喻来帮助理解。普通prompt像你打电话给客服,每一次都重新说一遍自己的问题和诉求,客服的水平还参差不齐;而skill相当于你交给AI一份《客服工作手册》,里面写清楚了“遇到投诉怎么办”“遇到查单怎么办”“回复话术该用什么框架”。AI收到你的任务后,先翻一下手册再动手,这样它的表现就从一个随机发挥的实习生,变成了一个受过训练、按流程走的标准客服。
2.2 skill的核心结构:不是随便一个文件夹就能叫skill
我最初踩的一个坑,就是以为所谓的“写skill”不过就是写一个很长的提示词文件,放到指定目录里就算完了。实际动手之后发现,一个能被工具稳定加载并产生效果的skill,文件结构是有讲究的。以我用的Codex环境为例,它的skill加载逻辑要求每个skill必须有一个标准目录名,目录里必须有说明文件,说明文件里要有明确的frontmatter(元信息区),用来告诉AI这个技能的名称、描述、适用场景、触发关键词。AI在接收到用户指令后,会根据指令内容去扫描所有skill的描述,自动判断是否需要加载某一个或某几个。
所以skill描述这个部分很关键。你写得太泛,AI会拿不准该不该用;你写得太窄,很多类似场景又触发不了。我这里给出的建议是:描述里一定要写清楚“什么时候用”和“不用时会有什么风险”。比如我写的测试用例生成skill,描述部分是这么写的:
“当用户需要为某个功能模块编写、补充或评审测试用例时使用。不适用的情况包括:需要执行自动化测试脚本、需要定位线上缺陷根因、需要评估测试覆盖率报告。目标是生成结构完整、覆盖常见边界、符合项目规范的功能测试用例。”
这样AI就能比较精准地判断加载时机,不会在无关场景里跳出来干扰。
2.3 写一个skill的三步设计法:定场景、定输入、定输出
理解skill机制之后,我先不管具体代码怎么写,而是用纸笔把三个问题想明白。第一个问题,这个skill要服务什么类型的任务,也就是场景;第二个问题,AI完成任务需要用户提供什么输入;第三个问题,AI最终交付物应该以什么格式、什么颗粒度呈现。
这三个问题里面,最容易翻车的是第三个。很多人写skill的时候把大量精力花在“教AI怎么思考”上,却忽略了“AI给出的结果应该长什么样”。但实际上,AI的输出格式是否稳定、字段是否完整,才是你后续能不能直接拿去用的关键。我自己在写测试用例skill的时候,输出模板就来回改了四版。第一版是纯文本列表,看起来清晰但没法直接导入用例平台;第二版改成了Markdown表格,信息完整了但缺优先级字段;第三版加了前置条件和用例类型,但是步骤和期望结果混在一行,平台导入仍然要二次加工;第四版才最终确定了“前置条件 + 操作步骤 + 预期结果 + 优先级 + 用例类型”五段式结构,并且在模板里给了明确的填写说明。
这部分工作做扎实了,后面再写指令文件就水到渠成。因为AI说白了是一个“高智商但缺乏常识的执行者”,你把输出格式约束得越具体,它的表现就越稳定。所以我不建议一上来就写一个长篇的提示词文件,而是建议先花半小时把场景-输入-输出这三件事在文档里写明白,再去落代码和指令,效率高很多,改起来也更有章法。
3. 实操:从零手写一个“测试用例生成”skill
说完了理论,接下来进入正题,也是大家最关心的部分——这个测试用例生成skill到底是怎么写出来的。我把整个过程拆成五个环节,每个环节都附上核心代码或文件结构说明,保证你跟着操作就能落地。
3.1 搭建标准目录骨架:让AI认识你的skill
第一步是建目录。不同的AI编程工具对skill目录的存放位置和命名规则略有差异,但整体思路一致。以Codex/Cursor这类工具为例,常规的做法是在项目根目录下建一个.ai/skills/或.cursor/skills/目录,也有用.claude/skills/的。我自己项目里用的是Codex,所以目录结构大致是下面这样:
project-root/ └── .ai/ └── skills/ └── test-case-generator/ ├── SKILL.md ├── templates/ │ └── test-case-template.md ├── examples/ │ └── login-module.md └── checklists/ └── final-review.md这里有几个细节要提醒你。第一,目录名建议用短横线分隔的小写英文,不要用中文或带空格的名字,否则某些环境下AI读取会有兼容问题。第二,SKILL.md 这个文件名在多数工具里是约定俗成的,不要随意改名。第三,templates、examples、checklists 这三个子目录并不是强制的,但强烈建议保留,因为它们是提升AI输出稳定性的关键。
3.2 写核心说明文件:重点不是“教”,是“约束”
接下来是重头戏,写 SKILL.md。这是AI理解和执行这个skill的核心依据。我在第一版写的时候,犯过一个典型错误:试图在SKILL.md里把“什么是测试用例”“等价类划分是什么”这些基础概念讲一遍,结果AI输出的内容反而变得非常啰嗦,像是培训教材。“为什么会出现这种情况”我后来理解了:AI认为你在教它基本概念,它会默认你希望它输出“教科书式的答案”,而不是干活。
所以第二版我把SKILL.md改成两个核心板块:一是skill的定位和触发条件,二是执行任务时必须遵守的具体约束。约束又分成三类:输入要求、处理要求、输出要求。
--- name: test-case-generator description: 为指定功能模块生成结构完整、业务贴合的功能测试用例。当用户需要编写、审查或补充测试用例时使用;涉及自动化脚本或缺陷定位时不使用。 --- # 测试用例生成技能 ## 任务目标 根据用户提供的模块描述、业务规则或相关代码片段,生成一份可直接录入用例管理平台的功能测试用例列表。 ## 输入要求 - 用户在首次调用本skill时,必须提供以下至少一项: - 功能模块名称及一句话功能描述 - 核心业务规则或字段约束 - 相关接口文档或代码文件路径(可选) - 如果用户输入信息不足,禁止自行假设业务规则,应先列出缺失项,请用户补充。 ## 处理要求 - 按模块类型识别用例设计维度,常见维度包括:正常流程、异常流程、边界值、权限控制、状态流转、兼容性、数据完整性。 - 每条用例必须包含:前置条件、操作步骤、预期结果、优先级、用例类型。 - 需要覆盖边界值时,必须考虑最小/最大值、临界值左右两侧、空值、超长值。 - 涉及状态流转时,必须画出状态迁移分析并覆盖非法状态跳跃。 - 不得编造不存在的规则;对用户未说明的部分,用“待确认”标记,而不是擅自假设。 ## 输出要求 - 输出为Markdown表格。 - 表格列为:用例编号、用例类型、前置条件、操作步骤、预期结果、优先级。 - 用例编号格式:模块名首字母缩写 + 三位流水号,如LOG-001。 - 每条步骤编号从1开始,多步骤用分号分隔,保持每个步骤是可以独立执行的明确动作。你注意到没有,SKILL.md里我没有写任何一句“你要好好思考”这种话,而是把关键词落在“必须”“禁止”“待确认”上。因为AI执行指令的时候,模糊的鼓励(比如“请仔细思考”)对结果几乎没有影响,反而会让它发挥空间变大;只有明确的行为约束,才能把它的输出拉到你预期的轨道里。这是我在反复测试后最大的一个认知转变。
3.3 定义模板和示例:让AI照着抄,而不是自由发挥
有了SKILL.md的约束之后,还要配套给AI提供输出模板和示例。很多人觉得这一步多余,认为AI只要看了指令描述就能输出正确格式,但实测下来并非如此。AI对“Markdown表格”的理解是有歧义的:它会认为只要是一个表格就行,列名、列顺序都可能跑偏。所以你必须给它一个具体的、完美符合要求的样例,它才能真正“对齐”。
我在 templates/test-case-template.md 里放了一个通用模板:
| 用例编号 | 用例类型 | 前置条件 | 操作步骤 | 预期结果 | 优先级 | |----------|----------|----------|----------|----------|--------| | LOG-001 | 正常流程 | 用户已注册且账号状态正常;已进入登录页 | 1.输入正确的用户名和密码;2.点击登录按钮 | 系统跳转至首页,显示当前登录用户昵称 | P1 | | LOG-002 | 边界值 | 已进入登录页 | 1.输入一个刚好6位的合法用户名;2.输入密码;3.点击登录 | 系统提示登录成功,正常跳转 | P2 |同时在 examples/login-module.md 里放了一个完整模块的用例集,大概十几条,覆盖正常、异常、边界、权限、状态流转几个维度。这一步的作用非常明显:AI在输出时,会不自觉地模仿示例的语气、颗粒度、描述方式,等于我们给它的“审美标准”定了锚。建议你在自己的项目里,也一定要放一个高质量的完整示例,宁可是虚构的、但结构必须完美,也不要随意从网上复制一个格式混乱的样例。
3.4 加入自检清单:让AI交卷前先自查
写检查清单,是我觉得整个skill里性价比最高的一个模块。它的作用是让AI在输出结果之后、交付之前,先按照清单逐项自查一遍,发现缺失或不完整的地方自己补齐。这样能显著减少因为“上下文漏读”“规则没写全”导致的结构性问题。
# 交付前自查清单 - [ ] 是否覆盖了正常流程、异常流程、边界值、权限控制、状态流转五个维度? - [ ] 每条用例是否都填写了前置条件、操作步骤、预期结果、优先级? - [ ] 操作步骤是否具体到“输入什么”“点击什么”,而不是“验证功能正常”? - [ ] 预期结果是否包含明确的系统反馈信息(提示文案、页面跳转、数据变化)? - [ ] 是否处理了用户提供的所有字段约束和业务规则? - [ ] 是否在缺失规则的地方使用了“待确认”标记,而不是编造? - [ ] 用例编号是否连续、格式统一?这个清单文件不需要太长,五到八条就够了。核心逻辑是:把你自己在Review用例时最常发现的几个问题前置,让AI在生成的当下就避免掉。实测下来,这个环节至少能让数据的合格率提升两成以上。
4. 实测效果:从30分钟到30秒,不是形容词,是实测数据
前面讲了这么多原理和写法,可能有人会觉得“你是不是在做概念包装?”所以这部分我直接摆数据,用同一个模块、两种方式(不用skill vs 用skill)做了一次严格的对照测试。
4.1 对照组:同一个“订单列表导出”模块的三轮对比
我选的测试模块是“订单列表导出”,这个功能在我们系统里属于典型的中等复杂度模块:涉及查询条件组合、角色权限、导出文件生成、状态回写、空数据处理、异常恢复六类场景。平时人工写用例大概要三十到四十分钟。第一轮不用skill,直接在对话里让AI“写一下订单列表导出的测试用例”;第二轮加载我写好的skill再生成;第三轮是在第二轮基础上让AI补充打印预览与导出历史相关用例。
三轮的实测数据如下:
| 对比项 | 直接让AI写 | 使用skill(第一版) | 使用skill(优化后) |
|---|---|---|---|
| 写作用时 | 8分钟(含原地等待和追问) | 35秒 | 28秒 |
| 生成的用例数 | 22条 | 41条 | 56条 |
| 需要人工修改的条数 | 11条 | 6条 | 3条 |
| 格式可直接导入平台 | 否,需要二次整理 | 是 | 是 |
| 覆盖“前提条件”字段 | 部分 | 全部 | 全部 |
| 涉及权限组合场景 | 0条 | 3条 | 5条 |
从这个表能明显看到,直接用AI并不是不能生成用例,但它生成的颗粒度偏浅、格式混乱,后续整理修改的成本接近重新写一遍;而用skill生成的结果,不仅条数翻倍,更重要的是大部分内容可以直接进入评审环节,我只需要对有业务歧义的3条做标注确认即可。单次写作用时从8分钟降到35秒是一个很大的提升,但如果你算上“不需要人工二次整理”的隐性时间,实际提效远不止这一点。
4.2 横向扩展:登录、权限、状态机三个模块是否有效
当时我也担心一个问题:是不是只有“列表查询/导出”这类通用功能才适合用skill?为了验证它的泛化能力,我继续拿登录认证、角色权限树、工单状态流转这三个模块各测了一轮。结果很意外,反而在“工单状态流转”这种状态机复杂、规则细碎的模块上,skill的收益最大。
原因是这类模块的用例设计很难,难在状态被遗漏、非法跳转没有被覆盖。而我在skill的“处理要求”里明确写了“涉及状态流转时,必须覆盖非法状态跳跃”,AI在生成的时候就会严格按照这个约束去挨个过状态,不会因为“忘了”而漏掉某条边。这比让人工来设计状态矩阵要省事得多,也比直接让AI自由发挥可靠得多。
用一个具体例子说明:我们的工单状态有“待分配、已分配、处理中、已解决、已关闭、已驳回”六个状态。人工写用例时,最常见的就是漏掉“已驳回 -> 已解决”这种非法跳转;而skill引导下的AI,会把所有两两组合的跳转合法性全部列出来,再标注哪些是合法路径、哪些需要报错提示。这个覆盖度是“直接问AI”很难达到的。
4.3 效率提升背后,真正的成本转移是什么
当然,我也要诚实地说明,30秒这个数据不是没有代价的。代价发生在你已经把skill写好、调优之后。第一次搭建这个skill,我大概花了三四个小时,包括设计结构、写SKILL.md、准备模板和示例、实测迭代。这个一次性投入如果只写一个模块,那纯属亏本买卖;但如果你每个月都要写几十个模块的测试用例,那这笔账就非常划算了——哪怕单个模块只省20分钟,我一个月就可以省出十几个小时。
这也是我想重点强调的一个观点:效率和工具解决的从来不是“单次速度”,而是“重复劳动的边际成本”。skill的价值不在于让你这一次快30秒,而在于以后每一次写同类用例,你都不必再从零开始“教”AI,不必再解释“前置条件怎么写”“优先级分几档”“编号格式是什么样的”。它把这些成本一次性固化进了skill里,后续每次调用的边际成本趋近于零。很多关于AI编程的效率文章,喜欢强调“提示词技巧”“上下文长度管理”,但真正能规模化提效的,恰恰是你有没有把经验沉淀成结构化的技能资产。
5. 避坑指南与经验沉淀:写skill容易踩的五个大坑
说实话,我写完这个skill之后踩的坑,比我顺利走通的路还要多。这里挑选五个最典型、最影响效果的问题,结合我的排查过程,整理成一份避坑速查,希望对大家有帮助。
5.1 坑一:SKILL.md写成了“百科教程”,AI输出变得啰嗦
症状是:AI生成用例时,每条用例前面都有一段原理说明,比如“本用例基于等价类划分方法,旨在验证系统对合法输入的有效处理……”导致整篇用例看着很专业,实际上根本没多少可执行的用例。排查下来发现,问题的根源就在SKILL.md里,我最初写了很多解释性文字去介绍“等价类划分”“边界值分析是什么”,AI在执行时会把这些我认为是“背景知识”的内容当作“输出要求”,导致它试图在输出里展示它懂这些概念。
解法很简单:SKILL.md只写“做什么”“怎么做”“按什么格式输出”,不写“为什么”“是什么”。背景知识可以留给你自己的知识库,给AI的信息密度越高越好。
5.2 坑二:表格格式漂移,列名顺序不稳定
有一次我让skill生成另一模块用例,结果输出的表格列顺序变成了“前置条件、步骤、预期结果、用例编号、优先级”,而且有些行的前置条件是空着的。我刚开始以为是AI抽风,后来反复测了几次才发现,是因为示例文件里那一列的内容恰好为空,AI就把“前置条件为空”当成了可接受的格式。这个问题的本质是:AI对格式的理解完全依赖你的样例,模板里出现一个不规范的地方,它就会放大这个不规范。
所以我后来优化了模板和示例,每条前置条件必须写具体内容,不给AI留“偷懒”的借口。同时我在SKILL.md里强制加了一句:“所有列都必须填写,不得留空;如无前置条件,写‘无’。”
5.3 坑三:处理特殊字符和长文本导致的渲染混乱
我们的业务规则里有不少“金额小于等于1000元”、“状态为已关闭或已驳回”这类含比较符号的文本,直接写进Markdown表格后,个别排版场景下会被解析出问题。另外之前在表格单元格里写“输入金额为999999999999”,这一长串数字在一些平台的渲染下会换行,影响阅读。
我的解决办法是:在输出要求中明确“不要在操作步骤里使用HTML标签”,并且涉及条件分支时,用“若A则B,否则C”的自然语言描述,减少对符号的依赖。如果必须包含“<”这类符号,就写成“小于”。虽然这让用例描述里中文占比高点,但换来的是跨平台渲染稳定,实际使用中更省心。
5.4 坑四:触发时机太敏感,无关任务也加载skill
初期我写的skill描述喜欢用“当涉及测试相关任务时使用”,结果AI把“这段代码有没有测试”“这个接口怎么测”这种泛泛的提问也归类到测试用例生成任务里,导致很多不相关场景下AI会跳出来问“是否需要生成测试用例”,非常打扰。
后来我按照官方模板的写法,把触发条件写得非常具体:只有当用户明确提出“编写测试用例”“补充测试用例”“评审用例”等动词时,才激活本skill;其他情况接近不启用。同时在描述里增加了“不适用场景”的负面清单。这一改,误触发率直线下降,skill的干扰性也就消失了。
5.5 坑五:没有版本管理,改崩了无处回退
这是我教训最深的一点。有一次我想优化输出格式,直接改了SKILL.md里的模板段落,结果改完之后AI生成的所有用例都缺少了“用例类型”这一列,当时在项目里又急着用,折腾了快一个小时才定位到是模板改坏了。如果我当时对skill目录做了版本管理,回退到上一版就是秒钟级的事。
所以强烈建议:给你的skill目录接入git,每一次修改都提交一次附带说明的commit。skill文件跟代码一样,是需要持续演进的资产,不是写一次就完事的东西。我目前的习惯是每个skill修改后都在提交信息里写清楚“本次改动调整了什么输出约束”,这样后续回看技能演进记录也非常清晰。
我的实际体会与建议
测试用例生成这个skill,算是把我从“重复劳动”里解放出来的第一个成功案例。之前我一直把AI定位成一个“对话式顾问”,每次有需要就问两句,也没想过要把它的能力沉淀成可复用的资产。但这次经历让我彻底转变了思路:真正值得花时间去经营的,不是某一次“有效的提问”,而是一套能反复使用、持续优化的工作流程。你花三四个小时写一个skill,后续就能长时间享受AI的稳定输出,这笔账随便怎么算都是划算的。
最后再分享一个我目前正在尝试的扩展方向。团队里除了功能测试用例,还有不少接口测试用例和自动化脚本的编写需求,我正在做第二个“接口用例生成”skill,把业务参数校验规则、鉴权方式、错误码处理逻辑这些约束也按同样的方式固化进去。如果效果稳定,之后再扩展到“测试数据构造”这个方向。做的时候我会继续沿用这一篇里的方法:先定场景,再定输入输出,最后用SKILL.md + 模板 + 示例 + 自检清单的标准结构去落地。这套方法在测试用例这个场景上已经被验证有效了,往其他测试相关的环节复制,理论上也不会差到哪里去。