
在测试这个圈子里摸爬滚打十几年我越来越觉得测试流程里最耗人的往往不是“测”这个动作本身而是为“测”做准备的那些琐碎环节啃需求、列测试点、补边界条件、造测试数据、写自动化脚本、整理测试报告。这两年AI大模型起来之后我试着把这类工作系统地交给AI实测下来一个中等规模的接口测试项目从拿到需求到产出可执行脚本时间能压缩一半以上而且漏测情况没有明显恶化。这篇文章想聊的不是“AI会不会取代测试工程师”之类的焦虑话题而是我自己已经跑通的一套让AI嵌入现有测试流程的具体做法哪些环节适合交给AI、提示词怎么写、模型怎么选、本地部署还是调用API、有哪些坑必须提前避开。内容主要围绕功能测试和接口自动化测试展开对性能测试、安全测试也有涉及适合正在做功能测试、自动化测试以及刚接触AI辅助工具的测试同行参考。1. 先想清楚AI在测试流程里的真实定位1.1 AI的第一价值是压缩“准备时间”很多人一听说AI赋能测试第一反应就是让AI自己去跑用例、报缺陷。但以我实际使用的经验来看现阶段AI大模型在“自主执行测试”这件事上还远不够可靠它最擅长的其实是理解和生成文本。而测试流程里恰好有大量跟文本打交道的环节——需求文档、测试点、用例步骤、缺陷描述、测试报告这些都是AI的舒适区。我统计过自己团队的一个项目周期一个包含20个接口的后端服务从需求评审到提测测试人员花在需求理解、用例设计、数据准备上的时间大概占六到七成真正执行用例的时间只占三到四成。也就是说如果AI能把前面那些文本类工作压缩掉一半整个测试周期就能缩短30%左右。这个账算清楚之后你就不会纠结“AI能不能替我点按钮”这种问题了——先把准备时间的效率提上来才是AI赋能测试最实在的切入点。我把适合AI介入的工作分成三类理解类需求分析、歧义识别、测试点提取、生成类用例编写、脚本编写、数据构造、分析类缺陷定位、日志摘要、报告整理。这三类有一个共同特点输入和输出都是文本中间有明确的逻辑规则AI模型经过足够上下文约束后产出质量可以达到初级测试工程师的水平。1.2 哪些环节适合交给AI哪些必须自己做先说不适合AI做的事情这些必须靠人来兜底最终决策某个缺陷算不算Bug、上线前要不要放行这种责任问题不能交给AI。环境相关判断AI看不到你的真实服务器状态、网络拓扑、中间件配置环境类问题它只能猜。需要真机交互的复杂操作移动端复杂手势、硬件联动、音视频质量评估这些AI现阶段还难以自主完成。适合AI介入的环节则非常明确我整理了一个分工表流程环节传统做法AI介入后的做法效率提升点需求评审人工通读PRD、找歧义AI按角色模拟多方提问生成需求澄清清单减少需求理解偏差测试点设计靠经验罗列功能点AI基于需求描述拆解正常流、异常流、边界流降低漏测风险用例编写手工写步骤和预期结果AI生成结构化用例人工补充业务约束用例产出速度快测试数据准备手工造数、翻数据库AI生成SQL构造脚本和边界数据组合减少造数时间自动化脚本手工写pytest/Java代码AI生成脚本模板人工review和调参脚本初稿效率高缺陷分析人工翻日志、看堆栈AI聚类相似缺陷、总结日志关键信息定位问题更快测试报告手工汇总模板AI根据用例执行结果生成报告草稿收尾工作更轻松这里要特别强调一点AI介入后测试人员的核心技能会从“怎么写用例”慢慢转变成“怎么问AI、怎么review AI的产出”。这和带新人很像——你不需要替新人把每件事都做完但你得能判断他交上来的东西对不对。AI就是一个永远不会累、但偶尔会一本正经胡说八道的“新人”所以review这个动作永远不能省。2. 一个可落地的AI辅助测试全流程方案2.1 需求阶段用AI把需求文档变成测试点清单我在实际项目里最常用的一个提示词套路是把AI当成一个“较真的评审同事”。传统需求评审会上大家经常碍于面子不提问题但AI没有这个顾虑。我给AI的提示词一般长这样你是一名资深测试工程师现在需要评审下面的产品需求。 请完成以下任务 1. 按角色普通用户、管理员、游客拆解每条需求对应的功能点 2. 对每个功能点列出正常流程、异常流程、边界条件三类测试点 3. 找出需求描述中可能存在歧义、缺失、矛盾的地方用提问句式列出 4. 对涉及数据状态变化的功能标注前置条件和后置条件 需求文档 【这里粘贴需求文本】 输出格式使用Markdown表格测试点编号必须可追溯例如“TC-01-01”对应“用户角色-功能点-序号”。这个提示词的关键在于“输出格式可追溯”。刚开始我写提示词时没有加这条AI给出的测试点是一堆发散的想法看着很全但没法对应回需求原文review和后续用例追溯都很麻烦。加上可追溯编号之后AI生成的测试点清单就能直接进入用例管理工具了。真实项目里我还加了一个“角色扮演”的技巧让AI分别扮演开发、产品、测试三个角色对同一段需求各提三个问题。开发角色关心的是技术实现是否明确产品角色关心的是业务目标是否达成测试角色关心的是验收标准是否可验证。三个角色的问题合并去重后基本就是一份高质量的需求澄清清单。用这个办法我在一个后台权限系统的需求阶段提前发现了8个需求歧义点其中3个在开发阶段就改了设计避免了后面返工。2.2 用例设计从测试点到可执行用例的转换有了测试点清单下一步是把测试点展开成真正的测试用例。这一步也有固定的提示词套路。我通常会把需求原文、测试点清单、项目用例模板一并丢给AI让它按模板产出。请把以下测试点展开为详细测试用例要求 1. 每条用例包含用例编号、所属模块、前置条件、测试步骤、测试数据、预期结果、优先级 2. 测试数据必须具体不要写“合法数据”这种模糊描述要给出实际的输入值 3. 对涉及时间、金额、数量的场景至少补充一个边界值用例 4. 用例步骤控制在3到8步之间步骤动词要明确点击、输入、选择、提交 5. 如果测试点之间存在依赖关系在“前置条件”中注明 测试点清单 【粘贴测试点】 用例模板 【粘贴贵司用例模板】这一步我在两个地方踩过坑。第一如果用例模板有固定的编号规则必须写进提示词里否则AI会自己发明编号后面导入管理系统全是冲突第二AI生成的预期结果经常写得太笼统比如“系统报错”就完了但合格的预期结果应该具体到“页面顶部弹出红色提示条内容为‘库存不足当前可售数量为10件’”。所以我会在提示词里强制要求“预期结果必须包含具体界面元素或返回字段名”这一条能明显把用例质量拉到可执行级别。2.3 数据准备让AI生成测试数据构造脚本测试数据这块传统做法是测试人员自己写SQL往数据库里插数据或者通过页面前置操作去造数。AI在这方面的能力被很多人低估了。我给AI的提示词通常是直接描述业务规则让它生成INSERT语句或者调用接口造数的脚本。举一个真实例子一个订单系统的测试数据需要满足“同一用户30分钟内不能重复下单相同商品”。人工造数要先去查用户表、商品表搞清楚字段含义再写一条带时间校验的SQL整个过程大概要20分钟。我直接把表结构粘贴给AI加上业务规则让它生成一个构造“已经下过单的用户-商品组合”的SQLAI给的答案基本可用我再根据索引和分表逻辑做了微调。整个过程不到5分钟。不过这里有个风险AI生成SQL时如果缺少对表关系的理解很容易写出逻辑正确但性能极差的语句比如在几百万行的订单表上做全表扫描。所以我的习惯是AI生成的SQL一律先看执行计划再决定是否上生产库执行。安全第一效率第二。3. 模型选型与部署方式本地部署还是调用API3.1 先搞清楚自己的使用场景再选方案我接触过不少测试同学一上来就问“哪个大模型最好用”其实这个问题没法一概而论。选模型之前先回答三个问题处理的测试数据涉及敏感信息吗有没有内网隔离要求团队能接受多少延迟如果测试过程中要处理用户手机号、身份证、企业内部订单数据那调用外部API就存在数据合规风险。我见过一个团队因为图方便把生产环境的脱敏不彻底的日志丢进云端API分析结果被安全部门通报整改。这种情况就别纠结了直接走本地部署。如果只是拿公开的接口文档、脱敏后的需求文档做辅助那用API方案就够了响应快、不用管硬件。我个人在办公室环境同时保留两套日常需求分析和用例设计走云端API涉及真实用户数据的日志分析走本地小模型。两头都不耽误。3.2 本地部署的硬件要求与量化选择本地部署大模型听起来门槛高实际上经过这几年的发展已经相当成熟。以目前主流的开源模型为例7B到14B参数规模的模型经过4bit量化后显存需求大约在6GB到12GB之间一张消费级显卡就能跑起来。如果预算有限甚至可以用内存足够的CPU机器跑小模型速度慢一点但能用。我自己的主力是一张24GB显存的显卡跑14B量化模型很流畅生成一份完整的接口测试用例大概10秒左右。如果团队没有显卡也可以考虑直接用带NPU的国产开发板或者云厂商的私有化部署服务成本可高可低。这里给一个显存估算的经验公式模型文件大小约等于参数量乘以量化位数再除以8。以7B模型4bit量化为例7×4/8约等于3.5GB加上推理时的KV Cache和中间激活值开销实际占用大概在6到8GB之间。所以选显卡时不要只看模型文件大小留出至少一半余量才稳。配置方面我推荐直接使用开源的模型部署框架例如Ollama这类工具一条命令就能拉起模型服务对测试团队来说足够友好。需要注意的一点是本地部署后要用HTTP接口做测试不要开着命令行交互界面傻等否则无法跟自己的测试脚本和提示词模板集成。3.3 API方案的提示词工程要点如果选择API方案提示词的质量基本决定了产出质量的上限。我总结了几条对测试场景特别有用的经验第一条上下文分批给不要一次全塞。很多人把整个需求文档、所有接口定义、全部历史用例一次性丢给AI结果模型注意力被稀释关键信息反而丢失。正确的做法是分轮对话第一轮只让AI读需求回答“你理解了这个系统的哪些核心业务”第二轮再让它提取测试点第三轮才展开用例。每一轮都在前一轮的基础上继续。第二条给AI一个“角色”和一套“规则”比给一堆例子更有效。测试场景下角色设定为“资深测试工程师”规则设定为“每个用例必须包含可验证的预期结果”比给AI看十个优秀用例更稳。例子容易让模型模仿格式但规则才能约束它的行为。第三条对AI的输出做“反向验证”。让AI生成用例之后再追加一轮提问“针对你生成的用例请找出3个你自己最容易遗漏的测试点并补全用例。”这招是我试过最有效的查漏手段模型能在一定程度上自我反思虽然不能完全依赖它但确实能多捞回来几个边界用例。4. 实操记录一个订单接口的AI全流程测试4.1 需求描述与提示词设计为了讲得更具体我用一个简化的订单查询接口来演示整个流程。假设接口需求是“订单查询接口支持按订单号精确查询支持按创建时间范围查询创建时间默认为最近30天最大可查范围90天超过90天需要申请扩展权限。”我的第一轮提示词只让它做一件事你是一名测试工程师请阅读下面这个接口需求先用一段话复述你的理解并指出需求中你认为存在歧义或需要澄清的地方不要写用例。 接口需求【粘贴上述需求】AI复述得八九不离十但它指出来的歧义点很关键它问“最近30天的时间基准是自然日还是工作日”“超过90天申请扩展权限的具体错误码是什么”“时间范围是闭区间还是开区间”。这三个问题我拿去跟开发确认时开发自己也愣了一下说明需求确实没写清楚。这就是AI辅助需求分析最实用的价值——它不靠猜而是把不确定的地方当场暴露出来。4.2 AI生成pytest脚本并执行确认需求后我让AI生成自动化测试脚本提示词里明确指定框架、语言、断言要求请使用Python pytest框架为以下接口编写自动化测试用例脚本 1. 接口路径/api/order/query 2. 请求方式GET 3. 参数order_id可选、start_time可选、end_time可选 4. 断言要求HTTP状态码为200响应JSON中code字段为0表示成功message字段为“成功”或具体错误描述 5. 覆盖场景 - 按订单号精确查询 - 按时间范围查询 - 时间范围超过90天时返回权限错误 - 必填参数缺失时的异常处理 6. 脚本要求使用pytest fixture管理请求会话测试数据使用参数化便于后续扩展AI生成的脚本经过我微调后核心代码长这样import pytest import requests BASE_URL http://127.0.0.1:8080 pytest.fixture(scopemodule) def session(): s requests.Session() s.headers.update({Content-Type: application/json}) return s pytest.mark.parametrize(order_id,expected_code, [ (A123456789, 0), (NON_EXIST_001, 10001), (, 20001), ]) def test_query_by_order_id(session, order_id, expected_code): resp session.get(f{BASE_URL}/api/order/query, params{order_id: order_id}) assert resp.status_code 200 body resp.json() assert body[code] expected_code pytest.mark.parametrize(start,end,expected_code, [ (2024-01-01 00:00:00, 2024-01-31 23:59:59, 0), (2024-01-01 00:00:00, 2024-04-30 23:59:59, 40002), # 超过90天 (2024-01-01 00:00:00, None, 20001), # 参数不完整 ]) def test_query_by_time_range(session, start, end, expected_code): params {start_time: start} if end: params[end_time] end resp session.get(f{BASE_URL}/api/order/query, paramsparams) assert resp.status_code 200 body resp.json() assert body[code] expected_code这里必须说一句AI生成的代码不能直接上我在review时发现它最开始写的断言里把“成功”和“code0”混在一起导致如果业务返回code0但message非“成功”时用例反而报错。后来我把断言逻辑固定在code字段上message只做辅助信息输出用例才稳定下来。这就是人工review不可替代的原因。4.3 用AI分析缺陷和补充边界用例脚本跑完一轮后有一条用例失败了失败原因是对超时时间范围返回的错误码和预期不符。我直接把接口返回的JSON响应体、请求参数、数据库里对应订单的创建时间一起丢给AI以下是实际请求和响应数据请求时间范围超过90天但是接口返回了成功状态码请分析可能的原因并给出需要进一步排查的检查点。 请求参数start_time2024-01-01end_time2024-04-30 响应体{“code”:0,“message”:“成功”,“data”:{...}}AI给出的分析方向很全面可能是后端时间解析格式不一致导致时间范围缩水可能是接口对“超90天”的校验只判断了自然日差而没考虑闰年也可能是前端传参时end_time被截断。我沿着“时间解析格式不一致”这个方向去查最后发现是后端的日期解析用了UTC时区而测试环境是东八区时间被回拨了8小时边界计算就差了一天。这个问题如果人工去翻代码至少要半个小时AI辅助定位把它压缩到了十分钟。查完缺陷后我还加了一轮提示词“请为这个接口再补充5个极端边界用例”AI补充了2038年时间戳溢出、跨年时间范围、时区切换、毫秒级并发查询、订单号包含特殊字符等场景。这些用例虽然不是全部能自动化但确实把测试设计的覆盖面拓宽了。5. 进阶玩法AI辅助代码审查与安全测试5.1 AI代码审查的完整提示词流程测试流程再往前一步就是在开发提测之前用AI帮测试团队先做一轮代码层面的静态审查。这里不是要替代开发自己的Code Review而是让测试人员提前了解改动影响面缩小测试范围。我的做法是让开发把MR合并请求的diff粘贴给我我再用AI做审查。提示词是这样设计的你是一名严格的代码评审专家请审查以下diff重点关注 1. 是否存在空指针、数组越界、未释放资源等明显缺陷 2. 接口入参是否有统一的校验逻辑 3. 异常分支是否记录了足够日志 4. 是否有明显的SQL注入、越权访问风险 5. 改动是否会影响现有接口的兼容性 diff内容 【粘贴】AI在这类任务上的表现相当不错尤其是“明显缺陷”和“兼容性影响”两块能顶得上一个经验丰富的开发。有一个项目里开发改了订单状态的枚举定义AI直接指出这个改动会影响下游三个服务的判断逻辑后来测试组把这三个服务的回归用例加进了提测范围果然有一个服务挂掉了。这个价值已经超出了单纯的代码review直接帮测试圈定了回归范围。不过要注意的是AI代码审查对diff的长度有上限要求diff太长会被截断。我的经验是把diff按文件拆开分批交给AI最后再让它汇总一份整体风险评估。还有一个细节提示词里加一句“不要修改代码只输出问题清单”能避免AI自作主张给你“优化建议”省得review它的建议又要花时间。5.2 安全测试中的AI辅助的正确打开方式安全测试包括通常说的渗透测试是一个高度依赖经验的领域AI能帮上忙的地方同样集中在文本分析和流程提速上而不是让AI去“攻击”。我实际在用的几个辅助点第一个是分析接口鉴权逻辑。把接口定义文档扔给AI让它找出哪些接口缺少权限校验描述这个在给内部系统做安全自查时非常高效。有一次AI发现后台管理端有个“导出用户列表”的接口在文档里没有标注任何角色权限要求测试组顺藤摸瓜果然发现这个接口只要登录就能调用属于越权漏洞。第二个是解读漏洞扫描报告。扫描工具比如常见漏洞扫描器导出的报告动辄几百上千条里面大量误报。让AI读报告按“确认漏洞、疑似误报、需要人工复核”三档输出摘要再给出每个疑似漏洞的验证思路能省掉人工逐条翻报告的体力活。第三个是写安全用例模板。把业务接口描述交给AI让它按常见风险类别未授权访问、越权、敏感信息明文传输、参数篡改生成测试用例这比从零写要快很多。但安全用例的执行验证必须由专业安全测试人员来做AI只能帮忙把覆盖面做全不能替代真正的验证动作。这里也提醒一句安全测试必须在自己有授权的系统上做这是行业底线测试团队千万别拿AI生成的验证脚本跑到没授权的目标上玩那不是技术问题是原则问题。6. 常见问题与避坑速查6.1 测试团队用AI的典型问题排查我把团队落地AI辅助测试过程中遇到的典型问题整理成了一张速查表现象可能原因处理方案AI生成的用例预期结果太模糊提示词没约束预期结果的粒度强制要求“预期结果包含具体界面元素或接口字段”AI生成的脚本跑一次就废断言绑定死数据没有参数化让AI用pytest参数化并在review时检查数据独立性AI对需求的理解跑偏上下文太少没有先做需求复述分轮对话先让AI复述理解再继续生成SQL执行超时缺少对表关系和索引的理解要求AI先输出执行计划再落到实际库执行本地模型回答速度慢显存不足触发CPU卸载换量化更低的模型或扩大显存云端API返回内容被安全卡住测试数据含敏感字段本地部署模型处理敏感数据API只处理脱敏后的数据AI补的边界用例不实用没有结合业务实际约束在提示词中同时给出业务规则和字段约束这些问题里最值得警惕的就是“AI一本正经地胡说八道”。模型在不确定的时候会编造一个看似合理的答案比如给一个根本不存在的接口字段名。我的对策是要求AI在回答中标注置信度当它说“我无法确定”的时候我会换个问法或者补充上下文绝不直接信它的默认结论。6.2 几条独家实操心得基于这大半年来的折腾我最后分享几条不一定写在哪本教程里的经验。第一别把AI当搜索引擎用。搜索引擎是给你现成答案AI是帮你推理和生成。如果你只是想知道“某个框架的某个API怎么调用”用搜索引擎更快但如果你要“根据这段业务规则生成一套完整的测试设计”这才是AI的战场。想清楚这个问题你就知道该在哪个环节投入精力去优化提示词。第二提示词要版本化。我现在会把好用的提示词模板存成一个独立的文本库按“需求分析”、“用例生成”、“脚本编写”、“缺陷定位”分门别类每次微调后都增量更新。因为同样的提示词在不同模型上的表现差异很大模型一升级原来好用的提示词可能就失灵了。有了模板库和版本记录切换模型时心里有底。第三AI最适合赋能的是“流程中20%最枯燥的工作”而不是“整个流程”。把它当成测试团队的数字化劳动力而不是流程替代品。我发现团队里接受度最高的用法是让AI先产出初稿、人再改这种模式而不是让AI直接输出最终交付物。人参与修改的过程同时也是对AI错误的二次拦截双保险比单保险稳得多。我个人在实际操作中最大的体会是AI赋能测试流程本质上是把测试经验“结构化”成提示词和校验规则的过程。你的测试功底越扎实越懂得用例设计的原理AI在你手里就越听话。反过来如果自己对业务和测试方法都不熟AI给再多帮助也填不上那个坑。所以不用焦虑被取代先把AI当成一个帮你把重复劳动甩掉的助手你会发现测试这行干的越来越有意思。