黑盒测试用例设计方法

 

—————————————————————————————————————————

点击上方可订阅关注我VX公众号:蚂蚁质量!也就可以加我微信进VX群。如果你觉得公众号对你有帮助,欢迎推荐给他人。

—————————————————————————————————————————

 

       今天星期天我们聊下黑盒测试,黑盒测试不基于内部设计和代码的任何知识,而是基于需求和功能性。通过测试证明每个实现的功能是否符合功能设计规格要求。黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。下面我们说说常用的五种黑盒测试用例的设计方法。

1. 等价类划分方法

       等价类就是指某个输入域的集合,集合中的每个输入对揭露程序错误来说是等效的;等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例,这就是等价类划分方法,它是功能测试的基本方法。

等价类划分方法设计测试用例

      首先,是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。确定测试用例:为每个等价类规定一个唯一的编号:设计一个测试用例,使其尽可能多覆盖尚未覆盖的有效等价类:设计一个新的测试用例,使其只覆盖一个无效等价类。该方法是一种重要的,常用的黑盒测试用例设计方法。使用该方法设计测试用例要经历

划分等价类(列出等价类表)和选取测试用例两步。

(1) 划分等价类

       划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试。因此,可以把全部输入数据合理划分为若干等价类,在每一个价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。取得较好的测试结果。等价类划分可以有两种不同的情况:有效等价类和无效等价类。

       有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。

     无效等价类:与有效等价类的定义恰巧相反。是指对于程序的规格说明来说是不合理的,没有意义的输入数据所构成的集合:利用它可以检验程序对于无效数据的处理。

等价类组合:一些有代表性的有效等价类和无效等价类的组合。

        由于等价划分和边界值都只孤立地考虑各个输入数据的测试功效,而没有考虑多个输入数据的组合效应,可能会遗漏了输入数据易于出错的组合情况,选择输入组合的一个有效的途径是利用判定表或判定树,列出输入数据各种组合与程序应作的动作(及相应的输出结果)之间的对应关系,然后为判定表的每一列至少设计一个测试用例。

       设计测试用例时,要同时考虑这几种等价类。因为,软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。

(2) 划分等价类的方法

下面给出六条确定等价类的原则:

1) 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。(注意:一般的输入要考虑:值的范围、值的个数),例如,在程序的规格说明中,对输入条件有一句话:“项数可以从1到 999"。则:有效等价类:“1≤项数≤999":两个无效等价类:“项数<1”或“项数>999"。

2) 在输入条件规定了输入值的集合或者规定了”必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类。例如,在对变量标识符规定为”以字母打头的……串”。则:有效等价类:所有以字母打头的串:无效等价类:不在此集合内(不以字母打头)的串。

3) 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。

4) 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

5) 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,规定:一个语句必须以“:”结束。则:有效等价类:以“:”结束的语句:无效等价类:以“:”结束、以“,”结束、以“ ”结束、以LF 结束等等的语句。

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

(3) 设计测试用例

      设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类。然后从划分出的等价类中按以下原则设计测试用例:

1) 为每一个等价类规定一个唯一的编号。

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

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

 

 

2. 边界值方法

        边界值分析是考虑边界条件而选取测试用例的一种黑盒测试方法,是对等价类划分方法的补充。实践证明,软件在输入、输出域的边界附近容易出现差错,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。

       使用边界值分析方法设计测试方案首先应该确定边界情况,通常输入等价类和输出等价类的边界,就是应该注重测试的程序边界情况。选取的测试数据应该正好等于、刚刚小于和刚刚大于边界值,也就是说,按照边界值分析法,应该选取刚好等于、稍小于和稍大于等价类边界值作为测试数据,而不是选取每个等价类内的典型值或任意值作为测试数据。

基于边界值分析方法选择测试用例的原则

1) 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。

2) 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。

3) 根据规格说明的每个输出条件,考虑值的范围情况。

4) 根据规格说明的每个输出条件,考虑值的个数情况。

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

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

7) 分析规格说明,找出其他可能的边界条件。

步骤如下:

1. 通过分析规格说明,找出所有可能的边界条件。

2. 对每一个边界条件,给出满足和不满足边界值的输入数据。

3. 设计相应的测试用例。

对满足边界值的输入可以发现计算错误,对不满足的输入可以发现域错误。该方法会为其它测试方法补充一些测试用例,绝大多数测试都会用到本方法。

 

 

3. 判定表方法

       判定表由四部分组成;条件桩,条件条目,动作,动作条目。任何一个条件组合的取值及其相应要执行的操作构成规则,条目中的每一列是一条规则。条件引用输入的等价类,动作引用被测软件的主要功能处理部分,规则就是测试用例。建立并优化判定表,把判定表中每一列表示的情况写成测试用例。

1) 条件桩(Condition Stub);列出了问题得所有条件。通常认为列出得条件的次序无关紧要。

2) 动作桩(Actin Stub);列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。

3) 条件项(Condition Entry);列出针对它左列条件的取值。在所有可能情况下的真假值。

4) 动作项(Action Enty);列出在条件项的各种取值情况下应该采取的动作。

该方法的使用有以下要求

1. 规格说明以判定表形式给出,或是很容易转换成判定表。

2. 条件的排列顺序不会影响执行哪些操作。

3. 规则的排列顺序不会影响执行哪些操作。

4. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。

5. 如果某一规则的条件得到满足,将执行多个操作,这些操作的执行与顺序无关。

判定表规则

        规则;任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。

判定表的建立步骤

1. 确定规则的个数。假如有n个条件。每个条件有两个取值(0,1),故有 种规则。

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

3. 填入条件项。

4. 填入动作项。等到初始判定表。

5. 简化、合并相似规则(相同动作)。

 

 

4. 因果图

       因果图方法是对等价类的扩展,可以理解为“等价类组合判定表"。因果图即输入等价类与输出等价类的关系图。

        分析程序规格说明的描述中哪些是原因,哪些是结果。原因是输入条件或是输入条件的等价类。结果是输出条件。因果图是一种形式语言,由自然语言写成的规范转换而成,这种形式语言实际上是一种使用简化记号表示数字逻辑图。因果图法是帮助人们系统地选择一组高效测试用例的方法,此外,它还能指出程序规范中的不完全性和二义性。

        因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。如果有N个条件,每个条件有2个取值(0,1),产生2的N次方个规则。

因果图的适用范围

       如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。因果图方法最终生成就是判定表。它适合于检查程序输入条件的各种组合情况。前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。

因果图生成测试用例的基本步骤

1. 分析程序规格说明,引出原因(输入条件)和结果(输出结果),并给每个原因和结果赋予一个标识符。

2. 分析程序规格说明中语义的内容,并将其表示成连接各个原因和各个结果的“因果图”

3. 在因果图上标明约束条件。

4. 通过跟踪因果图中的状态条件,把因果图转换成有限项的判定表。

5. 把判定表中每一列表示的情况生成测试用例。

       如果需求规格说明中含有输入条件的组合,宜采用本方法。有些软件的因果图可能非常庞大,以致于根据因果图得到的测试用例数目非常大,此时不宜使用本方法。

 

 

5. 错误推测法

       基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。错误推测方法的基本思想;列举出程序中所有可能的错误和容易发生错误的特殊情况,根据他们选择测试用例。

常见依据

1) 在单元测试时曾列出的许多在模块中常见的错误。

2) 以前产品测试中曾经发现的错误等。

3) 己发现缺陷的测试方法的推广。

4) 容易发生错误的情况。如;输入或输出为0的情况。输入为空格或输入表格只有一行,共享参数同时使用在几个模块中等等。

5) 补充等价类和边界值法遗漏的一些等价类组合。

6) 一些位置使用了共享变量,设计测试用例,修改一个共享变量,看其他位置有没有同时做修改。

 

 

 

看完这篇内容,麻烦大家点个关注

 

6c70520bcf37f103acb226a324aa6c37.gif

 

-END-

作者简介:风随水

一个从事十五年测试和质量管理者

曾经深圳乃至全国最大最活跃软件测试QQ群群主

致力于质量管理和体系规范

 

你可能感兴趣的:(测试用例)