测试基础技能一:黑盒测试方法概念介绍全集

黑盒测试
定义:黑盒测试又称为功能测试,是把测试对象当作看不见内部结构的黑盒。在完全不考虑程序内部结构的和处理过程的情况下,测试者仅依据程序功能的需求规范考虑确定测试用例和推测结果的正确性。
使用黑盒测试可以导出执行程序所有功能需求的输入条件集,实现功能覆盖。它要求通过设定一定的测试用例,使得每个需求的点都要被测到。
主要方法:等价类划分 、边界值、因果图

1、等价类划分法

1)等价类划分的方法
按区间划分
按数值划分
按数值集合划分
按限制条件或规划划分
按处理方式划分
划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合。

2)划分等价类的经验原则
(1)输入条件的取值范围,可以划分出一个有效等价类和两个无效等价类 。
(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。
(3) 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。
(4) 如果规定了输入数据的一组值(假设N个),而且程序要对每个输入值分别进行处理。
(5)如果规定了输入数据必须遵守的规则,则可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。

3)划分等价类步骤
(1)确立测试用例
在确立了等价类之后,建立等价类表,列出所有划分出的等价类
(2)从已列出的等价类表中按以下原则选择测试用例
a.为每个等价类规定一个惟一的编号
b.设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。
c.重复这一步,最后使得所有有效等价类均被测试用例所覆盖
d.设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖
(3)创建等价类表。
(4)构建测试用例
a.为每一个等价规定一个唯一编号。
b.使用测试案例尽可能多的覆盖有效等价类。
c.使用单独的一个测试案例覆盖单独的一个无效等价类。
d.最后,直到所有的有效等价类和无效等价类均被覆盖。

2、边界值分析
边界值分析法:这是一种补充等价类划分的测试用例设计方法。它在设计测试用例时,不是选择等价类中的任意元素,而是选择等价类边界的值作为测试用例的输入。
等价分类法与边界值分析法的比较:边界值分析法使用范围更广,更复杂,找到的缺陷也更多,需要测试人员有更多的经验和耐心:
a.等价分类法的测试数据是在各个等价类允许的值域内任意选取的;
b.边界值分析法的测试数据必须在等价类的边界值附近选取;

边界值分析原则:
(1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个范围的边界值作为测试的输入数据。
(2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为册数数据。
(3)根据规格说明的每个输出条件,使用原则 1)
(4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
(5)分析规格说明,找出其他可能的边界条件。

3、因果图分析
因果图:这是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,该方法充分考虑了输入情况的各种组合及输入条件之间的相互制约关系。适用范围:适合检查程序输入条件的各种组合情况;产生背景:等价类法、边界值法分析着重考虑输入条件,未考虑输入条件之间的关系。

1) 因果图生成测试用例的基本步骤
(1)分析软件规格说明描述:原因、结果、标识符
(2)分析软件规格说明描述中的语义:找出逻辑关系
(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,添加必要的约束条件;
(4)把因果图转换成判定表;
(5)把判定表的每一列拿出来作为依据,设计测试用例。

2) 因果图标识
测试基础技能一:黑盒测试方法概念介绍全集
原因和结果之间的关系有:
原因与结果之间的关系

①恒等:若C1是1,则E1也是1;否则E1为0。
②非:若C1是1,则E1是0;否则E1是1。
③或:若c1或c2是1,则E1是1;否则E1为0。
④与:若c1和c2都是1,则E1为1;否则E1为0。

3)因果图约束
约束条件符号:
约束条件符号
测试基础技能一:黑盒测试方法概念介绍全集

A.输入条件的约束有以下4类:
① E约束(互斥/异):a和b中至多有一个可能为1,即a和b不能同时为1。
② I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。
③ O约束(唯一);a和b必须有一个,且仅有1个为1。

B.输出条件约束类型
输出条件的约束只有M约束(屏蔽/强制):若结果a是1,则结果b强制为0。

判定表法设计测试用例

4、 判定表:是分析和表达多逻辑条件下执行不同操作的工具。

判定表是由条件桩、动作桩、条件项、动作项四部分组成的表格

1)条件桩:列出了所有条件,通常认为列出条件的次序无关紧要

2)动作桩:列出所有可能的操作,这些操作的排列顺序没有约束

3)条件项:列出了所有条件的取值组合,在所有可能情况下的真假值

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

  1. 规则:任何一个条件组合的特定取值及其他相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。

  2. 判定表的化简:合并判定表中两条或多条具有相同动作,并且其条件项之间存在着极为相似关系的规则这一过程。

  3. 判定表使用场景:如果程序中多个条件决定一个动作,并且每个条件的取值只有两种,且条件和动作之间的逻辑关系明确

  4. 优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并且可以避免遗漏。

  5. 判定表的建立步骤:

1)列出所有的条件和动作

2)确定规则的个数(假如有n个条件,每个条件有2个取值(0、1),就可以产生2的n次方种规则)

3)填写判定表

4)化简判定表

5、状态迁移

6、正交试验法

1)、基本概念:
利用因果图来设计测试用例时,作为输入条件的原因和输出结果之间的因果关系,有时候很难从软件规格说明中得到,而且即使是对于一般中小规模的软件,给出其因果图也可能是很庞大,以至于据此因果图的得到的测试用例数量将达到惊人的程度,这给软件测试工作带来了沉重负担。
为了有效、合理的减少测试的费用,可以利用实际生活中行之有效的正交实验法,进行测试用例的设计。所谓“正交实验法”是从大量的实验中挑选适量的、有代表性的点,应用依据伽罗瓦理论导出的正交表,合理安排实验的一种实验设计方法。利用该方法可以使所有因子和水平在实验中均匀的分布与搭配,均匀规律的变化。
在正交实验设计方法中,通常把判断实验结果优劣的标准叫做实验的指标,把有可能影响实验指标的条件称为因子,而影响实验因子的,叫做因子的水平(或状态)。
在进行实验优化设计时,为了完成明确的实验目的,必须有合理的实验指标,加上合理的基准来挑选实验因子以及相应的水平。

l正交测试源于正交试验设计方法,是从大量的数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法。
l正交测试法就是使用已经造好了的正交表格来安排试验并进行数据分析的一种方法。
它简单易行并且计算表格化,应用性较好。
2)、利用正交实验设计测试用例的步骤:
1.提取功能说明,构造因子–状态表
把影响实验指标的条件称为因子.而影响实验因子的条件叫因子的状态.利用正交实验设计方法来设计测试用例时,首先要根据被测试软件的规格说明书找出影响其功能实现的操作对象和外部因素,把他们当作因子,而把各个因子的取值当作状态.对软件需求规格说明中的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开,分解成具体的有相对独立性的基本的功能要求.这样就可以把被测试软件中所有的因子都确定下来,并为确定个因子的权值提供参考的依据.确定因子与状态是设计测试用例的关键.因此要求尽可能全面的正确的确定取值,以确保测试用例的设计作到完整与有效。
2.加权筛选,生成因素分析表
对因子与状态的选择可按其重要程度分别加权.可根据各个因子及状态的作用大小,出现频率的大小以及测试的需要,确定权值的大小。
3.利用正交表构造测试数据集
正交表的推导依据Galois理论(这里省略,需要时可查数理统计方面的教材)。
利用正交实验设计方法设计测试用例,比使用等价类划分,边界值分析,因果图等方法有以下优点:节省测试工作工时;可控制生成的测试用例数量;测试用例具有一定的覆盖率。
四、常用正交表.
说明:L4(2^3)
L: 代表正交表。
4:表行的数目。
2:因子的水平数。
3:表列的数目。

7、错误推测法
1)、定义 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例。

2)、错误推测方法的基本思想:

列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。

1.例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。

2.例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例:

I. 程序是否把空格作为回答

II. 在回答记录中混有标准答案记录

III. 除了标题记录外,还有一些的记录最后一个字符即不是2也不是3

IV. 有两个学生的学号相同

V. 试题数是负数。

3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

I. 输入的线性表为空表;

II. 表中只含有一个元素;

III. 输入表中所有元素已排好序;

IV. 输入表已按逆序排好;

V. 输入表中部分或全部元素相同。

8、探索测试

探索性测试是一种经过深思熟虑的测试方式,没有测试脚本,可以使你的测试超出各种明显已经测试过的场景。探索测试将学习,测试设计和测试执行整合在一起,形成一种测试方法。

识别软件系统潜在的不稳定的区域,探索性测试更注重的是思考和学习,不断发现新的问题,探索性测试是一种有效的测试方法,但不一定会覆盖全部的测试点,可以理解为是一种场景的补充测试方法。没有熟练技能,不会认真思考的“黑盒”测试人员所做的并不是探索性测试,一个合格的探索性测试人员需要认真思考和分析结果,并且在探索测试的过程中做记录。

需要手工测试在开展之前,有明确的战略和方向,但又必须预留一定的发挥空间让每个人的大脑可以充分运转起来,在测试的过程中随机应变。我们把这种测试方式称作探索性测试:它鼓励测试人员一边测试、一边计划、他们使用在测试中收集到的信息,影响自己进行测试的实际方式。。

试用场景:
1)测试时间紧迫,测试场景关联密切,没有明确的测试参考文档及测试用例,此时可借助探索性测试的方法;

2)拓展思维:测试过程中,回归bug时互相交换回归对方的bug,学习不同的测试思维,拓展自己的思维,

熟悉软件主要设计思想,结合实际场景,将一切可想到的联系点进行验证;