您现在的位置是:首页 >技术交流 >啥是等价类网站首页技术交流
啥是等价类
简介啥是等价类
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 |
参考
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结