等价类概念

1.划分指互不相交的一组子集,这些子集的并集是整个集合。
2.等价类
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭示程序中的错误都是等效的。
翻译一下:比如三角形案例,我们不区分范围内的边界值、正常值,我们认为这些值都是正常值,既然都是正常值,只取一个就好了,这一个点代表了整个集合,我们就认为这个点是个等价类。

测试意义

完备性、无冗余性

等价类划分方法

使用等价类划分方法设计测试用例:
•划分等价类(列出等价类表)
•选取测试用例

有效等价类与无效等价类

有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。

无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。

弱等价类与强等价类测试

弱等价类测试:

把每个等价类都覆盖一遍,尽量多的覆盖有效等价类覆盖每一个无效等价类

弱一般等价类测试

通过使用一个测试用例中的每个等价类(区间)的一个变量实现。

弱健壮等价类测试

在弱一般的基础上添加无效点。
容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
(1)输入错误的数据类型
(2)输入定义域之外的数值

强等价类测试:

笛卡尔积配对

强一般等价类测试

强一般等价类测试基于多缺陷假设,因此需要等价类笛卡尔积的每个元素对应的测试用例。
疑问:测试原则不应该支持单缺陷假设原则吗?

强健壮等价类测试

“强”:是因为有多缺陷假设
“健壮”:是因为考虑了无效值

划分等价类的规则

(1)如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类。
例: 输入值是学生成绩,范围是0~100
则定义两个无效等价类 成绩<0 成绩>100 和一分有效等价类 0<=成绩<=100
(2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。
如:某程序涉及到标识符,其输入条件规定标识符应以字母开头,则以字母开头者作为有效等价类,以非字母开头为无效等价类。
(3)如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类。
(4)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。
例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四个值作为四个有效等价类,另外把四种学历之外的任何学历作为无效等价类。
(5)如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
(6)如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。

NextData测试用例说明

使用等价类划分法为NextDate函数列出输入域等价类表,并设计相应的测试用例。(说明:这里假定NextDate函数中年份year的取值范围为1912年到2050年之间)

既然是用等价类去设计测试用例,我们首先就需要去设计等价类:

在日期范围栏中的有效等价类,无效等价类,也就是第3条和第8条为什么一样呢?也许看完第四条测试用例你就会明白。

输入等价类的设计是从两个方面给出的,一个是输入数据的类型和长度,另一个是输入数据的定义域。并且对应地给出了无效等价类,在等价类的旁边用括号进行标注,方便设计测试用例的时候简洁、方便。

以下为测试用例

ID 预期输出 备注 解释
1 1912 12 31 1913.1.1 17,14,5 年是边界值且为闰年 覆盖等价类的测试用例
2 1912 2 29 1912.3.1 17,13,3 覆盖等价类的测试用例
3 1912 2 28 1912.2.29 17,13,2 覆盖等价类的测试用例
4 1912 2 30 闰年2月错误 17,13,9 注意这条语句
5 1913 4 30 1913.5.1 18,11,4 非闰年 覆盖等价类的测试用例
6 1913 10 0 日期出错 18,12,6 开始测试无效等价类 年月一定要满足有效等价类 因为只测试6
7 1913 7 32 日期出错 18,12,7
8 1913 2 29 日期出错 18,13,8
9 1913 11 31 日期出错 18,11,10
10 1912 0 15 月份出错 17,15,1
11 1913 13 15 月份出错 18,16,1
12 1911 1 15 年份出错 19,12,1
13 2051 1 15 年份出错 20,12,1

前三条语句覆盖了有效等价类。

第四条语句:9是一条闰年2月这个条件下的无效等价类,因此是9而非4.

练习2:电话号码问题

某城市电话号码由三部分组成。
它们的名称和内容分别是:
(1)地区码:空白或三位数字;
(2)前 缀:非(‘0’或‘1’)的三位数字;
(3)后 缀:4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。

设计测试用例

用例编号 地区码 前缀 后缀 预计输出 备注
1 空白 111 1111 满足条件 1,3,5
2 111 234 1111 满足条件 2,4,5
3 he 111 1111 地区码错误 6,3,5
4 11 0 1111 地区码错误 7,4,5
5 1111 111 1111 地区码错误 8,3,5
6 空白 he 1111 前缀错误 1,9,5
7 空白 022 1111 前缀错误 1,10,6
8 空白 122 1111 前缀错误 1,11,7
9 空白 22 1111 前缀错误 1,12,8
10 空白 2222 1111 前缀错误 1,13,9
11 空白 111 hell 后缀错误 1,3,14
12 空白 111 111 后缀错误 1,3,15
13 空白 111 11111 后缀错误 1,3,16

黑盒测试之等价类测试相关推荐

  1. 黑盒测试之边界值测试

    黑盒测试之边界值测试 边界值的定义 稍高于其边界值及稍低于其边界值的一些特定情况 边界值分析 取点 最小值.略高于最小值.正常值.略低于最大值.最大值等五个点. 边界值分析的假设 单缺陷假设原则:只有 ...

  2. 黑盒测试之等价类划分法

    等价类划分法产生的原因 对系统进行穷尽测试是不可能的 使用有限的数据对系统进行测试是可能的 我们可以选择少量测试用例来测试系统,并满足: 测试是完备的 测试是没有冗余的 等价类基本原理 3个约束:分而 ...

  3. java test20002_计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试

    题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...

  4. Android 白盒测试之单元测试(junit),黑盒测试之mokey测试

    导言: 做安卓也有几个年头,对于小项目基本都不去单元测试和稳定性测试等,都是在出现异常后通过debug处理或log打印即可解决,当然对于大的项目,由于运行时效问题,加快开发效率,一些测试方法必须要做, ...

  5. 黑盒测试法——等价类划分法(修改版)

     黑盒测试法--等价类划分法   实验目的:1.掌握等价类划分的方法 掌握按等价类方法设计测试用例 实验内容: 1.请用等价类划分法为三角形问题划分等价类,并设计相应的测试用例,测试下面三角形问题程序 ...

  6. 等价类测试与决策表测试

    问题:输入年月日year.month.day,其中年份的有效取值范围为[1818,2018],请输出输入日期的前一天,例如输入2018年9月18日,输出为2018年9月17日.若输入日期非法,例如输入 ...

  7. app专项测试之兼容性测试

    文章末尾给大家留下了大量的福利 前言 昨天给大家唠了唠怎么测试app,那么今天笔者还想和大家来唠唠app的专项测试之兼容性测试,废话呢笔者就不多说了,直接进入主题. 1.APP兼容性测试认识 随着AP ...

  8. 软件测试 6(等价类) --等价类测试

    软件测试专栏 上一篇 主目录 下一篇 目录 1 简介 2 等价类测试分类 3 测试实例 [前言] 弱一般等价类测试是基于单缺陷假设,强一般等价类测试是基于多缺陷假设:说等价类健壮是因为考虑无效值(一般 ...

  9. Android专项测试之崩溃测试(CPU)

    Android专项测试之崩溃测试(CPU) 崩溃问题类型 ❖ ANR:❖ 主线程5s内没响应 ❖ Java Crash: ❖ 未捕获的android vm异常 ❖ Native Crash: ❖ 未处 ...

最新文章

  1. UVa 374 - Big Mod
  2. js、css的阻塞问题
  3. 谈谈环保问题之四-做环保的程序员
  4. linux 配置sftp日志,在CentOS 7.5上为SFTP配置ProFTPd
  5. [剑指offer] 66. 机器人的运动范围
  6. python-常用模块-time、datetime模块
  7. Pannellum:实例之自定义热点信息
  8. Roll A Ball 案例学习
  9. dms虚拟服务器,取得dms服务器ip
  10. 机器视觉培训教程-相机的基本知识
  11. mybatis的resultMap与association等联合查询,多个参数无法传递
  12. UE-战斗无止境的复刻
  13. ijkplayer点播和直播视频 问题 解决及优化,视频播放中可能有的bug
  14. qlv文件是什么?qlv文件格式介绍
  15. eclipse位数、jdk位数和电脑位数要一样
  16. AI人工智能对机器人有什么帮助?这些用处可大了
  17. references column 'xxx' which is not in SELECT list
  18. 安卓中的hander
  19. 吴军:优秀的人,都有一些相似之处
  20. 【单片机】简单I/O口扩展

热门文章

  1. 虚拟化云计算平台Proxmox VE
  2. 洛谷——1115 最大子段和(区间DP)
  3. 使用ssh连接gitHub
  4. nodejs系列-翻译http
  5. Python内置类型——list
  6. 我和我的Android
  7. 黑客带来了病毒攻击软件还是文化?
  8. 10年Python大牛倾力打造系统Python学习流程图!
  9. java计算正方形_在地图计算圆的外接正方形,并返回左上顶点和右下顶点(java、javascript)...
  10. doxygen 注释规范_编程规范 - doxygen注释规范示例(C++)