千锋教育-做有情怀、有良心、有品质的职业教育机构

面试官让你测一个“登录框”,你第一反应是什么?
大多数人:长度6-18位,数字字母组合,空值、特殊字符……
这样列10条,面试官只会觉得你是个“背大纲的机器人”。
等价类的核心不是分类,而是识别“风险密度”区域。
比如一个“年龄输入框”,正常范围1-120岁。
100个测试者里,99个会写:-1、0、1、120、121、空值。
但面试官真正想听的是:你知不知道“17岁”和“18岁”可能触发不同的业务逻辑(比如未成年人保护)。
这才是等价类在真实项目里的用法——把输入域和业务规则绑定。
金句:面试里没有“应该测什么”,只有“如果不测这里,线上会赔多少钱”。
边界值也是一样。
经典错误:只测0、1、99、100。
实战高手会问面试官:“这个上限100是包含还是排除?如果UI上写‘100以内’,后端判的是<100还是<=100?”
边界值测试是为了找出“模糊地带”,而不是机械地填数字。
给一个可复用的面试话术:
“我测这个输入框,先按等价类把输入划成有效等价类、无效等价类和边界等价类。有效等价类里按业务优先级排序,比如影响用户主流程的优先测;无效等价类重点测那些‘看上去合法但实际会触发隐藏报错’的数据;边界值我会先和开发对齐‘闭区间’还是‘开区间’,然后用‘-1、0、最小值、最小值+1、最大值-1、最大值、最大值+1’去覆盖。最后追问一句:这个字段是否依赖其他字段?如果有,还要做组合边界测试。”
这个回答一出,面试官就知道你是有实战经验的。
---
面试题:“测试购车下单流程”。
你开始写:点击选车-选择配置-确认订单-支付-完成。
面试官内心:这跟百度搜来的答案有什么区别?
场景法的精髓是“站在用户立场+站在老板立场”。
用户立场:正常流程、异常流程、中断流程、多设备同时操作。
老板立场:这个流程里哪个环节最容易流失用户?哪个环节利润最高?
比如“支付失败”这个场景。
初级测试:提示“支付失败”,返回订单页。
高级测试:
1. 支付失败后,系统是否异步重试?(重试次数?间隔?重试期间用户是否可以反复点击?)
2. 支付失败但银行已扣款,系统怎么处理?(对账机制?用户看到的订单状态?)
3. 支付失败后用户关闭页面,第二天重新打开,订单状态是否同步更新?
金句:测试用例的深度,取决于你对业务链条从开始到结束的“恐惧指数”。
面试官真正想听的是:你如何从一条流程推导出100条分支。
一个场景法的万能框架:
最后加一句:“我会用思维导图画出所有分支,然后按影响线上用户数、影响业务收入、影响系统稳定性三个维度排序,优先测高风险分支。”
---
大多数测试培训教你:条件桩、动作桩、简化规则、去冗余。
但面试里,99%的人只会用判定表解决“两个条件”的问题。
真正的实战场景是:“一个优惠券系统,同时满足满减、折扣、赠品、会员等级、新用户首单——如何不产生冲突?”
金句:方法本身不值钱,知道什么时候不用它才值钱。
判定表的正确打开方式:
1. 先判断这个方法是否适用——条件组合不超过4个,动作不超过3个,否则用正交法。
2. 不写全量组合——28条件=256条,写出64条已经够用,因为很多组合是无效的(比如“金额满减”和“金额折扣”互斥)。
3. 重点覆盖“边界组合”——比如会员等级Lv0+新用户+金额刚好满减门槛,这种组合最容易出bug。
一个面试实战技巧:
面试官说“设计一个支付优惠组合的测试用例”,你直接反问:
“我先确认一下,这个系统里优惠互斥规则是什么?比如满减和折扣能不能叠加?平台券和店铺券谁优先?”
面试官心里OS:这人懂行。
然后你拿出判定表思路,但只说关键组合:“我会把条件简化成‘是否满足满减’‘是否满足折扣’‘用户是否有券’三个因素,然后列出8种组合,再剔除业务上不允许的(比如满减和折扣不能同时用),最后选出可能产生冲突的2-3个组合重点测。”
判断表的价值不是“全”,而是“精”。 面试现场没人想听你念2的n次方。
---
方法清单上往往不强调错误推测法,但面试问“你还有什么要补充的”,你抛出几条错误推测,瞬间拉开差距。
金句:测试经验不是靠年限,而是靠“掉过的坑”的数量。
错误推测法面试话术模板:
“根据我过往项目经验,这类系统最容易出现以下几种bug:
1. 时间相关:比如当天23:59:59和00:00:00的边界,跨天、跨月、跨年、闰年。
2. 并发相关:比如同一账号同时下单同一个商品、同时取消订单。
3. 缓存相关:比如修改了数据,缓存失效策略不对导致旧数据显示。
4. 第三方依赖:比如调用了支付接口,对方返回了文档里没写的状态码。
5. 数据迁移:比如老用户升级新版本后,原有优惠券状态丢失。
针对这个‘测试水杯’的面试题,我会推测:
面试官要的不是“测试水杯”的答案,是“你有没有测试思维”。
错误推测法就是展示你“测试思维广度”的武器。但注意:推测要有依据,别瞎猜。每一个推测都要给出理由:这个bug我在之前项目里见过;这种设计在行业里出现过召回事件。
---
前面讲了四个方法,但面试官不会让你一个个用。他会给一个场景,比如“测试微信发红包功能”,看你如何设计。
正确的打开方式:分三步走。
第一步:梳理业务逻辑
第二步:选择方法组合
金句:面试的高分不是答案的完整性,而是你选择方法时“为什么用它”的合理性。
第三步:用“优先级”收尾
“我会按风险等级排序:
P0:影响用户资金安全(如红包重复到账、金额错误)
P1:影响核心功能(发不出去、领不到)
P2:影响用户体验(红包页面卡顿)
P3:边界极限(200.00元这个边界要重点测,因为很多bug出在浮点数计算上)
P4:兼容性(不同手机系统、微信版本)
先测P0和P1,和开发确认完修复周期后再测P2。”
这一套组合拳打下来,面试官只会说:“你什么时候能入职?”
---
测试用例设计方法不是考试知识点,而是你手上的工具箱。
面试里,面试官想看的是你打开箱子、挑选工具、解决实际问题的动作,而不是你把箱子里的工具逐个念一遍。
回到开头那个问题——如果让你测一个水杯,你会怎么答?
现在你应该知道:先问“这个水杯卖给谁?多少钱?什么材质?使用场景是家用还是户外?”
然后说:“我会用场景法模拟不同人使用水杯的全流程,用等价类分析不同材质的耐温区间,用边界值测杯盖和杯体的配合公差,最后用错误推测法加测一个极端情况——从1米高处摔落。”
别再让面试官觉得你只会背定义。
方法是你手里的剑,实战才是你挥剑的姿势。
金句:面试结束那一刻,你让面试官感觉“这人能直接上手干活”,你就赢了。