黑盒测试方法(等价类划分法、边界值法、决策表、判定表、正交表、场景法、错误推断法)

1、黑盒测试方法

1.1、等价类划分法:

根据软件测试原则可以知道,要做到穷举是不可能的,事实上也是不必要的。为了减少工作量,需要对测试用例进行适当选取。等价类划分法便提供了一种选取测试用例的方法。

等价类划分法把程序的输入域划分为若干部分,然后从每个部分中选取少量具有代表性数据当作测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。也就是说,如果某一类的一个用例发现了错误,这一类中的其他用例也可能发现同样的错误;反之,若某一类中第一个用例没有发现错误,则这一类中的其他用例也不会查出错误。

使用这一方法设计测试用例,首先必须在分析需求规格说明书的基础上划分等价类,列出等价类表。等价类划分有两种不同的情况:有效等价类和无效等价类

在划分等价类时,有一些规则应该遵循。

  1. 、如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。例如,输入值时选课人数,在0~100之间,那么有效等价类是:0<=学生人数<=100;无效等价类是:学生人数<0;学生人数>100。
  2. 、如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。例如,输入日期类型的数据。那么有效等价类是日期类型的数据;无效等价类是非日期类型的数据。
  3. 、如果输入的是布尔表达式,可以分为一个有效等价类和一个无效等价类,比如要求密码非空,则有效等价类为非空密码,无效等价类为空密码。
  4. 、如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。例如,输入条件“职称”的值是初级、中级、高级,那么有效等价类应该有3个:初级、中级、高级。无效等价类有一个:其他任何职称。
  5. 、如果规定了输入数据必须遵循的规则,可以划分出一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

 

划分好等价类后,就可以设计测试用例了。设计测试用例的步骤可以归结为3步:

  1. 、对每个输入和外部条件进行等价类划分,画出等价类表,并为每个等价类进行编号。
  2. 设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,直到所有的等价类被覆盖。
  3. 、为每一个无效等价类设计一个测试用例。

1.2、边界值法:

人们长期的测试工作经验中得知,大量的错误往往发生在输入和输出范围的边界上,而不是范围的内部。因此,针对边界情况设计测试用例,能够更有效地发现错误。

通常情况下,软件测试所包含的边界条件有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等;对应的边界值应该在最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况。

用边界值分析法设计测试用例时应当遵循几条原则:

  1. 、如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例。如以a和b作为输入条件,测试用例应当包括a和b及略大于a和略小于b的值。
  2. 、若规定了值的个数,应分别以最大、最小个数和稍小于最小和大于最大个数作为测试用例。
  3. 、针对每个输出条件,也使用上面的两条原则。
  4. 、如果需求规格说明书中提到的输入或输出范围是有序的集合,如顺序文件、表格等,应注意选取有序集的第一个和最后一个元素作为测试用例。
  5. 、分析需求规格说明书,找出其他可能的边界条件。

1.3、因果图法:

等价类划分法和边界值分析法都主要考虑的是输入条件,而没有考虑输入条件的各种组合以及各个输入条件之间的相互制约关系

通过因果图产生判定表(决策表)。

在因果图中用C表示原因,E表示结果,各结点表示状态,取值0表示状态不出现, 1表示某状态出现。因果图有4中关系符号,如下图。

 

uploading.gif转存失败重新上传取消uploading.gif转存失败重新上传取消

uploading.gif转存失败重新上传取消uploading.gif转存失败重新上传取消与:

uploading.gif转存失败重新上传取消uploading.gif转存失败重新上传取消

 

  1. 、恒等:若原因出现则结果出现,若原因不出现则结果不出现。
  2. 、非(~):若原因出现则结果不出现,若原因不出现则结果反而出现。
  3. 、或(\/):若几个原因中有一个出现则结果出现,若几个原因都不出现则结果不出现。
  4. 、与(/\):若几个原因都出现结果才出现,若其中一个原因不出现则结果不出现。
  5. 、为了表示原因与原因之间,结果与结果之间之间可能存在的约束关系,在因果图中可以附加一些表示约束条件的符号,如图所有,从输入考虑,有4种
  1. 、E约束(互斥):表示a和b两个原因不会同时成立,最多有一个可以成立。
  2. 、I约束(包含):表示a和b两个原因至少有一个必须成立。
  3. 、O约束(唯一):表示a和b两个条件必须有且仅有一个成立。
  4. 、R约束(要求):表示a出现时,b也必须出现。

从输出考虑,有一种约束:

M约束(强制):表示a是1时,b必须为0。

 

因果图法设计测试用例的步骤如下:

  1. 、分析程序规格说明书的描述中,哪些是原因,哪些是结果,原因常常是输入条件或输入条件的等价类,而结果常常是输出条件。
  2. 、分析程序规格说明书中描述的的语义内容,并将其表示成连接各个原因与各个结果的因果图。
  3. 、由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的,为表现这些特定的情况,在因果图上使用若干特殊的符号表明约束条件。
  4. 把因果图转化为决策表(判断表)。
  5. 、为决策表中每一列表示的情况设计测试用例。

示例:

下面以一个自动饮料售货机软件为示例,展示因果图分析方法。该自动饮料售货机软件的规格说明如下:

有一个处理单价为1元5角的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”、“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。

 

原因

1.5

 

2

 

可乐

 

雪碧

 

红茶

 

 

 

 

 

 

 

 

 

 

 

1.4、判定表(决策表):

多个条件、每个条件都有多个取值、组合

在一些数据处理问题中,某些操作是否实施依赖于多个逻辑条件的取值。在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的工具就是决策表。

决策表通常由4个部分组成:

  1. 、条件桩。列出问题的所有条件。
  2. 、条件项。列出所列条件下的取值,在所有可能的情况下的真假值。
  3. 、动作桩。列出问题规定可能采取的动作。
  4. 、动作项。列出在条件项的各种取值情况下应采取的动作。

示例:(自动饮料售货机)

 

 

1

2

4

5

6

7

8

9

10

11

条件

1.5

1

1

1

0

0

0

0

0

0

0

2

0

0

0

1

1

1

1

0

0

0

1

0

0

1

0

0

0

1

0

0

0

1

0

0

1

0

0

0

1

0

0

0

0

0

0

1

0

0

0

1

中间

1

1

1

1

1

1

1

0

0

0

1

1

0

1

1

1

0

1

1

1

动作

0.5

0

0

0

1

1

1

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

1

0

0

1

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

 

1.5、正交表(正交实验法):

参考资料:https://blog.csdn.net/ygyoe/article/details/80183547

在将因果图转换为决策表来生成测试用例时,若要进行全面测试,其得到的测试用例数目多的惊人。

正交实验法是从大量的实验数据中挑选适量的、具有代表性的点,合理安排测试的设计方法。

日本著名的统计学家田口玄一将正交实验选择的水平组合列成表格,称为正交表。

正交表的形式为:L[行数](水平数[因素数]):

其中行数表示正交表中行的个数,即实验次数,也是通过正交实验法设计的测试用例个数。

因素数是正交表中列的个数,即要测试的功能点。

水平数是任何单个因素能够取得的值的最大个数。

正交表具有以下两项性质:

  1. 、每一列中,不同的数字出现的次数相等。
  2. 、任意两列中数字的排列方式齐全相等。

每个因素的每个水平于另一个因素的每个水平各碰一次,这就是正交性。

1.6、场景法:

现在软件很多都是用事件触发来控制流程,事件触发时的情形变形成场景,而同一事件不同的触发顺序和处理结果就形成了事件流。

用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有的基本流和备选流。

  1. 、基本流。采用黑直线表示,是经过用例的最简单路径,表示无任何差错,程序从开始执行到结束。
  2. 、备选流。采用不同颜色表示,一个备选流可以从基本流开始,在某个特定的条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不再加入到基本流中。

示例:(ATM机)

 

1.7、错误推断法:

根据经验或直觉推测程序中可能存在的各种错误。

2、黑盒测试方法选择

黑盒测试的每种测试方法都有各自的优点、缺点,需要测试人员根据实际项目特点和需要选择合适的方法设计测试用例。以下是选择方法的4条经验:

  1. 、在任何情况下都必须选择边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
  2. 、必要时用等价类划分法补充一些测试用例。
  3. 、根据经验或直觉推测程序种可能存在的各种错误,用错误推测法再追加一些测试用例。
  4. 、如果程序的功能说明中含有输入条件的组合情况,则可选用因果图法和决策表法。

选择合适的测试方法能够极大地提高黑盒测试的效率。除了上述的4条经验外,还需要测试人员积累实际的测试经验,做出合适的选择。

3、黑盒测试方法与白盒测试方法的比较

白盒测试和黑盒测试是两类软件测试方法,传统的软件测试活动基本上都可以划分到这两类测试方法中。看图

黑盒测试

白盒测试

不涉及程序结构

考察程序逻辑结构

用软件规格说明书生成测试用例

用程序结构信息生成测试用例

可适用于从单元测试到系统验收测试

主要适用于单元测试和集成测试

某些代码段得不到测试

对所有逻辑路径进行测试

 

白盒测试和黑盒测试各有侧重点,不能相互取代,在实际测试活动中,这两种测试方法不是截然分开的。

 

Python入门经典教程:

Python第一讲(语法基础)https://www.bilibili.com/video/av67037324/

Python第二讲(列表和元组)https://www.bilibili.com/video/av67040168/

Python第三讲(字典)https://www.bilibili.com/video/av67041421/

Python第四讲(函数)https://www.bilibili.com/video/av67042661/

Python第五讲(面向对象上)https://www.bilibili.com/video/av67299599/

Python第六讲(面向对象下)https://www.bilibili.com/video/av67303549/

Python第七讲(文件操作与异常处理)https://www.bilibili.com/video/av67304976/

Python第八讲(时间模块和正则表达式)https://www.bilibili.com/video/av67307233/

Python第九讲(网络)https://www.bilibili.com/video/av67399049/

Python第十讲(线程)https://www.bilibili.com/video/av68030776/

Python第十一讲(TCP和UDP编程)https://www.bilibili.com/video/av68031231/

Python第十二讲(面向对象案例讲解)https://www.bilibili.com/video/av68031291/

Python入门好教程:https://edu.csdn.net/course/detail/26732

Python面向对象精讲:https://edu.csdn.net/course/detail/26786

Python案例集锦:https://edu.csdn.net/course/detail/26534

 

本人是从事软件测试方面的工作,Python使用多年,目前计划把Python应用的更多的人群中去,欢迎各位朋友加微信交流:

微信二维码

 

发布了5 篇原创文章 · 获赞 6 · 访问量 2989

猜你喜欢

转载自blog.csdn.net/zhao_xx/article/details/100981099
今日推荐