
1. 现象观察AI生成的测试用例为什么总差那么点意思最近在团队内部做AI辅助测试的落地推广给开发、测试、产品三拨人连着做了几场演示。每次演示到“输入一段需求描述AI自动生成测试用例”这个环节现场反应都很有意思第一次看到AI一口气列出二三十条用例时大家确实觉得“有点东西”但稍微深入追问两句比如“这条用例覆盖的业务规则到底对不对”“这个边界值是怎么推出来的”“如果用户是黑卡会员而且用了新人券这个叠加逻辑AI接得住吗”现场就安静下来了。这不是个别现象。我过去两个月里用市面上主流的AI编程助手、AI测试平台、通用大模型API对同一个电商项目反复生成用例结论稳定得很AI生成测试用例的“下限”非常高但“上限”非常低。高是指它能在几秒钟内产出一份格式规范、结构清晰、命名得体的用例文档覆盖率看起来也不差低是指一旦涉及业务语义——也就是你这个行业真正的规则、流程、状态流转、数据约束——AI输出的质量就会急剧下滑甚至出现“每条都对合起来全错”的诡异状态。这背后的问题很值得掰扯AI生成测试用例的时候它到底在干什么它真的理解你所在的行业吗想让它“懂业务”我们是该换工具还是该换用法这篇文章不聊空泛的概念我直接把这几轮实测的对比结果、踩过的坑、以及最后沉淀下来的可复现方法摊开来讲。先明确一个边界我这里聊的“测试用例”主要指功能测试用例和接口测试用例这两类偶尔涉及UI自动化的脚本化用例。单元测试用例不在讨论范围因为单元测试的语义更多来自代码本身和“业务语义”的关系是另一套逻辑。章节结构上我会从现象开始逐步拆AI的理解机制、提升语义理解的具体手段、实战案例最后给一份踩坑速查表。2. AI生成测试用例的现状它到底在“生成”什么2.1 大多数AI工具的真实工作方式模式补全而非业务推理先说一个可能会颠覆很多人预期的结论大多数AI生成测试用例的工具本质上做的是一件事——模式补全。它学习过海量的测试用例文本知道一份“像样的测试用例”长什么样然后根据你输入的需求描述在概率空间里挑一个看起来最顺眼的测试用例骨架进行填充。这个过程类似于你让一个有经验的助手“照着之前项目的格式写一份测试计划”。助手知道测试计划应该有目的、范围、策略、进度、风险这些章节也知道每个章节大概写几句话。但如果你不问他不会主动去核对这次项目的真实业务逻辑。AI也是一样它擅长的是“格式正确”不擅长的是“业务正确”。我做个批量实测用同一个需求描述——“用户下单时可选择使用优惠券优惠券需在有效期内且不可与满减活动叠加”分别喂给五个不同的AI生成工具收集它们输出的用例。结果很有意思。五个工具全部生成了“优惠券过期不可用”这条用例四个工具生成了“优惠券与满减不可叠加”的用例。这看起来很好对吧但细看就露馅了。没有一个生成“优惠券抵扣后实付金额为负数时如何兜底”的用例也没有一个生成“用户提交订单瞬间优惠券被后台作废此时系统如何响应”的用例更没有生成“优惠券面额大于订单金额时按订单金额抵扣还是按面额抵扣”的规则校验用例。这些恰恰是业务语义里最核心、最容易出事故的地方。2.2 为什么“每条都对合起来全错”这是AI生成测试用例最让人头疼的现象。单看任何一条用例它的前置条件、操作步骤、预期结果都像那么回事但把所有用例合在一起看业务链路是断的覆盖是散的点不是一条线更不是一个面。还是拿上面那张优惠券举例。AI生成的用例可能是用例1有效期内使用优惠券成功抵扣用例2优惠券已过期提示不可用用例3优惠券与满减活动叠加提示不可同时使用用例4优惠券面额大于订单金额按订单金额抵扣这四个用例单拎出来都没毛病。但它们之间没有业务时序关系没有覆盖“先加购物车再领券再下单”的流程没有覆盖“结算页切换优惠券”——也就是用户选了A券又改选B券的场景没有覆盖“下单成功后取消订单券是否退回”的规则更别提退回后有效期是否顺延这种隐含规则了。问题出在哪AI看到的是“需求片段”不是“业务模型”。它不理解一个订单从创建到完成会经历哪些状态不理解优惠券在哪个节点被锁定、哪个节点被核销、哪个节点被退回。这些知识不会写在产品需求文档的某一行里它散落在接口文档、数据库状态枚举、历史Bug报告、甚至产品经理的脑子里。这也是我想强调的第一个核心观点AI生成测试用例的语义理解困境本质上是一个信息输入问题。没有业务语义的输入AI再强也补不出业务语义的输出。指望靠提示词技巧解决这个问题的思路方向就偏了。2.3 AI生成用例的三个能力层级识别、理解、推理我在实际测试中倾向于把AI生成测试用例的能力划分为三个层级第一层是“识别”。给一段需求描述AI能识别出主体、动作、对象、约束条件。比如“用户下单时使用优惠券”AI识别出“用户”是操作主体“下单”是业务动作“优惠券”是业务对象。这层能力目前所有大模型都做得不错因为这是通用语言理解能力。第二层是“理解”。AI需要知道“优惠券”和“订单”之间存在什么业务关系“有效期内”这个约束条件在系统里是如何实现和校验的“不可与满减叠加”这条规则具体由哪个服务、哪个字段、哪个接口来保证。这层能力取决于AI是否接触到了业务知识——接口文档、数据字典、状态机、历史用例缺一不可。第三层是“推理”。基于对业务规则的理解推导出潜在的边界条件和异常场景。比如“优惠券金额大于订单金额”是一种边界“优惠券核销后用户退款券是否可退回”是一种异常场景“优惠券领取人数达到上限后页面是否还能看到入口”是一种并发场景。这层能力是AI测试用例生成价值的真正体现但目前绝大多数工具远未达到。一个很残酷的现实市面上大多数号称“AI生成测试用例”的产品连第一层到第二层之间的沟都没填平。很多产品就是套了一层大模型API输入需求文本输出用例列表中间既没有业务知识库的注入也没有接口语义的解析更没有历史Bug数据的反馈闭环。这样的产品生成的用例质量自然停留在“看着像”的水平。3. 业务语义理解的关键拆解为什么AI会“不懂行”3.1 大模型的知识边界行业深度与领域壁垒“AI懂你的行业吗”这个问题答案不是简单的“懂”或“不懂”而是“它在什么程度上懂”。大模型预训练时确实吸收了海量的行业知识比如电商领域的“优惠券”“满减”“下单”“支付”金融领域的“开户”“风控”“额度”“授信”医疗领域的“挂号”“问诊”“处方”“复诊”。这些词汇它都见过而且见过很多次所以你问它“什么是优惠券”它能答得头头是道。但问题是你的业务不是“优惠券”这三个字而是你这家公司、这个产品里“优惠券”这三个字背后的具体实现。你的优惠券有几种类型每种类型的有效期规则怎么定义能否叠加叠加顺序是系统自动选择还是用户手动选择券的核销是实时的还是异步的用户退款时券怎么处理这些问题大模型的通用知识库里没有答案因为答案存在于你的数据库表结构、接口参数定义、状态机流转逻辑里。这就是行业壁垒。AI不是不懂电商它懂的是“通用电商”不是“你的电商”。而且这个“通用”和“你的”之间的差距往往就是测试用例最有价值的部分——因为它对应的是你系统里最独特的业务逻辑也是Bug最容易藏身的地方。3.2 测试用例生成需要哪些“行业知识”我梳理了一下AI要想生成高质量测试用例需要以下几类行业知识的输入第一类是业务实体与关系。你的系统里有哪些核心业务对象用户、订单、优惠券、商品、店铺、支付单这些对象之间是什么关系一个订单包含几个商品一个用户最多同时持有几张优惠券一张优惠券能被几个订单使用这些是业务语义的骨架。第二类是业务规则与约束。“优惠券不可与满减叠加”“新用户首单立减20元上限50元”“生鲜商品不支持7天无理由退货”“一笔订单最多使用一张优惠券”——这些规则通常散落在PRD、接口文档、需求评审纪要和产品经理的脑子里。AI不知道这些规则就无法生成“验证规则被正确执行”的用例更无法生成“验证规则在边界条件下是否失效”的用例。第三类是业务流程与状态流转。订单从创建到支付到发货到确认收货到完成中间经历哪些状态每个状态之间有哪些触发条件状态流转失败时回滚到什么状态优惠券在订单的哪个节点被锁定哪个节点被核销这些流程知识决定了AI能否生成端到端的场景用例。第四类是历史缺陷与业务反模式。你们项目过去半年里出现过哪些线上事故是优惠券超发导致资损还是订单状态不一致导致用户重复支付这些历史缺陷是业务语义的最高价值形态因为它直接告诉你哪里最容易出问题。但目前几乎没有AI工具能自动利用历史缺陷数据来优化用例生成。3.3 行业知识的载体从PRD到接口文档到代码这些行业知识在现存的技术体系里不是没有而是分散在各个角落AI拿不到。PRD里的业务规则是自然语言写的接口文档里的字段约束是结构化的代码里的校验逻辑是实现层面的数据库里的枚举值和状态字段是数据层面的。AI只拿到了你喂给它的那一段需求描述自然不会自动补齐其他层面的知识。这也是很多团队吐槽“AI生成的用例还不如我手写”的根本原因。拿到的输入只有一段几百字的需求描述凭什么期待AI输出一份覆盖业务流程、状态流转、异常场景、边界条件的完整用例集这不是AI的能力问题是输入输出严重不匹配。想通这一点之后我的思路就变了不再研究怎么优化提示词去“压榨”AI的通用知识而是研究怎么把行业知识系统地、结构化地喂给AI让它基于真实业务语义来生成用例。4. 提升AI业务语义理解的实操抓手四个层级的语义注入4.1 层一需求描述层的语义增强——提示词的结构化改造第一层最容易做也是大多数人已经在做的在提示词层面把需求描述改造得更结构化。这里的核心不是“写更好的提示词”而是“把需求拆成AI能理解的结构化信息”。我的做法是固定一套“需求结构化模板”包含以下要素业务背景这个功能解决什么问题服务什么用户业务流程用户从进入到完成经过哪些步骤业务规则明确列出所有约束条件和分支逻辑状态流转如果涉及状态变化列出状态机异常场景提前列出已知的异常情况数据约束字段长度、取值范围、必填项、边界值举个例子。原本的需求描述是“用户下单时可使用优惠券需在有效期内”经结构化后我会改造成业务背景用户在结算页可选择优惠券抵扣订单金额提高下单转化率 业务流程用户进入结算页 - 查看可用优惠券列表 - 选择优惠券 - 系统计算抵扣后金额 - 用户提交订单 业务规则 1. 优惠券必须在有效期内过期不可用 2. 优惠券不可与满减活动叠加二者互斥 3. 优惠券抵扣金额不可超过订单实付金额超额时按订单金额抵扣 4. 一笔订单最多使用一张优惠券 5. 用户取消订单后优惠券自动退回有效期保持不变 状态流转下单前优惠券状态为未使用提交订单后为锁定支付成功后为已使用取消订单后回到未使用同样一段需求AI基于这段结构化描述生成的用例质量相比直接输入原始需求覆盖率会有肉眼可见的提升。原因不难理解你把业务语义拆好了喂给它它只需要做“基于规则的用例生成”而不是“从文本里挖业务规则”。4.2 层二接口文档层的语义注入——让AI知道数据怎么流转需求文本是业务视角接口文档是技术视角。很多业务规则在需求文档里可能是一句话落到接口层面就是字段的枚举值约束、必填校验、长度限制。AI没有接口信息测试用例就停留在“用户视角的操作步骤”上无法下沉到“接口参数校验”层面。我的做法是把接口文档里的关键接口定义、字段说明、枚举值、校验规则作为附加上下文喂给AI让它同时基于业务需求和接口契约来生成用例。以“领券”接口为例我测试时会把接口定义补充给AI接口POST /api/v1/coupon/receive 参数 - couponId必填int优惠券ID - userId必填int用户ID - source可选string枚举值H5/APP/MINI_PROGRAM 响应 - code0成功1001优惠券不存在1002优惠券已领完1003重复领取1004活动未开始1005活动已结束当AI同时看到需求文本和接口定义时它生成用例的视角会发生明显变化。不再只是“用户点击领取按钮”还会生成“couponId传0或负数”“source传非法值时系统返回什么”“重复领取时提示1003”这类更偏边界和契约的用例。这个效果是纯提示词层面做不到的因为接口信息在需求描述里根本不存在AI再怎么推测也推测不出来。所以我在团队里定了一个规矩凡是涉及接口调用的功能生成测试用例时必须提供接口文档。现在团队用的接口文档平台支持一键导出Markdown或JSON格式复制粘贴到提示词里成本极低但用例质量提升非常明显。4.3 层三静态分析层的语义注入——从代码里提取业务规则接口文档能覆盖参数校验和契约层面的语义但很多业务规则并不在接口层而是藏在代码逻辑里。尤其是复杂的业务规则——优惠金额的计算方式、状态流转的前置条件、并发场景下的数据一致性保障——你看接口文档看不出来得看代码。这个层级的技术含量最高也是目前AI测试工具最不涉及的一块。我的做法是把核心业务代码的简化版逻辑喂给AI不是把整个代码库丢进去而是提取核心方法、关键if-else分支、状态机定义整理成伪代码或逻辑描述后作为业务语义的补充输入。举个例子优惠券抵扣金额的计算逻辑代码里可能存在这样一段def calc_discount(order_amount, coupon, active_promotions): # 判断是否有满减活动 if active_promotions and active_promotions.type FULL_REDUCTION: # 满减与优惠券互斥 return 0, COUPON_AND_PROMOTION_CONFLICT # 判断优惠券是否在有效期内 if not (coupon.start_date now coupon.end_date): return 0, COUPON_EXPIRED # 优惠券面额不能超过订单金额 if coupon.face_value order_amount: return order_amount, SUCCESS return coupon.face_value, SUCCESS这段逻辑里有三个关键判断满减互斥、有效期校验、面额上限。我把它整理成逻辑描述喂给AI后AI生成的用例就会包含以下几条订单参与满减活动且用户使用优惠券时系统返回冲突提示抵扣金额为0优惠券在有效期内用例通过不在有效期返回优惠券过期提示优惠券面额大于订单金额时按订单金额抵扣实付金额不为负数这些用例如果不看代码光靠需求文档和接口文档几乎不可能生成。因为它们对应的不是用户操作路径而是代码分支逻辑。这是AI生成测试用例从“业务场景覆盖”走向“代码逻辑覆盖”的关键一步。但注意这个做法有一个前提代码本身得是清晰可读的。如果代码里全是嵌套if-else和魔法数字AI也提炼不出什么有用的业务语义。所以我也建议代码质量本身就比较差的团队先别急着做这一层先把静态分析能力用在代码可读性优化上效果可能更好。4.4 层四领域知识库与反馈闭环——让AI持续学会你的行业前三层都是“一次性输入”第四层是“持续学习”。AI生成的用例好不好需要反馈信号来评判。哪些用例覆盖了实际Bug哪些用例是无效冗余的哪些业务规则AI反复生成错误这些反馈信号如果能够回流到AI系统里业务语义理解才会形成闭环。我见过一些做AI测试平台的公司会在产品里内置“用例命中率”的统计——生成的用例和后续发现的Bug之间建立关联。说白了就是看AI生成的用例到底覆盖了多少实际缺陷。这个指标看着简单但真正能做到的产品少之又少。我目前在自己的工作流里设了一个“AI用例复盘表”每周抽几份AI生成的用例集和当周发现的Bug做一次对账看三类信息AI生成的用例覆盖了哪些Bug、漏掉了哪些Bug、以及哪些AI生成的用例是纯废的。连续做了三周之后你会发现AI漏掉的Bug高度集中在同一类业务语义上——比如时间边界、金额计算、状态并发。于是就可以针对性补充那一类的业务规则描述调整提示词模板。别小看这个笨办法。我测试下来同样的提示词模板经过三轮反馈调整后AI生成的用例对当周Bug的覆盖率提升了不少。原因不复杂你告诉AI它漏了什么它下次就会更关注那类场景。大模型的注意力机制决定了“示范纠正”比“讲道理”有效得多。5. 实战案例详解从“AI生成”到“AI懂业务”的完整过程5.1 案例选择一个典型的电商业务场景——领券与下单理论讲了这么多拿一个我实际跑通过的案例来完整走一遍流程。这个案例的功能是“用户领取优惠券并下单使用”业务背景、需求文本、接口、代码逻辑我都整理好了可以完整还原整个操作链路。用这个案例有两个原因一是电商领域大家都熟悉业务语义比较好理解二是这个功能涉及领取、锁定、核销、退回、过期五个业务动作状态流转复杂非常考验AI的语义理解能力。5.2 第一轮只给需求文本AI生成的用例质量第一轮我模拟绝大多数团队的做法只输入一段需求描述“用户可在活动页领取优惠券每种优惠券限领一张领取后在我的优惠券列表可见。用户下单时可选择使用优惠券优惠券需在有效期内且不可与满减活动叠加。订单取消后优惠券退回。”AI生成的用例集一共11条。比较典型的包括用户在活动页成功领取优惠券列表可见用户重复领取同一优惠券提示已领取用户使用过期优惠券下单提示不可用用户使用优惠券且订单参与满减提示不可同时使用用户取消订单优惠券退回并可再次使用表面看覆盖还不错。但对照这个功能的真实业务逻辑问题非常扎眼完全没有覆盖“优惠券锁定”和“支付超时释放”的临时态场景。这个功能里用户提交订单后优惠券会进入锁定状态如果30分钟内未支付订单关闭且券自动释放。这个状态变化AI没有生成任何用例因为需求描述里没有提到这个规则。边界值覆盖也偏弱。没有覆盖“优惠券面额等于订单金额”“优惠券面额大于订单金额”“优惠券发放总量达到上限后领取入口的状态”这三种典型边界场景。5.3 第二轮补充结构化业务规则与状态流转第二轮我对需求描述重新做了结构化整理补上了状态流转和异常场景。就是第4.1节里说的模板把业务流程、业务规则、状态流转全都列出来。同一个AI只换输入内容不换工具不换模型生成的用例从11条增加到19条。新增的用例里包括用户提交订单后优惠券状态变为“锁定”此时在列表不可见或不可用用户提交订单后30分钟内未支付订单关闭优惠券变为“未使用”状态可再次使用用户支付成功后优惠券状态变为“已使用”订单取消时不退回优惠券面额大于订单金额时订单实付金额为0优惠券领取上限达到后活动页不再展示领券入口这个结果验证了一个观点同一套AI能力输入的业务语义越完整输出用例质量越高。提示词优化不是万能的但结构化业务语义输入是非常有效的。5.4 第三轮引入接口定义与代码逻辑第三轮我继续加料把领券和下单接口的定义、以及内部计算的简化代码逻辑补充进去。这个环节在4.2和4.3已经详细说过这里直接说结果。输入接口信息后AI生成了一批接口契约测试用例比如券ID传非法值、来源渠道传非法值、订单金额传0或负数、使用他人名下优惠券时如何报错等。这些用例在没有接口信息时AI完全不可能生成因为没有一点提示能引导它往这个方向想。输入代码逻辑后AI补了几条非常关键的用例满减活动的判断先于优惠券有效期判断所以“订单参与满减但优惠券已过期”时系统提示的是优惠冲突而非优惠券过期这个优先级逻辑必须有代码级信息才能捕捉到。另外优惠券面额等于订单金额与大于订单金额在代码里走了同一条判断分支AI在代码提示下合并了这两条用例避免了重复覆盖相同分支。三论下来同一个功能、同一套AI工具最终生成的用例从第一轮的11条扩大到30多条而且业务语义的精准度、边界覆盖的完整性、代码分支的穿透性都有明显提升。5.5 对这套方法的总结性评价三轮对比的关键差异不体现在AI工具本身而体现在“我们让AI看到了什么”。AI的能力上限是它接触到的信息上限决定的。多数团队抱怨“AI看不懂业务”其实是“没有把业务喂给AI”。当然这套做法有成本。每一轮都需要有人去整理业务规则、整理接口文档、整理代码逻辑这个整理动作本身就是需要业务分析能力和代码阅读能力的。但我的判断是这个成本比手动编写高覆盖率测试用例的成本低得多而且整理出来的业务语义资产可以复用在AI生成、AI评审、新人培训、业务梳理等多个场景一次投资多处受益。6. 常见问题与排查实录AI生成测试用例的踩坑速查6.1 AI生成的用例“看着都对但根本不是你的业务”这是我被问过最多的问题也是最容易让人对AI失去信心的问题。表象是AI生成的用例废话很多通用性很重缺少你这个系统特有的规则和流程。来回来去是登录失败、输入为空、数据不存在这类通用用例真正业务相关的少之又少。排查思路很简单看你的输入里有没有业务。如果输入只有一句话“用户下单时可使用优惠券”那AI生成通用用例是必然的。它没有更多的业务信息只能靠通用知识去猜。想解决这个问题用4.1里讲的结构化模板改造你的需求描述把业务规则拆出来喂给AI。这个改动不需要换工具不需要换模型只需要换输入形式。6.2 AI生成用例时业务规则优先级错了典型情况是AI生成“优惠券过期场景”和“优惠券与满减互斥场景”的用例时默认了它们的判断优先级。如果你的系统实际是先判断满减互斥再判断有效期那么“过期优惠券参与满减”这个组合的报错提示就和AI生成的预期结果相反。这个问题靠需求文本和接口文档都解决不了只能靠代码逻辑的注入。我在4.3里已经说过了把关键判断逻辑描述成伪代码喂给AI它就能知道判断顺序。没有这一步任何AI都不可能猜出你们系统内部的规则优先级因为这种信息只存在于代码里。6.3 提示词模板加了一大堆效果反而更差有一种常见误区觉得让AI“更懂业务”就是提示词往里堆业务描述写得越多AI越强。实测下来不是这样。提示词一味堆砌不结构化的业务描述反而会稀释AI的注意力让它生成更多无关紧要的用例重要场景反而被淹没。我调试过好几轮提示词最后的体感是业务规则要“结构清晰、逐条列出、分门别类”不要用大段流水账描述。AI对结构化信息的分辨和提取能力明显好于对自然段落的理解能力。把业务规则改成“编号条件预期”的格式比写三大段说明文字管用得多。6.4 AI生成用例后还需要人工评审吗需要而且必须。AI生成的测试用例再完善也只能是“初稿”。业务语义理解这件事最终判断标准应该是“能不能拦住真实缺陷”而不是“AI生成时像不像懂业务”。我在团队里定了一个流程AI生成用例后测试工程师做两件评审动作。第一件是拿需求文档逐条核对确认AI覆盖了所有已声明的业务规则第二件是拿最近三个月的Bug清单做对照看AI生成的用例能否覆盖历史缺陷类型。这两个动作做完AI生成用例才算真正被“验收”了。这个环节的意义不只是检查AI也是在反向检查我们输入的业务语义是否完整。如果AI频繁漏掉某类用例大概率我们喂给它的业务描述里缺了那一类的规则信息。6.5 长期用下来的维护问题业务规则变了AI知道吗这是很多人忽略的问题。AI生成测试用例不是一次性的业务规则会迭代接口参数会变化状态流转会调整。如果业务语义的输入不跟着更新AI生成的用例就会停留在“旧业务”上产生虚假安全感。我现在的工作流里专门加了一个步骤每次业务规则变更都要同步更新提示词模板里的业务规则清单并且把变更点高亮出来单独让AI基于变更点生成增量用例。这比让AI重新生成全套用例再人工筛要高效得多也避免漏掉变更影响面。7. 更深一层的思考AI“懂不懂行业”取决于你“喂不喂行业”写到这里我回头看这篇文章的标题——AI生成测试用例的“业务语义理解”它懂你的行业吗说实话调动了过去几个月的实测经验和踩坑记录我现在的回答比开写之前清晰得多。AI在一开始是不懂你的行业的看起来懂的那些只是通用知识库里的常见模式恰好和你的需求重叠了一部分。但AI的工具价值不取决于它初始懂多少取决于你愿不愿意把行业知识系统性地喂给它——通过结构化需求、接口契约、代码逻辑、反馈闭环这四层注入AI完全可以越来越接近“懂你的业务”这个目标。单次提示词优化的收益是有限的。真正持续产生收益的是把AI生成测试用例的业务语义输入当成一份资产管理起来每次业务变更、每次接口调整、每次线上事故都反哺到这份资产里。这样做三个月后你会明显感觉到同一套AI帮你生成用例的“懂行”程度一直在往上走。我个人在实际操作中的体会是这个事情的瓶颈已经不在AI模型本身了而在测试团队愿不愿意去做业务语义的梳理和注入。这活儿不酷不炫技甚至有点繁琐但偏是这个不那么酷的环节决定了AI生成测试用例这件事到底是在帮你省时间还是在帮你造废纸。