最近和团队里几个测试同学聊AI落地,大家吐槽最多的不是AI不好用,而是“生成的用例根本不敢用”。业务需求丢给大模型,它倒是秒回,可仔细一看,路径覆盖不全、边界值漏掉、断言写错位置,真要落到自动化脚本里就是给自己埋雷。这不是AI能力不行,而是提示词工程被严重低估了。测试工程里,提示词工程不是让AI帮你临时想一段话,而是把AI的输出能力纳入测试资产的沉淀链路,让每一次调用都可控、可复用、可评估。
这个系列我打算完整拆一遍自己在测试工程里搭AI提示词体系的思路,包含为什么测试场景需要一套不同于日常聊天的提示词框架、五个核心要素怎么设计、测试用例/接口脚本/缺陷分析/测试报告这些高频场景的实用模板、上下文工程和多AI协作的进阶玩法,以及团队落地时踩过的坑和排查方法。适合正在把AI接入测试流程的测试开发、测试负责人,也适合对提示词工程只停留在“写个角色设定”阶段的同学。
1. 为什么测试工程需要一套提示词体系,而不是“问一问就行”
1.1 测试场景对AI输出有完全不一样的要求
日常用AI聊天,问错了可以重来,答得模棱两可也能凑合看。但测试工程不一样,测试资产是要沉淀、要评审、要执行的。一条测试用例写漏了边界条件,自动化脚本断言写错了,缺陷分析给错了排查方向,这些错误可能不会当场暴露,等上线出问题的时候代价就大了。
我在实战中总结下来,测试场景对AI输出有四个硬性要求:可追溯、可验收、可重复、可量化。可追溯指的是AI给出的每条结论或用例都能对应到输入的业务规则;可验收指的是输出格式必须符合测试团队既有的模板规范,能直接进评审流;可重复指的是同一个需求,今天问和明天问,换个人问,结果不能漂移太多;可量化指的是AI生成的质量能用通过率、有效用例比例这些指标去评价。这四点日常闲聊式的提示词完全做不到。
1.2 没有体系时,测试提示词最常见的三种漂移
第一种是角色漂移。同一个需求,你今天让它“作为资深测试工程师”写用例,明天忘了加角色,它可能就按产品经理的口吻写需求描述,出来的东西完全没法用。第二种是格式漂移。AI第一次输出还规规矩矩是表格,第二次你只是改了需求描述,它突然改成纯文本列表,字段还缺了一大半。第三种是深度漂移。同样一个接口文档,有时候它给你覆盖了异常流程和边界断言,有时候只写了“200状态码就算通过”这种毫无意义的内容。
这三种漂移的本质原因是一致的:提示词没有限定清楚任务的边界和验收标准。提示词体系说白了就是给AI立一套“工作规矩”,设备差一级,这规矩越好使。
1.3 一套可落地的提示词体系长什么样
我搭建这套体系的时候,参考了测试团队日常的工作台账。提示词不再是一次性的提问语句,而是分成三层:基础层是角色与通用规则,类似团队的质量规范;任务层是针对具体场景的任务指令,类似测试计划里的任务说明;输入层是每次调用时动态填入的业务上下文,类似执行测试时传入的测试数据。这三层组合起来,就形成了一套可以在团队里复制和维护的提示词资产。
这不是什么理论创新,本质上就是把“需求评审、用例设计、用例执行、结果分析”这套测试流程中人类工程师的思考方式,翻译成大模型能理解的指令结构。我后面会详细讲每个要素怎么定。
2. 提示词五要素框架:先搞清楚AI是怎么“听懂”的
2.1 五个要素各自解决什么问题
我自己的实战框架是按角色、任务、上下文、输出约束、校验反馈五个要素来组织提示词的。这五个要素不是拍脑袋定的,是踩了很多次输出质量不稳的坑之后反推出来的。
角色要素解决的是立场问题。它告诉AI“你是谁、以什么视角回答”。测试工程里这个要素尤其重要,因为“产品经理”、“开发”、“测试”对同一个需求的关注点完全不同。任务要素解决的是目标问题。它必须说清楚“到底要产出什么”,而不是模糊地说“帮我看看”。上下文要素解决的是信息问题。AI不是业务专家,需求文档、接口定义、日志原文都要主动投喂,指望它自己“领悟”是不现实的。输出约束解决的是标准问题。格式、字段、编号规则、禁止项,这些必须在提示词里写死。校验反馈解决的是闭环问题。一次对话结束后,要把AI的输出质量反馈给它,让它下一次调整。
五要素里最容易忽略的是输出约束。我见过太多人写了前三项,结果AI输出一坨自由发挥的文本,测试用例不写编号,断言写得含糊其辞。输出约束本质上是给AI戴了一个“格式紧箍咒”,让它把创造力收敛到测试工程需要的框架里。
2.2 五要素框架背后的模型机制
大模型生成回答的底层机制是“根据前文所有token预测下一个token”。提示词就是前文,你的每一个约束都在改变后续token的概率分布。角色定义把概率分布拉向目标人群的用语习惯;任务描述把输出重心推向具体动作;上下文输入给模型提供了事实依据,减少它胡编的空间;输出约束锁死结构和格式;校验反馈则是二次对话时用“前一轮输出哪里不合格”来校准模型的行为。
理解了这个机制,你就会明白为什么“把需求文档复制给AI让它写用例”这种做法效果这么差。需求文档本身有大量与测试无关的信息,比如市场背景、竞品分析,这些内容会稀释模型对测试任务的注意力。所以上下文必须经过筛选,只保留业务规则、输入输出约定、异常场景描述这些真正影响用例设计的段落。这也是提示词工程里最考验经验的地方。
2.3 框架怎么做到“换模型不翻车”
很多团队会纠结用哪个大模型,今天用这家明天换那家。我的经验是,一个写得好、结构完整的提示词,在不同模型之间迁移时虽然效果有差异,但不会彻底跑偏。原因在于五要素框架假设的是“模型需要明确指令才能稳定输出”,这几乎是所有主流大模型的通性。
我在迁移过程中发现一个规律:模型能力越强,对角色和输出约束的依赖越弱,但对上下文质量的要求越高;模型能力弱一些的,就更吃角色设定和格式约束。所以如果你团队里有多种模型并用,建议把提示词按“框架统一、参数微调”的方式管理,框架层大家都一样,细节层针对具体模型调格式约束的强度。这样既保证团队内部沟通不混乱,也避免了绑定单一模型的风险。
3. 测试工程核心场景的提示词模板库:拿来就能改
3.1 测试用例生成:把业务规则变成可执行用例
用例设计是提示词应用最频繁的场景。我给出一个经过多轮优化后比较稳定的模板,它包含角色、任务、动态上下文、设计规则和输出格式约束,直接复制就能用:
# 角色 你是一名资深测试工程师,擅长功能测试、接口测试和自动化测试用例设计。 # 任务 根据我提供的业务需求,输出一份可直接评审的测试用例表格。 # 业务需求 {paste_business_requirement} # 设计要求 1. 覆盖正常流程、异常流程、边界情况 2. 对枚举值和范围值做等价类和边界值分析 3. 每条用例必须包含:用例编号、前置条件、测试步骤、输入数据、预期结果、优先级 4. 用例编号规则:TC-{模块}-{三位序号} 5. 禁止空泛断言,预期结果必须给出具体可观察的状态或数据这个模板里最关键的是设计要求和格式约束。“禁止空泛断言”是我加进去后效果提升最明显的一句,没有它AI经常写“系统正常运行”、“页面展示正确”这种无法验收的断言。有了这句,它会老老实实写“页面跳转至订单列表,列表首行为订单号XXX的记录”这种可验证的结果。
等价类和边界值分析方法写进设计要求,也是基于实际教训。早期模板没提这个方法,AI生成的用例大量集中在正常路径,异常流和边界几乎不覆盖。后来我把分析方法直接点名,输出质量立刻上了一个台阶。现在团队新同学拿到这个模板,哪怕是刚转行的,也能生成比很多三年经验工程师更规范的初稿,评审时只需要做增量补充。
3.2 接口测试脚本生成:让AI替你写断言而不是替你猜业务
接口自动化这块,AI最大的价值是省去写样板代码的时间,最大的风险是生成一堆断言了但又等于没断言的脚本。很多AI默认生成的脚本只会断言HTTP 200,业务码、关键字段、数据核对一概不管。我的模板里用输出约束把断言点锁死:
# 角色 你是Python接口自动化开发工程师,熟练使用pytest和requests。 # 任务 根据接口文档片段,生成可直接运行的pytest用例脚本,使用断言校验接口响应。 # 接口文档 {paste_api_doc} # 代码要求 1. 使用requests.Session管理公共请求头 2. 对响应状态码、业务码、关键字段分别做断言 3. 数据驱动部分用@pytest.mark.parametrize提取到参数列表 4. 不生成测试数据文件,测试数据内联在脚本里 5. 输出完整Python代码,不要解释使用时有几个细节要特别注意。接口文档片段不要直接贴整篇几十页的文档,只需贴出本次要测试的接口定义、请求示例、响应结构,上下文信息过载反而会让模型分心。另外,生成脚本后必须让AI“自检”一遍,你可以追加一条提示“检查上述脚本中每一条断言是否都有对应的响应字段,补全遗漏断言”,这个二次调优动作能让脚本质量再上一个台阶。
断言数量不能贪多。“对关键字段做断言”和“对每一个字段做断言”是两码事。字段全断言会让脚本脆弱不堪,后端加一个非关键字段脚本就红了。所以模板里写的是“关键字段”,具体哪些算关键字段,经验不足的人可能判断不准,初期可以让AI先按“响应码、业务码、核心数据字段”自动识别,人工评审时再调整。
3.3 缺陷根因分析:日志、堆栈和上下文怎么投喂才有效
缺陷分析是提示词应用里见效最明显的一个场景。以前一个线上问题定位要翻日志、查链路、试复现,现在把关键材料整理好丢给AI,它能快速给出一份按概率排序的根因清单和验证方案。但材料投喂的顺序和方式直接影响结果质量。
我常用下面这个模板:
# 角色 你是一名具备分布式系统排障经验的测试开发工程师。 # 任务 基于我提供的日志和错误堆栈,分析缺陷的可能根因,输出排查建议。 # 输入材料 ## 复现步骤 {paste_steps} ## 错误堆栈/日志 {paste_log} ## 环境信息 {paste_env} # 输出要求 1. 按可能性排序列出3个最可能的根因 2. 每个根因给出判断依据,引用日志原文 3. 给出验证方法,每步都要有可执行的命令或操作 4. 如果信息不足,明确列出还需要补充哪些日志或数据这个模板的核心技巧在于“按可能性排序”和“引用日志原文”这两条。“按可能性排序”强迫AI一上来就给出有主次的判断,而不是各打五十大板罗列一堆可能原因。“引用日志原文”是防AI胡说八道的关键手段,它必须从你给的日志里找证据,而不是从训练数据里找一个看起来像的答案。
另一个很实用的小技巧:日志不要整段塞进去,上下文超长会导致模型丢失关键信息。先粗略读一遍日志,把时间线、关键错误码、异常堆栈前几十行截出来,按“错误发生前、错误发生时、错误发生后”三段组织。这样AI的注意力能集中在有效信息上,分析质量明显提升。这个习惯也倒逼测试工程师把日志阅读能力练起来,不然你连截取哪些日志都不知道。
3.4 测试报告生成:AI只做整合,不做编造
测试报告是AI幻觉重灾区。很多同学把一堆执行数据丢给AI,让它“写周报”,AI为了显得完整,会自己补几个“通过率85%”这种编出来的数字。测试报告是要给项目组决策用的,数据错了比没有报告更可怕,所以我的模板里把防编造写成了硬性约束:
# 角色 你是测试团队负责人,需要向项目组输出周维度测试报告。 # 任务 基于我提供的测试执行数据,生成一份无冗余、可追溯的测试报告草稿。 # 数据输入 {paste_execution_data} # 报告结构 1. 测试范围与执行概况 2. 用例执行统计(通过/失败/阻塞/未执行,附真实数字) 3. 缺陷分布(按模块/严重程度/状态) 4. 风险与阻塞项 5. 下周计划 # 硬性要求 1. 所有数据必须来自我提供的数据,禁止自行推算或编造数字 2. 凡是我没提供的数据,标注"待补充" 3. 结论只做描述性总结,不写猜测性原因我在实际执行中还会在把数据交给AI之前,先在外部自己算一遍通过率、缺陷密度这些核心指标。这样做有两个好处:一是喂给AI的已经是整理过的半成品,它再加工时犯错概率低很多;二是你心里有数,AI输出后一眼能看出哪里对不上,不用它说什么就信什么。测试报告这种场景,AI真正适合干的活儿是把零散数据组织成有逻辑的叙述,而不是代替你做分析。
4. 上下文工程与多AI协作:测试场景的进阶玩法
4.1 上下文窗口是有限的,别把需求文档整本丢进去
提示词工程做到后面,瓶颈往往不是提示词本身,而是上下文管理。大模型的上下文窗口看着很大,看起来能塞下几万字的文档,但实际上有效注意力会随着长度增加而衰减。你塞了八十页需求文档进去,AI读到后面已经把前面的关键业务规则忘了,输出自然就跑偏。
我现在的做法是“先粗筛后精喂”。拿到需求文档先人工提取或者用AI粗筛一遍,只保留这几类内容:功能清单、业务规则、输入输出约束、异常流程、权限说明。页面交互细节、视觉规范、历史变更记录这些与测试设计弱相关的内容直接丢掉。这类似于测试设计里“测试对象分析”那一步,先明确哪些信息影响用例设计,再决定投喂什么。
上下文不够的时候还可以做外挂检索。把历史测试资产和知识库切片存好,遇到新需求时先检索相关历史用例和问题记录,再把这些检索结果拼进提示词里。这一套做下来等于给大模型配了一个“测试知识库”,效果比单纯加大模型上下文靠谱得多。
4.2 系统提示词、Skill 与 Agent:三个层级分清楚
现在社区里讨论很多的一个问题是“系统提示词工程和Skill Agent有什么区别”,我在测试工程里的理解是它们压根不在一个层级。
系统提示词解决的是“这个AI整体上以什么身份和规则工作”。测试团队如果接入了统一的AI测试助手,系统提示词里会约定它的质量基线,比如“所有输出必须符合公司测试规范”、“不得编造测试数据”,这些都是全局约束,对所有任务生效。Skill是给AI装配的专项技能包,类似一个“工具箱”。比如“接口测试脚本生成Skill”里面封装了pytest脚本规范、常用断言写法、接口测试检查清单,AI一旦调用这个Skill,输出就会自动带上这套技能标准。Agent则是把决策和执行串起来的形态。AI拿到一个测试任务后,自己判断需要调用哪些Skill、分几步完成、每步产出什么,像一个能跑流程的虚拟测试助理。
打个生活化的比方:系统提示词是员工手册,Skill是岗位工具包,Agent是会自己安排活路的实习生。测试团队落地的时候,可以先从系统提示词和Skill两个层面入手,Agent适合在有明确流程、且人工兜底的场景试点,不要一上来就放权。
4.3 多AI协作:一个发散,一个收敛
多AI协作是我最近用得越来越多的模式。单个AI在测试场景里容易“一条道走到黑”,比如让它写异常测试用例,它可能翻来覆去写类似的场景。协作模式可以打破这个局限。
我常用的搭配是“发散模型+收敛模型”。发散模型负责头脑风暴,不限定太多约束,让它尽可能多地列出某个模块可能出问题的场景、风险点、边界情况,产出的是原始素材池。收敛模型再把素材池结合业务需求进行筛选、分类、编排,产出一份结构化的测试用例集。相当于一个AI出点子,另一个AI做评审和整编,效果比单个AI硬写要好很多。
这个模式还有一个隐藏价值:收敛模型的提示词里可以夹一条“对素材池中不符合业务逻辑的场景进行标记并说明原因”,这相当于让AI做了两轮用例评审,能识别出很多发散阶段的不切实际的用例。我在支付模块和权限模块试过,异常场景覆盖率提升了大概三成,而且每条用例都有来源可追溯,评审会上解释起来也轻松。
5. 测试提示词实战中的翻车现场与排查技巧
5.1 典型翻车场景与排查方向速查
用得多了自然会有翻车的时候。我把最常见的几种问题整理成了一张速查表,团队里排查问题的时候直接对照来,就不用每次从头开始试。
| 现象 | 可能原因 | 优先排查方向 |
|---|---|---|
| 输出格式忽好忽坏,有时有编号有时没有 | 输出约束写得不够具体,或约束位置太靠后 | 把格式约束提到任务描述之后,用“必须”句式 |
| 生成了大量正常用例,边界和异常少 | 提示词里没明确要求覆盖方法 | 补充等价类/边界值/错误推测法等分析方法指令 |
| 断言写得空泛,如“结果正确” | 缺少禁止空泛断言的反向约束 | 增加“禁止……”句式,要求给出具体可观察结果 |
| 引用了不存在的数据或数字 | 上下文输入不足,模型靠训练数据补全 | 检查数据输入完整性,并加“禁止编造”的硬性约束 |
| 换了一个模型后效果明显下降 | 提示词对这个模型的格式约束强度不足 | 增强输出约束和示例引导,必要时加few-shot示例 |
| 长上下文后输出开始跑题 | 输入信息过载,关键内容被稀释 | 精简上下文,按“关键信息前置”原则重组材料 |
这里面最容易被忽略的是“关键信息前置”。模型对提示词前部信息的敏感度通常高于尾部,尤其上下文较长的时候,尾部约束容易“丢失”。所以重要约束要往前提,或者开头和结尾各放一遍。这就像写测试计划,核心风险一定放在前面醒目位置,不能埋在附录里。
5.2 提示词调优的迭代方法:从“能用”到“稳定”
提示词写出来第一版就能稳定产出高质量结果,这种情况我很少遇到。正常路径是快速出初版、批量验证、针对性调优、回归验证,四个步骤反复循环。每一步都有一个关键动作。
快速出初版阶段,不要追求完美,只要要素齐全、约束明确就投喂一次看结果。批量验证阶段是重点,找五到十组有代表性的历史需求,用同一套提示词跑一遍,统计有效输出比例。这个阶段能暴露出大部分问题。针对性调优要一次只改一个变量,改了输出约束就不要同时改角色设定,否则你分不清哪个改动起了作用。最后一轮回归验证,用之前跑过的同一批需求再跑一遍,确认优化没有引入新的回归问题。
调优时有一个判断原则我特别想强调:AI输出质量差有两种原因,一种是指令不清,一种是模型能力不足,前者的调整方向是优化提示词,后者的调整方向是换模型或者把任务拆小。怎么区分?你把同一段提示词在多个主流模型上跑一遍,结果都拉胯,说明指令本身有问题;只有一个强模型跑得好,弱模型全崩,说明任务超纲了,需要拆分。这个判断方法能帮你少走很多弯路。
5.3 衡量提示词质量的量化指标
说提示词效果好不能靠感觉,尤其要推动团队使用的时候,必须有量化指标来衡量。我目前用的指标有三个,比较简单实用。
第一个是有效用例率,AI生成的用例里经过人工评审、无需重大修改就能直接使用的比例。第二个是断言覆盖率,接口脚本中有效断言数量占应断言关键字段数的比例,这个可以结合代码评审去估算。第三个是首轮通过率,在模板不调整的情况下,第一轮AI输出就能达到团队交付标准的比例。首轮通过率是最直观的一个指标,团队提示词体系成熟后,这个值一般能做到百分之六七十以上。
有了这组指标,提示词的优化就变成了一件可以管理的事情。比如团队本月首轮通过率只有百分之四十,你去翻记录,发现三分之一的失败都出在同一个场景的提示词上,那就集中优化那一个场景的模板,而不是大动框架。这个思路和缺陷管理里按模块分析缺陷密度是同一个逻辑。
6. 把提示词变成团队资产:落地推进的几点建议
6.1 提示词也做版本管理
很多人写提示词都是本地随手存一个文本文件,改来改去最后自己也分不清哪个是当前版本。提示词的质量直接影响测试产出质量,它应该和测试用例一样纳入版本管理。
我的建议是每个提示词模板单独一个文件,包含版本号、变更历史、适用场景、已知限制、示例输出五个部分。变更历史至少要记清楚“改了什么、为什么改、谁改的”。比如“v2.1:在接口脚本模板的代码要求中增加数据驱动说明,解决参数化缺失导致的重复脚本问题”,这样的记录让后续接力的人能够快速理解演进过程。把这个说明写成一段话更自然:“v2.1这版改动是...
版本管理工具不需要复杂,用Git仓库就能满足需求。模板的更新要走评审,至少要有一个人复核,避免某个人凭个人喜好改动影响全团队。
6.2 建一个团队公共提示词库
提示词库是团队AI能力沉淀的重要载体。我建议按场景建目录,测试用例生成、接口脚本生成、缺陷分析、测试报告生成、测试数据构造、用例评审这些常用场景各建一个目录。每个场景下再按业务线或技术栈拆分。
团队公共提示词库有几个硬要求:模板必须经过实战验证,不能把AI跑过一次结果不错就算上线,至少要经过五个以上需求验证;模板必须配套示例输入和输出,方便新人理解用法;模板必须定期复审,每季度把团队积累的问题反馈合并进去。一个好的提示词库,能让新同学入职第二周就产出接近老员工的AI辅助测试质量,这对团队效率的提升是非常明显的。
6.3 先用两条线跑起来,再全面推广
团队落地不要一上来就要求全员使用,我推荐先选两条线做试点。一条线选用例设计,因为它是测试团队每天都要干的事,反馈周期短,效果好;另一条线选缺陷分析,因为它的成果容易被感知,解决一个线上问题的效率提升,团队从上到下都能看到。
试点期间要收集两组数据,一组是效率数据,比如单条用例设计耗时、单份缺陷分析报告耗时;另一组是质量数据,比如用例评审打回率、有效用例率。对照试点的前后数据,用实际效果说话。我还记得团队试点时,老员工一开始抵触,说“AI生成的东西我不放心”,后来发现用模板生成用例初稿,再在上面做增量修改,比自己从零写省一半时间,就再也没人提抵触了。
推广阶段要特别注意“工具辅助而非替代”的定位,AI是帮测试工程师把初级工作做掉,把时间腾出来做测试策略、风险分析这些更有价值的事,而不是让测试团队显得可有可无。这个定位想清楚,推广的阻力会小很多。
我自己现在每天的工作流里,AI已经是标配。用例设计和接口脚本这类重复度高的产出,先跑一遍AI模板再人工评审精修,整体效率大概提升了四成。缺陷分析遇到棘手的日志和堆栈也会先丢给AI做一轮可能性排查,再自己验证它给出的线索。踩过几次坑之后,我最大的体会是提示词工程的本质不是写出一段“魔法咒语”,而是想清楚你期望AI扮演什么角色、拿什么信息、按什么标准产出什么结果。希望这套从实战里磨出来的体系,能让你少走一些我走过的弯路。