等价类划分法
- 解决问题:设计少量测试数据覆盖全量数据测试的场景问题。
- 适用场景:针对表单类页面元素测试时使用。(输入框、单选框、下拉列表等)
- 说明:在所有测试数据中,将输入数据划分为“有效”和“无效”两类, 用代表性数据进行测试。
- 分类:
- 有效等价类:满足需求条件的数据集合 →(条件已满足。如:已注册正确账号)
- 无效等价类:不满足需求的数据集合 →(只要有一个条件不满足即可。如:未注册的账号)
- 步骤:
- 明确需求 → 搞清楚测试目的和条件
- 划分有效和无效等价类 → 有效 、 无效
- 提取数据设计测试点 → 选择不同类里面一组测试数据
-
测试条件:长度 类型 规则
-
注意事项
- 测试点有效:满足所有条件项(长度、类型、规则同时符合)
- 测试点无效:只要有其一(条件某项)不满足即可
- 等价类的划分:需要按照每个条件划分有效和无效
案例1:验证QQ登录功能
-
要求:
-
- 账号:6~10位自然数且已注册(非空)
-
- 密码:正确/错误/空
-
-
步骤:
-
1.测试目的:验证QQ能否登录成功
-
2.划分等价类:有效和无效→ 下图xmind
-
3.提取数据设计测试点:参见下图xmind
-
无效等价类的拆解思路:按照测试条件拆解:
- 长度:6~10位 ;类型:自然数 ;规则:已注册
-
-
等价类划分法测试用例组合规则
- 成功场景:选取各输入条件的有效等价类元素进行全组合,验证系统在完全符合规则时的功能正确性。
- 成功场景测试用例数量:各输入条件有效等价类数量的乘积即为有效场景的总覆盖数,单条件有效等价类的最大覆盖边界等同于总有效场景数。
- 失败场景:采用"单无效+多有效"的组合策略——每次仅选取一个输入条件的无效等价类元素,与其他所有输入条件的有效等价类元素组合,避免多无效等价类叠加。该策略可精准定位缺陷根因,排除多重无效条件的干扰。
- 测试用例数量为各条件无效等价类数量的累加和。
- 用例简化规则:失败场景测试用例中,默认省略对有效条件的描述,仅明确标注所引入的无效条件。
案例2:登录功能验证
- 需求:
-
- 账号:必填,已注册手机号或邮箱
-
- 密码:必填,已注册账号对应密码
-
- 验证码:必填,正确且未过期
-
案例3:微信注册的测试
- 需求:
- 1、手机号:合法(11位自然数)且未注册,不能为空
- 2、密码:8-16位英文字母、数字、特殊符号组合,不能是纯数字
- 3、协议:注册时必须勾选
- 4、暂不考虑昵称和头像
测试点设计逻辑:按「长度-类型-规则」三维度拆解
手机号维度测试用例:
- 有效等价类:需同时满足三维度约束——长度为11位、类型为自然数、规则为未注册状态,三者缺一不可。
- 无效等价类:
- 长度维度:包含短于11位、长于11位、空值/零长度(特殊长度场景);
- 类型维度:非自然数格式(含字母、特殊字符、混合格式等);
- 规则维度:已注册的手机号。
- 所有无效场景均遵循「单维度失效+其余维度有效」的组合原则,确保缺陷可精准定位。
边界值分析法
-
需求:计算器功能测试,如果输入的数字大于等于-99同时小于等于99整数时,求和成功;否则给出错误提示
-
分析:涉及到批量数据的测试
-
明确需求:
- ➢ 测试目的:验证两位数整数求和能否成功
- ➢ 测试条件:两个整数范围值
-
划分等价类
-
提取数据编写用例
-
-
适用场景: 针对有边界范围的测试数据输入场景时使用(边界值分析法重点在于边界,可以对等价类补充)
-
范围节点: 选取正好等于、刚好大于、刚好小于边界的值作为测试数据
- ➢ 上点:边界上的点(正好等于)
- ➢ 离点:距离上点最近的点(刚好大于、刚好小于)
- ➢ 内点:范围内的点(区间范围内的数据)
-
引例中范围节点如下
使用步骤
- 明确需求 → 测试目的 和 测试条件
- 划分等价类 → 有效 和 无效
| 有效 | 取值 | 无效 | 取值 |
|---|---|---|---|
| -99到99之间整数 | 50 | 小于-99 | -110 |
| 大于99 | 120 | ||
| 非整数 | 5a | ||
| 空 |
- 确定边界值 → 上点、离点、内点(和步骤2合并)
- 上点:-99,99
- 离点:-100,-98,98,100
- 内点:50(任意一组)
| 有效 | 取值 | 无效 | 取值 |
|---|---|---|---|
| -99到99之间整数 | 50 | 小于-99 | -100 |
| 整数99 | 99 | 大于99 | 100 |
| 整数-99 | -99 | 非整数 | 5a |
| 整数98 | 98 | 空 | |
| 整数-98 | -98 |
- 提取数据设计测试点 → 验证功能点(xmind)
案例 1:验证QQ登录功能
要求:通过边界值进行完善补充
-
账号:6~10位自然数且已注册(非空)
-
密码:正确/错误/空
1.明确需求:测试目的、测试条件
2.划分等价类:有效和无效→ xmind
3.确定边界值:上点离点内点→ xmind
4.提取数据设计测试点:参见xmind
- 测试条件: 长度:6~10位; 类型:自然数; 规则:已注册
-
注: QQ登录测试点→ QQ登录成功→ (......)省略号内容是:“账号是7位自然数且已注册,密码正确”;“账号是9位自然数且已注册,密码正确”
-
案例在原划分等价类→账号→有效 的基础上加了6、10、7、9位长度,原有6-10 位长度取边界值内点8位,五个长度数都是满足账号有效的测试点
-
账号→无效:小于6位取边界值离点5位,大于10位取边界值离点11位,对跟长度相关的两个无效测试点进行取值固定长度,数据补充完测试的完整性更高漏测概率更低,确保覆盖全面
-
案例 2:微信注册的测试
要求:使用边界值进行完善用例
1、手机号:合法(11位自然数)且未注册,不能为空
2、密码:8-16位英文字母、数字、特殊符号组合,不能是纯数字
3、协议:注册时必须勾选
4、暂不考虑昵称和头像
- 案例在原划分等价类→密码→有效 的基础上改了两个8-16位长度为8位、16位固定值(不需要新增),9、12、15也在8-16范围内,随机选三个取固定值(只控长度,类型随机一个,因为目标是测长度,不是测类型,类型还是覆盖得全),案例1“验证QQ登录功能”中 账号→有效 需要添加,因为它总共只有一个有效的,6-10位,改成取任意一个固定值其他的就测不了,所以不能通过改,只能添加。 密码→无效:小于8位取边界值离点7位,大于16位取边界值离点17位
边界值分析法范围优化(离点优化)
- 存在问题:引例中-98和98即属于离点又属于内点,那该如何处理呢?
- 结论:7个点优化为5个点
- ➢ 上点:必选(不考虑区间开闭)
- ➢ 内点:必选(建议选择中间范围)
- ➢ 离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)
- 说明:
-
➢ 开区间:不包含 → ( ) 表示
-
➢ 闭区间:包含 → [ ] 表示
-
➢ 示例:-99<a<=99 →使用开闭区间表示:(-99,99]
-
- 引例优化:
-
边界值分析的离点优化逻辑如下:
- 对于开区间,因不包含上点,以内点测试即可覆盖区间内场景,内点取上点与区间另一端点的中间值;
- 对于闭区间,需同时测试内点与上点以覆盖区间内部及边界场景,再补充区间外离点测试,实现全范围覆盖,避免漏测。其中上点为核心测试对象,上点若存在问题,将直接引发区间范围类严重缺陷。
-
当边界上点属于无效等价类时,选取有效域内的离点开展测试;当边界上点属于有效等价类时,选取无效域内的离点开展测试,以此实现对边界场景及域间差异的精准覆盖。
-
对于半开半闭区间,需区分区间属性针对性选取测试点:开区间侧选取其内部离点验证有效域逻辑,闭区间侧选取其外部离点验证边界外处理规则。
-
针对兼具内点与离点属性的有效等价类元素(如上例中的7、9),仅需选取其一开展内点测试(如上例中的8),无需重复测试同属有效域的离点(如上例中的7、9),重点补充外部离点测试即可实现覆盖(如上例中的5、11)。
- 对于闭区间[6,10],因区间包含边界值6和10,需覆盖内点、上点与外离点三类测试场景:内点选取区间内部典型值(如7、8、9)以验证有效域内逻辑;上点直接测试边界值6和10,确认边界场景的正确性;外离点选取区间外紧邻边界的点(如5、11),验证系统对超出范围值的处理逻辑。其中上点为核心测试对象,若边界值6或10存在异常,将直接导致区间范围类严重缺陷;对于兼具内点与离点属性的有效等价类元素(如7、9),仅需选取其一开展测试,无需重复验证同属有效域的离点,通过内点+上点+外离点的组合测试,可实现对闭区间[6,10]的全场景覆盖,避免漏测。
-
若是开区间(6,10),对于开区间(6,10),因区间本身不包含边界值6和10,测试小于6或大于10的外离点无覆盖价值,无需开展此类测试。
-
在边界值测试用例设计中,四个候选离点最终仅需保留两个;上点(边界点)与内点为必选测试点,需纳入用例集
等价类边界值xmind测试点案例
某用户名密码登录测试设计方法(要求以xmind形式输出测试点)
某理财系统注册功能测试用例设计(要求以xmind形式输出测试点)
> 需求:
> * 账号:11位自然数手机号
> * 密码提示:6\~16位字母、数字组合,也支持特殊符号
> * 图片验证码:正确未过期
> * 短信验证码:正确未过期,例如:666666
> * 邀请人:非必填,已注册的手机号
> * 协议:同意勾选
- 金融项目注册测试点目的是注册成功,所以有效是注册成功,无效是注册失败
测试点思路
- 变的写出来,不变的一句话来描述所有的就行了
- 在组合注册成功场景的测试点时,若某条件存在五个有效等价类,需全面覆盖这五类;对仅有一个有效等价类的条件,按常规列出;对于具有两个有效等价类的条件,则需将其与五类条件进行组合,且需随机变换组合方式,以确保测试的全面性。
某电商后台会员添加功能测试设计
判定表法
-
说明:等价类、边界值分析法:主要关注数据的输入类测试,对于规则类的验证,无法直接应用
-
定义:是一种以表格形式梳理多条件组合逻辑判断的工具。
-
作用:理清复杂逻辑,解决条件组合测试的混乱问题。
-
判定表适用场景 : 规则类验证:有多个输入条件,多个输出结果,输入条件 之间有组合关系,输入条件和输出结果之间有依赖(制约/因果)关系
-
组成:
-
➢条件(桩):列出问题中的所有条件,列出条件的次序无关紧要。
-
➢动作(桩):列出问题中可能采取的操作(可以有多个),操作的排列顺序没有约束。
-
➢条件(项):列出条件对应的取值,所有可能情况下的真假值。
-
➢动作(项):列出条件项的、各种取值情况下应该采取的动作结果。
-
图中灰色部分为条件桩,绿色部分为动作桩,黄色部分为条件项,蓝色部分为动作项
-
规则:
-
➢判定表中贯穿条件项和动作项的一列就是一条规则(一个测试点)
-
➢假设有n个条件,每个条件的取值有两个(0,1),全组合有2的n次方种规则
-
-
判定表注意事项 : 判定表适用条件不宜过多(不超过4个),否则可以借助因果图
引例:“若用户欠费或者关机,则不允许主被叫”
“如果/若”后面是条件,“那么/则”后面是结果,构造判定表时条件桩前面加“是否”,条件项选择“是”或者“否”
-
应用场景:针对规则的验证
-
有多个输入条件,多个输出结果,输入条件之间有组合关系,输入条件和输出结果之间有依赖(制约/因果)关系
-
适用条件个数不宜过多(不超过4个,如果超过建议使用因果图法)
-
使用步骤
1、明确需求
2、画出判定表:
-
列出条件(条件桩)和结果(动作桩)
-
填写条件真假取值(条件项),并进行全组合
-
根据每组取值确定组合结果(动作项)
3、根据规则编写测试点
- n个条件有2 n种组合,每种组合就是一条测试点
案例:优惠规则验证
需求:
1.指定时间段(符合开始时间和结束时间)
2.消费金额满1000元
如果上述条件同时满足,则可以享受9折优惠,否则不可以享受。
判定表二分法
核心就是用二分思想化简全组合爆炸的判定表,具体分三步:
- 列出全组合:n个条件(真/假),共 2^n 条规则。比如3个条件就有8条。
- 递归二分:挑一个条件,按“真”“假”分成两半。 · 如果某一半里,不管其他条件怎么变,结果都一样,这一半就合并成一条规则(其他条件标为“无关”)。 · 如果结果不一样,就在这一半里再选新条件继续二分,直到每一块结果唯一。
- 得到简化表:最终每个块对应一条规则,覆盖所有不重复的动作结果。
一句话:不停把条件集从中间切开,能合并就合并,不能合并就继续切,直到所有规则都不冗余。
上图判定表中,有两个条件,4条规则,第一行(第一个条件桩)里的条件项先按照“是”“否”对半分,分为两个“是”两个“否”(第一二个条件项“是”,三四个条件项“否”,第二行(第二个条件桩)分为第一个条件项“是”,第二个条件项“否”,第三个条件项“是”,第四个条件项“否” 。若是3个条件8条规则,第一个条件桩分为:第一二三四条件项为“是”,第五六七八条件项为“否”;第二个条件桩分为:第一二条件项为“是”,第三四条件项为“否”,第五六条件项为“是”,第七八条件项为“否”;第三个条件桩分为:一“是”二“否”三“是”四“否”五“是”六“否”七“是”八“否”
流程图法(场景法)
说明:用图形(流程图)表示业务流程,测试每条路径。
◆ 业务:指软件为满足用户特定的业务需求而设计并实现的一系列功能(组合)
◆ 示例:电商APP下单业务(登录→搜索→添加购物车→下单→支付)
流程图:使用一些特定的图像和箭头线表示程序的业务走向。
流程图 – 适用场景
根据用户使用的各种业务场景(功能组合),验证产品是否满足需求的过程
什么时候测业务流程?一般是开发提测后【冒烟】,先进行业务流程测试(确保正常功能具备可测性)
流程图应用:作用:确保复杂流程不漏测,解决业务覆盖问题
使用步骤:
① 根据流程图找出业务路径(从开始到结束节点数路径,一条路径一条测试点)
-
有流程图:产品需求提供
-
无流程图:根据业务步骤,自己画流程图
② 通过找出的路径设计测试点(每条路径对应一个测试点)
案例 :根据流程图,针对“商城用户下单流程”设计测试点
冒烟测试选择:业务正向流程,验证程序基本功能能否使用(具备可测性)