关于黑盒测试基本概念和方法

一、定义

       黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。主要试图发现下列几类错误:功能不正确或有遗漏、界面错误、输入和输出错误、数据库访问错误、性能错误、初始化或终止错误。在设计和执行测试用例时,总是首先进行通过测试,在破环性试验之前看看软件的基本功能是否实现是很重要的。黑盒测试的测试用例设计方法有:等价类划分法、边界值分析法、错误推测法、因果图法、判定表分析法、功能图分析法、场景分析法等

二、方法介绍

  • 等价类划分法

        它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类,然后从每个部分中选取具有代表性的数据当做测试用例,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合,利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能,无效等价类与之相反。

       划分等价类的方法与原则:

  1. 按区间划分--在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。                                            例:输入值是学生成绩,范围是0~100                                                                                                                                              关于黑盒测试基本概念和方法                                            

  2. 按限制条件或规则划分--在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

  3. 按数值划分 --在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。例:输入条件规定输入字符为:中文、英文、阿拉伯文三种之一,则分别取这三种语言字符作为三个有效等价类,把三种语言字符之外的任何语言字符作为无效等价类

  4. 按数值集合划分--在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类

  5. 在输入条件是个布尔量的情况下,可确定一个有效等价类和一个无效等价类。布尔量是一个二值枚举类型, 一个布尔量具有两种状态:true 和 false 

  6. 细分等价类--在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类

        确定等价类测试用例的步骤:

  1. 按照[输入条件][有效等价类][无效等价类] 建立等价类表,列出所有划分出的等价类

  2. 为每个等价类规定一个唯一的编号

  3. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止

  4. 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止

      关于黑盒测试基本概念和方法

  • 边界值分析法 

      边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

       边界值设计原则 

  1. 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超过这个范围边界的值作为测试输入数据                                    例:如果程序的规格说明中规定:重量在10~50公斤范围内的邮件,其邮费计算公式为……作为测试用例,则应取10、50、10.01、49.9、  50.01、 9.99等

  2. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数小一的数、比最大个数大一的数作为测试数据                                          例:一个输入文件应该包括1~255个记录,作为测试用例,则应取1、255、0、256等

  3. 将原则1和2应用于输出条件,即设计测试用例使输出值达到边界值和其左右的值                                                                                     

  4. 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例

  5. 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例

  6. 分析程序规格说明,找出其他可能的边界条件

         常见边界值

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

      内部边界值常见以下几种:

  1. 数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制                                                            关于黑盒测试基本概念和方法

  2. 字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。如下列出了一些常用字符对应的ASCII码值                                                                                                                                                                                      关于黑盒测试基本概念和方法

  • 因果图法

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

因果图的基本关系符号和约束

--基本关系符号

  1. 恒等:若ci为1,则ei也是1,否则ei为0                                                                                                                                            

  2. 非(~):若ci是1,则ei是0,否则ei为1                                                                                                                                                                                                                                                                                                                                                            

  3. 或(V):若c1或c2或c3是1,则ei是1,否则ei为0,或可以有任意个输入                                                                                                                                                                                                                                                                                                                      关于黑盒测试基本概念和方法

  4. 与(^):若c1和c2和c3都是1,则ei是1,否则ei为0,与可有任意个输入                                                                                                                                                                                                                                                                                                                        关于黑盒测试基本概念和方法

--基本约束符号

         关于黑盒测试基本概念和方法

       输入条件约束

  1. E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1

  2. I约束(或):a、b、c中至少有一个必须为1,即 a、b、c不能同时为0

  3. O约束(唯一):a和b必须有一个且仅有一个为1

  4. R约束(要求):a是1时,b必须是1,即a为1时,b不能为0                                                                                                                                            

    输出条件约束

  5. M约束(强制):若结果a为1,则结果b强制为0                                                                                                                                                              

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

    1. 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符

    2. 分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图

    3. 由于语法或环境限制,,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件

    4. 把因果图转换为判定表

    5. 把判定表的每一列拿出来作为依据,设计测试用例

  • 判定表驱动法

       因果图方法中已经用到了判定表,它是分析和表达多逻辑条件下执行不同操作的情况下的工具

        判定表的组成

  1. 条件桩:列出了问题的所有条件,列出条件的次序没有约束

  2. 动作桩:列出问题规定可能采取的操作,这些操作的排列顺序无关紧要

  3. 条件项:列出条件桩给出的条件并列出所有可能的取值。针对条件桩的条件和条件项的取值,判断在整个程序模块中的所有可能的情况下其结果的真假值

  4. 动作项:列出在条件项的各种取值情况下应该采取的动作

  判定表的建立步骤

  1. 确定规则的个数,例如:有n个条件,那么决策表中就有2^n个规则(每个条件取真、假值)

  2. 列出所有的条件桩和动作桩

  3. 填入条件项

  4. 填入动作项,得到初始判定表

  5. 简化判定表,合并相似规则

  • 场景法

    现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。

       基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,备选流是以基本流为基础,在经过的每个判定节        点处满足不同的触发条件而形成的其他事件流。

       关于黑盒测试基本概念和方法

       场景法的设计步骤

  1. 根据说明,描述出程序的基本流及各项备选流

  2. 根据基本流和各项备选流生成不同的场景

  3. 对每一个场景生成相应的测试用例

  4. 对生成的所有测试用例重新审查,去掉多余的测试用例,确定测试用例后,为每一个测试用例确定测试数据值

  • 功能图法

    功能图法是用功能图形象地表示程序的功能说明,由状态迁移图和布尔函数组成,同时需要依靠判定表或因果图表示逻辑功能,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型两部分构成。状态迁移图是用于表示输入数据序列以及相应的输出数据,由输入数据和当前状态决定输出数据和后续状态。逻辑功能模型是用于表示在状态中输入条件和输出条件的对应关系,由输入数据决定输出数据,只适用于描述静态说明,输出数据由输入数据决定。

    生成功能图测试用例的方法

  1. 生成局部测试用例:在每个状态中,通过因果图生成局部测试用例

  2. 生成测试路径:利用规则生成从初始状态到最后状态的测试路径

  3. 合成测试用例:合成测试路径与功能图中每个状态的局部测试用例。其结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合

  4. 采用条件构造树测试用例的合成算法

  • 错误推断法

       错误推测法是基于以往的经验和直觉,参照以往的软件系统出现的错误,推测程序中所有可能存在的各种缺陷和错误,从而有针对性地设计测试用例。错误推测法的基本思路是:列举出程序中所有可能的错误和容        易发生错误的特殊情况,根据可能出现的错误情况选择测试用例。

你可能感兴趣的:(关于黑盒测试基本概念和方法)