有了软件缺陷的暴露,我们就需要通过各种软件测试的方法来查找出软件的漏洞,编写出测试用例,及时修改bug。
测试路上不迷茫:关注微信公众号【程序员小濠】(主要分享软件测试的学习资源,帮助想转行、进阶、小白成为高级测试工程师…软件测试交流群:175317069)
在下面的这篇文章中,我们将谈论八大典型的黑盒测试方法,一起来学习⑧💡
一、等价类划分法
1、定义
一个程序可以有多个输入,等价类划分就是将这些输入数据按照输入需求进行分类,将它们划分为若干个子集,这些子集即为等价类(某个输入域的子集合),在每个等价类中选择有代表性的数据设计测试用例。
举个例子:
这种方法类似于学生站队,男生站左边,女生站右边,老师站中间,这样就把师生这整个群体划分成了三个等价类。
2、等价类划分法步骤
(1)先从程序规格说明书中找出各个输入条件; (2)再为每个输入条件划分等价类,形成若干互不相交的子集; (3)列出等价表
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
…… | …… | …… |
3、设计测试用例步骤
等价类划分法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
(1)划分等价类
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试代表值就等价于这一类其他值的测试。
那在划分等价类的时候,会出现有效等价类和无效等价类,这个时候我们需要怎么判断呢?
有效等价类就是有效值的集合,它们是符合程序要求、合理且有意义的输入数据。
无效等价类就是无效值的集合,它们是不符合程序要求、不合理或无意义的输入数据。
因此,在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
同时,在划分等价类的时候,需要遵循一定的划分原则:
等价类划分原则:
原则1:如果输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
原则2:如果输入条件规定了输入值的集合或者规定了**“必须如何”的条件**的情况下,可以确立一个有效等价类和一个无效等价类。
原则3:如果输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
原则4:如果规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类。
原则5:如果规定了输入数据必须遵守的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
原则6:在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。
同一个等价类中的数据发现程序缺陷的能力是相同的,如果使用等价类中的其中一个数据不能捕获缺陷,那么使用等价类中的其他数据也不能捕获缺陷;同样,如果等价类中的其中一个数据能够捕获缺陷,那么该等价类中的其他数据也能捕获缺陷,即等价类中的所有输入数据都是等效的。
(2)设计测试用例
- 在确立了等价类之后,建立等价类列表,列出所有划分出的等价类。
- 为每个等价类规定一个唯一编号。
- 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类。重复这一步,直到所有的有效等价类都被覆盖为止。
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类。重复这一步,直到所有的无效等价类都被覆盖为止。
4、案例:学生选修课程
看到这里,不妨再做下案例分析。
案例1:每个学生可以选修1~3门课程,要求采用等价类设计测试用例。
解题思路:首先分析有效等价类和无效等价类,然后建立等价类表。
【解析】
(1)根据题干分析有效等价类和无效等价类:
有效等价类:选修1~3门课
无效等价类:没有选修课、选修3门课以上
(2)根据分析建立等价类表:
(3)根据等价类表设计测试用例覆盖有效等价类和无效等价类:
案例2:某连锁酒店集团实行积分奖励计划,会员每次入住集团旗下酒店均可以获得一定积分,积分由欢迎积分加消费积分构成。其中欢迎积分跟酒店等级有关,具体标准如表1-1所示;消费积分跟每次入住消费金额有关,具体标准为每消费1元获得2积分(不足1元的部分不给分)。此外,集团会员分为优先会员、金会员、白金会员三个级别,金会员和白金会员在入住酒店时可获得消费积分的额外奖励,奖励规则如表1-2所示。
表1-1 集团不同等级酒店的欢迎积分标准
表1-2 额外积分奖励规则
该酒店集团开发了一个程序来计算会员每次入住后所累积的积分,程序的输入包括会员级别L、酒店等级C和消费金额A(单位:元),程序的输出为本次积分S。其中,L为单个字母且大小写不敏感,C为取值1到6的整数,A为正浮点数且最多保留两位小数,S为整数。
【问题一】采用等价类划分法对该程序进行测试,等价类表如表1-3所示,请补充表中空(1)-(7)。
【问题二】根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)-(13)。
二、边界值分析法
1、边界值分析法概述
(1)边界值分析法是对软件的输入或输出边界进行测试的一种方法,它通常作为等价类划分法的一种补充测试。
(2)在等价类划分法中,无论是输入等价类还是输出等价类,都会有多个边界,而边界值分析法就是在这些边界附近寻找某些点作为测试数据,而不是在等价类内部选择测试数据。
2、设计测试用例
设计测试用例步骤:
(1)首先划分等价类,根据等价类划分情况确定边界情况。
(2)选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。
3、边界值设计原则
原则1:如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
原则2:如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
原则3:根据规格说明的每个输出条件,使用前面的原则1。
原则4:根据规格说明的每个输出条件,使用前面的原则2。
原则5:如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
原则6:如果程序中使用了一个内部数据结构,则应该选择这个内部数据结构边界上的值作为测试用例。
原则7:分析规格说明,找出其他可能的边界条件。
三、错误推测法
1、错误推测法概述
错误推测法就是人们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。
2、错误推测法基本思想
(1)列举出程序中所有可能有的错误和容易发生错误的特殊情况(比如,程序只能输入数字,测试时可以输入字母进行测试)