
一、等价类划分法用最少的用例测最多的情况1.1 它解决什么问题我们在测试一个密码输入框时经常会遇到这种需求密码必须是8-16位的英文字母、数字、字符组合不能是纯数字。如果按穷举法来测那得测多少种组合无穷无尽。等价类划分法的核心思想就是把输入数据分成几类每一类里选一个代表来测试就够了。1.2 怎么划分以微信注册密码 8-16位英文字母数字字符组合不能是纯数字为例类型说明例子有效等价类符合所有规则的输入abc123458位字母数字无效等价类①长度不足abc125位无效等价类②长度超长abc1234567890123417位无效等价类③纯数字违反不能纯数字规则12345678无效等价类④纯字母不含数字或字符abcdefgh无效等价类⑤含非法字符如空格、中文abc 1234注意每个无效等价类都要单独测一条不能只测一个代表。1.3 我自己动手试了一下我拿着微信注册的密码框实际测了一轮✅Abc123!8位字母数字字符→ 符合规则✅Abc123!#45612位混合组合→ 符合规则❌abc125位→ 报错密码长度需为8-16位❌abc1234567890123417位→ 报错密码长度需为8-16位❌12345678纯数字→ 报错密码不能为纯数字❌abcdefgh纯字母→ 报错密码需包含字母、数字或字符组合❌abc 1234含空格→ 报错密码包含非法字符我只用了7个用例就把所有情况覆盖了而不是盲目地乱测一通。二、边界值分析法Bug最喜欢藏在边界上2.1 为什么需要边界值分析等价类虽然好用但它有个盲区——边界上的值最容易出错。还是以密码8-16位为例8位和16位是边界7位和17位是刚好越界。程序员的代码里经常是if (len 8 len 16)这种逻辑边界上的号有没有写对就是最容易出Bug的地方。2.2 三个关键概念术语我的理解例子8-16位上点边界上的点正好等于边界值8 和 16离点离上点最近的点刚好越过边界7 和 17内点范围内的任意一个点12或9、10都行⚠️我一开始卡住的地方分不清离点到底是取边界内还是边界外。✅搞懂之后的理解如果是闭区间[8, 16]离点取外部即 7 和 17如果是开区间(8, 16)离点取内部即 9 和 15大部分实际需求都是闭区间所以离点 刚好越界的那个数这么记最简单。2.3 等价类 边界值搭配使用效果更好通常先用等价类划分出大类再用边界值补充边界上的测试点。以密码8-16位为例测试数据覆盖的方法预期结果7位密码边界值离点报错长度不足8位密码边界值上点符合规则12位密码等价类内点符合规则16位密码边界值上点符合规则17位密码边界值离点报错长度超长5个用例既覆盖了等价类又覆盖了边界值效率极高。三、判定表法除了等价类和边界值还有一种方法叫判定表法它适用于多个条件之间有组合关系的场景。比如用户注册时同时满足手机号格式正确 验证码正确 密码符合规则才能成功。每个条件都有真/假两种可能组合起来就是 2ⁿ 种情况。判定表就是把这些组合列成表格然后筛选出有效的测试点。四、等价类 边界值 速查卡这张表浓缩了全文最核心的内容写用例时可以直接对照。场景怎么做口诀划分等价类有效类挑1个代表无效类每个单独测有效的测一个无效的全测到确定上点就是边界值本身边界上的点一个不能少确定离点闭区间取外面开区间取里面闭测外开测内确定内点范围内随便选1个范围内意思一下组合策略先用等价类筛大类再用边界值补边角等价类砍数量边界值抓重点密码8-16位场景的快速测试点测试数据测什么abc123458位上点最短边界abc123456789abcd16位上点最长边界abc1236位离点最短-1abc123456789abcde17位离点最长1abc123456710-12位左右内点中间值12345678纯数字无效等价类违反规则