前两天和一位做了八年测试的老同事聊天,他提到一个细节:他们部门2026年的校招笔试里,已经直接把“使用AI设计登录模块的测试用例”作为第一题。按他的原话,“现在招人如果还要测试我们自己教AI怎么测,那招聘这关就别过了”。我后来翻了翻几个主流招聘平台的岗位描述,“熟练使用AI编写测试用例”这一条,确实已经从“加分项”挪到了“必备技能”栏。对于还在观望的同学,这篇文章就是聊聊AI写用例这件事到底怎么落地:底层原理是什么、提示词该怎么设计、生成完的用例怎么转成可执行脚本、又会踩哪些坑。内容偏实操,适合正在补课的基础QA,也适合想往测试架构方向走的同学。
1. 2026年的测试岗:AI写用例为什么从加分项变成入场券
1.1 招聘和绩效体系里能看到的信号
我特意去翻了几家不同类型公司的测试岗位JD:互联网大厂、传统软件厂商、还有做汽车电子和智慧医疗的中型公司。前两年相关JD里写的是“了解AI辅助测试工具者优先”,今年基本都换成了“具备使用AI生成测试用例并落地执行的能力”。这不是措辞上的小调整,它意味着面试官会真的拿一个模块让你现场写提示词、生成用例、检验覆盖率。
除了招聘,绩效指标也在变。我认识的一些测试主管,2026年的OKR里已经出现了“用例产出中AI参与度不低于50%”或“核心模块用例生成周期缩短40%”这类条目。也就是说,老板默认你会用AI写用例,不会用的人在工作量对比上会非常被动。我自己测算过一个普通接口模块:传统手写用例从梳理需求到评审定稿,大概需要大半天;用AI生成初稿再人工修订,基本控制在半小时到一小时。在需求密集迭代的团队里,这个效率差是决定性的。
1.2 用例资产从“人写”变成“人养”
很多人把测试用例理解成一份文档,写完就完了。但在成熟团队里,用例其实是系统的质量契约:每个用例都定义了一个行为承诺,比如“用户输入错误密码时,系统必须给出通用错误提示且不暴露账号是否存在”。过去这份契约靠人一条条写,容易出现三个问题:写不全、写重复、写出来没人维护。
AI介入后,“写”这个动作被极大压缩,核心变成了“养”。你先定义清楚契约的边界和规则,AI负责按规则生成候选用例,你负责评审、筛选、修订。我举个状态机的例子:一个订单系统有8个状态、6种触发操作,人工画状态流转矩阵很容易漏掉“已取消订单再次支付”这种跨状态组合。AI在拿到状态定义后,会穷举所有可达的状态迁移对,把人工容易遗漏的组合自动补上。这时候测试人员的工作就变成了审核AI生成的迁移表是否符合业务规则,而不是自己从零去枚举。
1.3 不是取代,是重新拆分工种
我自己见过好几拨“AI写用例是不是要取代测试工程师”的讨论,结论其实很清晰:取代的不是工程师,而是工程师身上的重复劳动。以前一个初级测试一天写40条用例,现在AI一小时生成100条候选用例,初级测试的核心价值从“生产用例”变成了“判断用例是否值得保留”。
这会直接调整团队分工:让AI负责批量化的主流程用例、常规异常用例、格式校验用例,让人负责探索性测试、关键业务规则梳理、复杂缺陷分析。说得直白点,测试人员从“用例生产者”变成了“用例架构师和质量守门员”。谁先把这套工作方式跑顺,谁在2026年的市场上就更值钱。
2. 为什么AI能写用例?先搞懂生成机制再写提示词
2.1 大模型生成测试用例的三种机制
很多同学拿到AI工具后直接问“帮我写用例”,效果往往不好。根源在于不理解AI到底靠什么生成用例。我拆成三种机制来看:
第一种是模式复现。大模型训练语料里包含了大量软件测试公开资料,所以它对“登录应该测密码错误、验证码失效、账号锁定”这种常规测试点是天生熟悉的。它能很快给出通用的、标准的用例,这部分质量往往不差。
第二种是上下文推理。你给AI一段需求描述,它会基于这段文字推理出前置条件、操作步骤和预期结果。比如你说“会员每天只能领取一次优惠券”,它能推导出测试步骤要包含首次领取和再次领取两个场景,并且预期结果应该是不允许重复领取。
第三种是知识注入。这是最重要也最常被忽略的。AI并不知道你项目的真实接口字段、状态码含义、用户名规则,除非你把这些以提示词或上下文形式喂给它。很多翻车案例,比如AI生成用例时虚构了一个接口里根本不存在的字段,就是因为少了这一步知识注入。理解了这三种机制,你自然会明白提示词不是越短越好,而是信息越完整越好。
2.2 为什么“帮我写用例”这种问法基本白给
拿真实工作经验打比方:如果一个新同事问你“帮我写登录模块用例”,你一定会追问:登录走的是什么协议?账号体系有没有锁定策略?验证码是图形还是短信?有没有第三方登录?同样的道理,AI在没有任何背景信息时,只能输出一套“放之四海皆准”的通用模板。
我做过对比实验。同样一份登录需求,第一组提示词只写“帮我写登录模块的测试用例”,AI输出的是泛泛的账号密码校验、验证码错误、记住密码,看起来很多但无法落地,因为步骤里没有具体接口路径、没有测试账号数据、断言全是“系统提示成功”。第二组提示词加入了接口定义、参数说明和输出格式要求,AI生成的用例就变成了可以直接评审甚至直接转成自动化脚本的规格说明。差距不在AI,在输入信息的完整度。
2.3 一套可复用的“四段式”用例提示词模板
我现在的团队内部,提示词已经沉淀成了一套固定模板,四个段落:角色背景、输入材料、输出规范、方法要求。套用模板后,新人也能稳定地产出高质量初稿。
第一段给角色和任务定位:你是资深测试工程师,请针对以下需求设计接口测试用例。第二段给输入材料:需求描述、接口定义、字段说明、项目特定规则。第三段给输出规范:用什么格式输出,每条用例包含哪些字段。第四段给测试方法约束:必须覆盖等价类、边界值、状态迁移、异常场景。下面是一个我实际在用的模板:
角色:你是拥有10年经验的资深测试工程师。 任务:针对提供的接口需求设计测试用例。 输入材料: - 需求描述:用户通过手机号+密码登录,密码错误超过5次锁定账号30分钟。 - 接口定义:POST /api/login,入参phone(手机号,11位)、password(字符串,6-20位);返回code(0成功,1001密码错误,1002账号不存在,1003账号锁定)。 - 项目规则:手机号需是已注册账号;密码明文传输仅限测试环境。 输出规范:以JSON数组输出,每条用例包含id、title、precondition、steps、test_data、expected、priority。 测试方法要求:覆盖正常路径、等价类、边界值、异常输入、状态锁定场景、并发请求。这个模板的价值在于:每一条规定都在限制AI的自由发挥空间,让它输出的用例是“项目可用”而非“看起来专业”。
2.4 让AI按经典测试设计方法出题
AI生成用例时不会自动采用等价类划分、边界值分析、判定表、场景法这些方法,除非你在提示词里点名要求。我常用的做法是在模板末尾追加一段“必须采用的测试设计方法”。
边界值分析尤其要注意。AI默认会写出“输入错误的手机号”这种用例,但不会主动想到11位手机号的最小值是10位、最大值是12位,除非你明确要求“对每个入参字段执行边界值分析”。判定表适合多条件组合,比如“新用户+首单+优惠券有效”“老用户+首单+无优惠券”这些组合场景,人工推容易漏,AI在给定条件清单后能迅速成表。状态迁移则适合有状态流转的系统,比如订单、审批流、任务状态机。
所以我的建议是:提示词里不要只写“全面覆盖”,而是明确写上“请输出等价类和边界值用例若干、判定表用例若干、状态流转用例若干”。这样生成结果的结构更清晰,覆盖也更可查验。
3. 从需求到可执行:AI生成用例的完整落地流程
3.1 输入准备:把需求整理成AI能用的结构化材料
落地第一步不是开AI,而是整理输入材料。我发现很多团队AI用得不好,问题出在需求材料本身就是一张白纸。你让AI对着两行字的需求写用例,它只能猜。
我给团队的输入准备规范是“三条材料”:第一,功能需求描述,把用户场景、业务规则、状态流转写清楚;第二,接口契约或原型说明,涉及接口的模块必须给出路径、请求方法、入参、返回码;第三,项目特定约束,比如“手机号必须是已注册”“上传文件不能超过2MB”“优惠券和满减不可叠加”。这三块材料按前面提到的四段式模板拼装成一段提示词,AI的输出质量会瞬间上一个台阶。
如果你手上需求文档比较零散,可以先用AI帮你把需求要点抽取成结构化列表,再让AI基于抽取结果去生成用例。等于让AI先做一遍需求整理,再做一遍用例设计,两轮输出比一轮硬写的效果好很多。
3.2 实际跑一遍:登录接口的提示词和生成结果
以登录接口为例,我把提示词组织好发给AI,要求它按指定JSON格式输出。AI生成的结果大概是这样的:
[ { "id": "LOGIN_001", "title": "已注册手机号和正确密码登录成功", "precondition": "存在已注册手机号13800000001,密码正确", "steps": ["发送POST请求到/api/login", "参数phone=13800000001", "参数password=123456"], "test_data": {"phone": "13800000001", "password": "123456"}, "expected": "返回code=0,token字段非空", "priority": "P0" }, { "id": "LOGIN_002", "title": "密码错误时返回密码错误提示", "precondition": "已注册手机号13800000001", "steps": ["发送POST请求到/api/login", "传入错误密码"], "test_data": {"phone": "13800000001", "password": "wrongpass"}, "expected": "返回code=1001,提示密码错误", "priority": "P1" }, { "id": "LOGIN_003", "title": "连续5次密码错误触发账号锁定", "precondition": "已注册手机号,当前无锁定记录", "steps": ["连续5次使用错误密码请求登录", "第6次使用正确密码请求"], "test_data": {"phone": "13800000001", "password": "test1234"}, "expected": "第5次返回code=1003并锁定账号,第6次返回code=1003", "priority": "P1" } ]注意看第三条:AI前置条件、操作步骤、预期结果都给了明确数值,测试数据是可执行的,这就可以直接进入校验环节。
3.3 两道校验关:机器校验和人工评审
AI生成的用例不能直接进用例库,我坚持“先机器校验,再人工评审”。机器校验解决的是“格式和完整性问题”:用一段脚本检查每条用例是否包含必填字段、步骤是否至少两步、是否有断言、接口字段是否在契约里存在。字段级校验脚本不复杂,核心逻辑就是读入接口契约中的字段名,与用例里的test_data做比对,发现不存在的字段直接标记为“字段疑似幻觉”。
人工评审解决的是“业务正确性问题”。评审人重点看三点:前置条件是否符合业务实际、预期结果是否正确、用例之间有没有重复。比如AI可能生成“错误密码5次锁定”,但你们业务规则其实是“错误密码5次锁定且包含图形验证码错误次数”,这时候就需要人工修订规则描述后重新让AI生成,而不是手动改完就完事。
3.4 从用例到自动化脚本:让pytest直接执行AI生成的用例
2026年,AI写用例如果停留在Word文档层面,价值少了一半。真正让效率翻倍的做法,是把AI生成的JSON用例转成自动化框架能跑的脚本。以pytest为例,我会让AI直接基于接口定义生成参数化测试代码。
import pytest import requests API_URL = "https://test.example.com/api/login" # 用例数据由AI生成的JSON转换而来 cases = [ {"id": "LOGIN_001", "phone": "13800000001", "password": "123456", "expected_code": 0, "expected_token_not_null": True}, {"id": "LOGIN_002", "phone": "13800000001", "password": "wrongpass", "expected_code": 1001}, {"id": "LOGIN_003", "phone": "13800000001", "password": "test1234", "expected_code": 1003, "note": "连续错误5次后请求"} ] @pytest.mark.parametrize("case", cases, ids=[c["id"] for c in cases]) def test_login_case(case): resp = requests.post(API_URL, json={"phone": case["phone"], "password": case["password"]}) data = resp.json() assert data["code"] == case["expected_code"] if case.get("expected_token_not_null"): assert data.get("token") is not None这种做法的威力在于:AI生成的用例数据直接变成测试循环的输入,新增一条用例、调一个参数,都只是往cases数组里加一条记录的功夫。我实测过,把AI生成的JSON通过简单的Python脚本转成pytest参数化数据,半小时能完成过去一天才能搭好的基础回归脚本。Appium做移动端UI测试也是同样的思路,先让AI生成Appium支持的操作步骤和断言,再套进现有的PageObject框架里执行。
3.5 覆盖率校准:AI用例和人工用例怎么合流
生成完用例,别急着入库。我习惯做一张需求覆盖矩阵,横轴是需求条目,纵轴是用例ID,一格一格去核对。跑下来你会发现问题:AI用例集中覆盖主流程和常规异常,覆盖率大约能到70%左右,但往往缺时间相关的边界场景,比如“30分钟锁定期正好到期”“优惠券有效期截止当天23:59:59”,这类场景AI很少主动生成。
我现在的处理方式是在提示词里加一段“测试焦点清单”,把容易遗漏的边界人工列进去,让AI针对焦点逐条补充。比如“账号锁定到期时间边界”“并发登录同一账号时旧token是否失效”“请求超时场景”。这样等于把测试人员的经验以提示词的方式注入到AI的生成过程里,人机分工就变成了:AI负责量和常规覆盖,人负责焦点和经验输入。
4. 踩过来的坑:AI用例的五类典型烂用例与修正方法
4.1 幻觉型用例:虚构不存在的字段和接口
AI写用例最容易翻的车,就是生成一个接口里根本不存在的字段。比如插件的session_token_value,实际接口只在headers里传token,AI却在用例步骤里塞了一个“清除服务端session_token_value”的操作,人工不仔细看根本发现不了。
产生原因是模型在上下文不足时自行补全了它认为合理的字段。解决思路我前面提到了:一是把接口契约作为硬约束喂给AI,二是用机器校验脚本比对字段存在性。我给的判断标准很简单:用例里出现的每一个数据字段,必须能在接口文档或需求描述里找到出处,找不到的一律退回。
4.2 同义反复型用例:三条用例实际测的是同一个逻辑
AI生成50条用例,人工评审后留下20条,这种事经常发生。最常见的就是同义反复:比如“手机号为空”“手机号未填写”“不传手机号”三条用例,其实测试的都是同一个必填校验逻辑,只是AI换了不同描述。
我的去重方法是用步骤加断言做文本归一化后计算相似度。实际操作中不一定要写多复杂的算法,先用Python把steps和expected字段拼接起来做hash,相同的hash就是重复用例。更简单的方法是评审时问一句“如果这条用例删了,质量风险上升吗?”如果回答不了,基本可以判断是重复用例。
4.3 空转型用例:步骤和断言没有落到具体数据
AI生成的用例里经常出现这种步骤:“输入正确的手机号和密码,点击登录,验证登录成功”。看起来没问题,但“正确的手机号和密码”是什么?没人知道。这种用例无法执行,更无法自动化,纯属文字空转。
我要求AI生成用例时,所有测试数据必须显式写出,不允许用“正确的”“无效的”“存在的”这类模糊表述。同时我会在提示词里给出团队的测试账号池或数据模板,让AI优先用给定数据。这一步配合校验脚本,能过滤掉绝大多数空转用例。
4.4 边界盲区:并发、时间、环境类场景生成少
AI生成用例天然偏向功能逻辑,对并发压测、时间边界、环境切换这类场景生成得很少。我让AI为秒杀接口设计用例,它给的全是正常下单、库存不足、未登录跳转,唯独漏了“同一用户并发下单两个订单”这种情况。这类用例恰恰是线上事故的高发区。
对策是在提示词里主动追加“特殊关注”清单,把并发、超时、缓存、时间边界、幂等性这类关注点写进去。如果不追加,AI一个月也想不起来给你生成一条并发用例。
4.5 自说自话型断言:断言含糊到等于没断言
AI给出“预期结果:系统返回正确提示”这种断言,等于没有断言。“正确提示”是什么?状态码是多少?响应体包含哪个字段?全都没写。这种用例即使跑起来,断言也无法落地。
我在提示词输出规范里明确规定:预期结果必须具体到状态码、响应字段、数据库状态变化或界面元素状态,禁止使用“正确”“正常”“成功”等无约束词汇。如果AI违反这条规范,我会让它基于“具体断言要求”重新生成,而不是手工逐条改。
4.6 人机协同的节奏:AI出草稿,人做决策
把上面的坑都摸过一遍后,我总结了一个工作节奏:AI批量生成初稿阶段,人完全不干预,让它把量做上去;然后是人的“编辑-评审”阶段,要快速把同义反复、空转、幻觉用例删掉或标记整改;接着让AI按整改意见二次生成,再进入机器校验和人工评审循环。两三轮之后,用例质量基本可以达到入库标准。
这个过程里,人不是被AI替代,而是从“写手”变成了“编辑”。我的经验是,评审环节一定不能省,直接拿AI输出进用例库的团队,早晚会被幻觉型用例反噬。
5. 进阶玩法:多AI协作和Agent化测试用例的下一步
5.1 多AI协作:一个写、一个审、一个补
单个模型生成用例,无论多强,总有自己的盲区。我在2025年下半年开始尝试多AI协作模式,三个模型各司其职:一个负责生成初稿,一个负责扮演“红队”专门挑毛病,一个负责按测试焦点清单补盲。
操作起来很简单:生成模型先输出用例集合,红队模型拿到输出后回答“这组用例哪些字段在接口中不存在、哪些断言不具体、哪些场景重复”,补盲模型拿到需求和测试焦点清单后回答“哪些焦点没有被覆盖,请补充”。三份结果合并后,交人工评审。我用这个模式跑过一个支付模块,用例覆盖率和字段幻觉问题都有明显改善。关键收益是AI自己会指出自己的问题,减少人工评审的工作量。
5.2 Agent化潮流:让AI自己读代码、自己生成回归用例
2026年另一个明显的方向是AI Agent进测试域。过去AI生成用例需要我们把需求喂给它,现在Agent可以直接读代码变更、分析影响面、生成受影响模块的回归用例,并触发执行。
我建议想上车的同学先别急着搭大平台,从单模块Agent开始。比如让Agent监控某个核心服务接口的代码变更,变更后自动读取接口定义和变更日志,生成“本次变更有影响的用例集”并调用测试框架执行。跑通一个模块,再逐步扩展到多个服务和全链路场景。这个路径比一上来就搞“全自动测试平台”踏实得多。
顺着这个方向,需要补的知识也在变化:提示词工程只是一个起点,后面还需要懂测试设计理论、熟悉pytest和Appium这类自动化框架、会写简单的数据校验脚本,还要有“用例资产”运营意识,把自己积累的典型缺陷和用例模式沉淀成提示词库。安全测试、汽车电子、金融支付这些强约束领域,对AI生成用例的校验要求更严,反而是懂业务又懂AI的人最吃香的战场。
2026年这个节点,“会用AI写用例”已经不需要争论了,真正拉开差距的是能不能把AI生成的用例变成可执行、可维护、可追溯的质量资产。我自己的体会是,AI写用例这件事最难的从来不是工具,而是你想清楚自己要什么规则、什么边界、什么断言。把这些定义清楚,AI就是那个替你把手速放快十倍的人。
最后分享一个我一直在用的小技巧:不要把提示词当成一次性输入,把它当成产品来迭代。每次在评审中发现AI反复犯同一类错误,我就把对应的修正规则追加进团队提示词库,比如“禁止使用模糊断言”“所有数据字段必须来自接口契约”“必须覆盖并发类场景”。提示词库越厚,AI生成的初稿质量越高,人需要做的修改就越少,这才是2026年测试核心竞争力真正的来源。