?
点击上方
BeTester ,学习更多知识
让碎片成体系,让测试更专业
文章图片
2019年7月1日,上海正式实行“最严垃圾分类”,其他城市也将陆续开展垃圾分类活动。对于大家来说,如何甄别垃圾属于哪个分类简直就是一次又一次的煎熬。每次成功投放一次垃圾之后,总会走到旁边阿姨旁边问:你是什么垃圾?
文章图片
干垃圾、湿垃圾、可回收垃圾、有害垃圾对于一般人来说难以理解,为了更形象地进行区分,我们以小猪佩奇的饮食做区分:猪可以吃、猪都不吃、猪吃了会死、卖了可以买猪 四类。
文章图片
进行有效的分类,是我们人类所特有的能力,我们给这种能力一个学术性的名称,叫 等价类划分。
1. 什么是等价类
在软件工程中,是把所有可能输入的数据,即程序的输入域划分成若干部分(子集),然后从每一部分中选取少数(有代表性)数据作为测试输入,从而减少了数据输入量从而提高了效率,称之为等价类方法。
日常生活中,除了垃圾分类以外,我们还有很多的等价分类,譬如电影,我们根据地区可以划分为国产电影、港产片、台湾电影、美国电影等。譬如汽车,我们根据其大小会区分微型车、小型车、中型车、大型车等。汽车也可以根据其动力系统划分为电动汽车、插电式混动汽车、汽油车等。
提问:通过性别对人类进行划分,可以划分哪些等价类集合?
回答:?
文章图片
2. 等价类划分准则
2.1 各子集相互独立 各个子集就像是磁铁的两个S极一样,始终互斥。如果出现某一个元素同时出现在两个不同的子集A和B中,那么是否说明A里的所有元素和B的所有元素具有相同的特征,那A集合和B集合是否可以合并?如何A与B合并之后,是否又与其他子集互斥?
所以,我们在进行等价类划分时,务必保证各个子集之间的互斥。
文章图片
2.2 各子集的并集是全集 当我们对某一类事物按照某一规则进行划分后,就会像七巧板一样,有多个集合出来,当把各个集合重新组装起来,仍然能够恢复七巧板原来的模板,否则就是对某一个集合的遗漏分析。
文章图片
2.3 同一子集内所有元素具备相同处理逻辑 物以类聚人以群分,在一个集合里的元素,都应该具备一样的特征。在软件产品开发过程中,作为软件测试工程师的你,是否与测试组内的其他成员一样承担着产品质量的工作?而开发工程师则负责产品功能实现的工作。
3. 等价类分类
经过测试分析,我们对被测对象的输入数据进行了划分,所得到的若干子集合可以归纳为有意义的输入和无意义的输入两部分,我们分别称之为有效等价类和无效等价类。
3.1 有效等价类 有效等价类指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。
3.2 无效等价类 无效等价类和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。
注:这并不是代表等价类划分后只剩下有效等价类和无效等价类,有效等价类和无效等价类更多是从结果来对输入数据集合打标签。4. 等价类划分方法
按区间划分 当输入数据是一段连续的取值时,我们可以通过区间的方式来对输入数据进行划分。譬如,当我们对学生成绩进行划分,可以得出其有效值为 [0, 100]。
文章图片
按数值(集)划分 当输入数据是离散的数据集时,我们可以通过指定的数据或集合来进行划分。譬如,在使用现金购买地铁票时,我们能输入的数值有:1元、5元、10元、20元,这边是我们的有效等价类。
文章图片
按限制条件或规则划分 我们的输入数据依赖于产品规格要求或限制,使得我们只能在特定范围内进行输入。譬如,当我们在注册 微信 的时候,需要输入手机号码。手机号码有相应的规则约束。如何规则内的手机号码就是合法的,否则都是非法输入。
文章图片
5. 等价类实例
微信发送红包时的金额
文章图片
(a)有效等价类:0< x <=200
=> 发送金额为 100 元的微信红包成功
(b)无效等价类:x < 0 或者 x > 200
=> 输入金额为 0元 的微信红包,发送按钮不可用
=> 输入金额为 201元 的微信红包,发送按钮不可用
注:在对区间相关的等价类时,需要结合边界值考虑,本节暂不说明,在边界值章节中展开。输入一个城市,且该城市属于一线城市
文章图片
(a)有效等价类:北京、上海、广州、深圳
=> 输入 深圳 后提示输入正确
(b)无效等价类:北上广深以外的城市
=> 输入 武汉 后提示输入错误
注册邮箱,对用户名进行校验
文章图片
在对电子邮箱地址进行校验时,对用户名有以下约束:
(a)字母az(不区分大小写)、数字09、点、减号、下划线组成。
(b)必须由数字或字母开头或结尾
(c)长度为4~18个字符
分别对上述3个约束划分有效等价类和无效等价类:
(a)字符组合约束:
有效等价类:be_tester-1.0
无效等价类:be+tester
(b)开头结尾约束必须是数字或字母:
有效等价类:1betester,betester1
无效等价类:@betester,betester#
(c)长度约束(4~18):
有效等价类:betester
无效等价类:bet, betesterbetesterbetester
注:当前仅对英文域名进行校验。6. 小结 等价类在测试设计中扮演着十分重要的角色, 是我们进行黑盒测试设计方法中很容易掌握,也能经常应用到项目中的,希望大家能够结合项目需求,进行有效的等价类划分。
---- 更多文章 ----
- 黑盒测试设计专题:等价类
- 软件测试活动分类:按测试覆盖分类
- 软件测试活动分类:按测试方法分类
- 软件测试活动分类:按测试阶段分类
- 软件测试活动分类:按质量属性分类
- Python自动化:Pytest快速入门
- Python自动化:requests编写接口用例
- Python自动化:Selenium编写Web用例
- Python自动化:Appium编写App用例
- Python自动化:自动化测试脚本优化
【黑盒测试设计专题(等价类)】
文章图片