黑盒测试之等价类测试
等价类概念
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 |
黑盒测试之等价类测试相关推荐
- 黑盒测试之边界值测试
黑盒测试之边界值测试 边界值的定义 稍高于其边界值及稍低于其边界值的一些特定情况 边界值分析 取点 最小值.略高于最小值.正常值.略低于最大值.最大值等五个点. 边界值分析的假设 单缺陷假设原则:只有 ...
- 黑盒测试之等价类划分法
等价类划分法产生的原因 对系统进行穷尽测试是不可能的 使用有限的数据对系统进行测试是可能的 我们可以选择少量测试用例来测试系统,并满足: 测试是完备的 测试是没有冗余的 等价类基本原理 3个约束:分而 ...
- java test20002_计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试
题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...
- Android 白盒测试之单元测试(junit),黑盒测试之mokey测试
导言: 做安卓也有几个年头,对于小项目基本都不去单元测试和稳定性测试等,都是在出现异常后通过debug处理或log打印即可解决,当然对于大的项目,由于运行时效问题,加快开发效率,一些测试方法必须要做, ...
- 黑盒测试法——等价类划分法(修改版)
黑盒测试法--等价类划分法 实验目的:1.掌握等价类划分的方法 掌握按等价类方法设计测试用例 实验内容: 1.请用等价类划分法为三角形问题划分等价类,并设计相应的测试用例,测试下面三角形问题程序 ...
- 等价类测试与决策表测试
问题:输入年月日year.month.day,其中年份的有效取值范围为[1818,2018],请输出输入日期的前一天,例如输入2018年9月18日,输出为2018年9月17日.若输入日期非法,例如输入 ...
- app专项测试之兼容性测试
文章末尾给大家留下了大量的福利 前言 昨天给大家唠了唠怎么测试app,那么今天笔者还想和大家来唠唠app的专项测试之兼容性测试,废话呢笔者就不多说了,直接进入主题. 1.APP兼容性测试认识 随着AP ...
- 软件测试 6(等价类) --等价类测试
软件测试专栏 上一篇 主目录 下一篇 目录 1 简介 2 等价类测试分类 3 测试实例 [前言] 弱一般等价类测试是基于单缺陷假设,强一般等价类测试是基于多缺陷假设:说等价类健壮是因为考虑无效值(一般 ...
- Android专项测试之崩溃测试(CPU)
Android专项测试之崩溃测试(CPU) 崩溃问题类型 ❖ ANR:❖ 主线程5s内没响应 ❖ Java Crash: ❖ 未捕获的android vm异常 ❖ Native Crash: ❖ 未处 ...
最新文章
- UVa 374 - Big Mod
- js、css的阻塞问题
- 谈谈环保问题之四-做环保的程序员
- linux 配置sftp日志,在CentOS 7.5上为SFTP配置ProFTPd
- [剑指offer] 66. 机器人的运动范围
- python-常用模块-time、datetime模块
- Pannellum:实例之自定义热点信息
- Roll A Ball 案例学习
- dms虚拟服务器,取得dms服务器ip
- 机器视觉培训教程-相机的基本知识
- mybatis的resultMap与association等联合查询,多个参数无法传递
- UE-战斗无止境的复刻
- ijkplayer点播和直播视频 问题 解决及优化,视频播放中可能有的bug
- qlv文件是什么?qlv文件格式介绍
- eclipse位数、jdk位数和电脑位数要一样
- AI人工智能对机器人有什么帮助?这些用处可大了
- references column 'xxx' which is not in SELECT list
- 安卓中的hander
- 吴军:优秀的人,都有一些相似之处
- 【单片机】简单I/O口扩展
热门文章
- 虚拟化云计算平台Proxmox VE
- 洛谷——1115 最大子段和(区间DP)
- 使用ssh连接gitHub
- nodejs系列-翻译http
- Python内置类型——list
- 我和我的Android
- 黑客带来了病毒攻击软件还是文化?
- 10年Python大牛倾力打造系统Python学习流程图!
- java计算正方形_在地图计算圆的外接正方形,并返回左上顶点和右下顶点(java、javascript)...
- doxygen 注释规范_编程规范 - doxygen注释规范示例(C++)