您现在的位置是:首页 >技术交流 >啥是等价类网站首页技术交流
啥是等价类
简介啥是等价类
1. 等价类基础背景介绍
1.1 等价类的定义:
等价类是指某个
输入域
的子集合
。在该子集合中,各个输入数
据对于揭露程序中的错误都是等效的
,具有等价特性
。
1.2 等价类的类型划分
软件不仅要能接收
合理数据
,也要能经受异常数据
的考验。这样的测试才能确保软件具有更高的可靠性
,故分有效等价类
和无效等价类
。
1.2.1 有效等价类
有意义
的输入数据构成的集合
确认是否实现
了规格说明中所规定的功能和性能
(确认过程)
1.2.2 无效等价类
无意义
的输入数据构成的集合
检验程序对于无效数据
的异常处理
能力(检验过程)
1.3 等价类对测试的意义:
等价类将
不能穷举
的测试过程进行合理分类
,从而保证设计出来的测试用例具有完整性
和代表性(无冗余性)
- 完备性体现在:等价类指互不相交的
一组子集
,这些子集的并
是整个集合。- 无冗余性体现在:测试某等价类的
代表值
就等于对这一类其它值的测试。
2. 使用等价类划分方法
设计测试用例(参考 第5条)
第 1 步:
划分
等价类(列出等价类表)。
第 2 步:选取
测试用例。
3. 等价类测试用例
的类别
“健壮”
→所有等价类都有考虑, 不仅考虑有效值,还考虑无效值。
“强”
→ 基于多缺陷假设。
3.1 弱一般等价类
遵循单缺陷原则,要求用例覆盖
每个变量
的一种取值
即可,取值为有效值
.
3.2 弱健壮等价类
在弱一般等价类的基础上,增加取值为
无效值
的情况。
- 对于有效输入,使用每个
有效值类
的一个值
- 对于无效输入,测试用例将拥有
一个无效值
,并保持其余
的值是有效的
。
3.3 强一般等价类
遵循
多缺陷原则
,要求用例覆盖每个变量
的每种取值
之间的迪卡尔乘积
,即所有变量所有取值的所有组合
,取值为有效值
。
3.4 强健壮等价类
在
强一般等价类
的基础上,增加取值为无效值
的情况。
4. 等价类划分的原则
4.1按照区间
划分
例子:输入值是学生成绩,范围是0~100之间
- 有效等价类:0≤并≤100,如0,1,10等
- 无效等价类:<0 或 >100,如-1,101等
弱一般等价类:
0~100
中任意一个数为测试数据,只设计1个用例
即可
强一般等价类:分为-1
、0~100
、101
三个等价类,需要设计3个用例
弱健壮等价类:考虑到60分在实际情况中为特殊数字,划分0
、0~60
、60
、60~99
、100
、5个用例
强健壮等价类:还要多考虑各种非法输入
,如负数
、其他字符
等等
4.2 按数值
划分
例子:输入条件说明输入学历为本科、硕士和博士3种之一
- 有效等价类:本科、硕士和博士其中一种
- 无效等价类:除要求的2种外其他字符,如小学、专科等
4.3按照数值集合
划分
例子:密码输入框,要求密码必须是数字或字母
- 有效等价类:密码是数字和字母的组合(还可以细分)
- 无效等价类:密码包括中文、密码包括其他符号等
4.4 按限制条件或规则
划分
例子:校内电话号码拨外线为9开头
- 有效等价类:9+外线号码
- 无效等价类:非9开头+外线号码,9+非外线号码等
4.5 细分等价类
等价类还可以进一步划分为更小的等价类,并建立
等价类表
5、等价类划分法
的测试用例应用
- 按照
[输入条件]
[有效等价类]
[无效等价类]
建立等价类表
,列出所有
划分出的等价类,为每一个等价类规定一个唯一的编号
。 - 设计一个新的测试用例,使其
尽可能多
地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有
的有效等价类都被覆盖为止。 - 设计一个新的测试用例,使其仅
覆盖一个
尚未被覆盖的无效等价类,重复这一步,直到所有
的无效等价类都被覆盖为止。
5.1 例子:输入值是学生成绩,范围是0~100之间
5.1.1 划分等价类,设定编号
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|
0~100的整数 | 0~100的整数 | 1 | <0 | 2 |
>100 | 3 | |||
非整数 | 4 | |||
非数值类型 | 5 |
5.1.2 编写测试用例对等价类编号进行覆盖
用例编号 | 用例标题 | 数字值 | 预期结果 | 覆盖等价类 |
---|---|---|---|---|
case_1 | 正常范围 | 66 | 输入正确 | 1 |
case_2 | 异常取值(<0) | -1 | 输入错误:必须0~100的整数 | 2 |
case_3 | 异常取值(>100) | 101 | 输入错误:必须0~100的整数 | 3 |
case_4 | 异常取值(非整数) | 12.5 | 输入错误:必须0~100的整数 | 4 |
case_5 | 异常取值(非数值类型) | aaa | 输入错误:必须0~100的整数 | 5 |
参考
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。