浅析黑盒/白盒测试用例的基本设计方法:等价类划分法、临界值分析法、错误推测法、因果图法
测试用例设计:将软件测试的行为活动,作为一个科学化的组织归纳。
测试用例:设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。
因为我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须从数量极大的可用测试数据精心挑选出具有代表性或者特殊性的测试数据来进行测试。
在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。测试用例的使用令软件测试的实施重点突出、目的明确。在软件版本更新后只修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期。功能测试模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升。
黑盒测试用例设计方法包括:等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景图法等。
一、等价类划分法
1、定义:
等价类划分法是把所有可能输入的数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的、常用的黑盒测试用例设计方法。
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
2、等价类划分有两种不同的情况:有效等价类和无效等价类。
有效等价类,是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。
无效等价类,是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。
3、等价类的划分原则:
- 如果输入是一个取值范围或者值的个数,则划分成一个有效等价类和两个无效等价类;
- 如果输入是一个有限的集合或者必须如何的条件,则划分成一个有效等价类和一个无效等价类;
- 如果输入是一个布尔量,则划分成一个有效等价类和一个无效等价类;
- 如果输入已经划分等价类,针对具体的值处理方式会有所不同更加细化,则划分成多个有效等价类和一个无效等价类;
- 如果输入要同时满足多个条件,则划分成一个有效等价类和多个无效等价类;
4、等价类划分的使用步骤:
- 将需求规格划分成需求子片段;
- 分析需求子片段,找出输入条件;
- 分析输入条件,结合等价类划分原则进行等价类划分;
- 对划分的等价类进行编号;
- 从划分的等价类中选取数据结合测试用例写作规范生成最终的测试用例;
一条测试用例尽量覆盖多个有效等价类;一条测试用例只覆盖一个无效等价类。
5、等价类划分法例题:
(一)一个有效&两个无效
取值范围:驾照年龄18-65周岁
一个有效(18-65之间)
两个无效(17,66)
(二)一个有效&一个无效
取值范围:第三期学员
一个有效(第三期学员)
一个无效(非第三期学员)
(三)一个有效&一个无效
取值范围:男性
一个有效(男性)
一个无效(女性)
(四)多个有效&一个无效
英语考试,60以上合格(含60分)
一个有效:60分以上
60-79:合格
80-89:良好
90-100:优秀
一个无效:60分以下
(五)一个有效&多个无效
个人信息注册:身高,体重,年龄
一个有效:三个资料都填写
三个无效: 身高填写X
体重填写Y
年龄填写Z
二、边界值分析法
1、定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2、与等价类区别:
(1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
3、分析方法:
大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
4、常见边界值:
(1)对16Bit的整数而言,32767和32768是边界
(2)屏幕上光标在最左上、最右下位置
(3)报表的第一行和最后一行
(4)数组元素的第一个和最后一个
(5)循环的第0次、第1次和倒数第2次、最后一次
5、边界值分析法例题:
(一)取值范围:计算器计算100以内正数加减法:1-100
取值:有效:1,100
无效:0,101
值的个数(固定是几):处理三个数是否能组成三角形
有效:3个
无效:2个,4个
(二) 值的个数是取值范围:密码6-16
取值:有效:6,16
无效:5,17
(三)有序的集合:01-12月
取值:有效:01,12
无效:00,13
(四)内部数据结构:栈:储存10个数据
取值:有效:10
无效:11
三、错误推测法
1、定义:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
2、基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
3、例如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:
(1)输入的线性表为空表;
(2)表中只含有一个元素;
(3) 输入表中所有元素已排好序;
(4)输入表已按逆序排好;
(5)输入表中部分或全部元素相同。
四、因果图法
1、定义:因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
2、应用:
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。
五、判定表驱动法
1、定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
2、优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表适合于处理这类问题。
白盒测试常见的用例设计方法有:代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径覆盖测试法、域测试、符号测试。
详细可见这篇博客:测试用例设计方法