黑盒测试和白盒测试详解

黑盒测试和白盒测试详解

一、黑盒测试

黑盒测试:也称功能测试或数据驱动测试,它是已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。

黑盒测试一般遵循以下原则:
- 根据相应的、正确的需求设计测试用例。配置项测试依据需求规格说明,系统测试依据软件研制任务书,验收测试依据软件研制任务书或合同/协议。
- 正确地定义等价类。等价类方法是黑盒测试的主要方法,设计测试用例时应根据输入的数据范围,正确地划分有效等价类和无效等价类。
- 覆盖所有的功能需求。 根据测试风险来确定测试重点和优先级,确保软件的常用功能和重要功能得到充分的测试。 
- 加强接口测试。
- 站在用户角度进行测试。尽量模拟用户的使用环境,那些对用户有价值的功能要优先、充分地测试。

(一)方法

1、等价类划分

所谓等价类是指输入域的某个互不相交的子集合,所有等价类的并集便是整个输入域。目的在于测试用例的无冗余性。
该方法是一种重要的,常用的黑盒测试用例设计方法。等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。它主要分为:

  • 有效等价类: 是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。
  • 无效等价类:检查软件功能和性能的实现是否有不符合规格说明要求的地方。

2、边界值分析法

(1)定义
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。目的是针对各种边界情况设计测试用例,可以查出更多的错误。
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
(2)与等价划分的区别

  • 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
  • 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
    (3)设计方法
    确定边界情况(输入或输出等价类的边界)
    选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。

3、判定表方法

(1)定义:判定表能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。利用判定表能够设计出完整的测试用例集合。
在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析即直接采用判定表方法。一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

(2)判定表方法步骤

  • 列出所有的条件桩和动作桩;
  • 填入条件项;
  • 填入动作项,制定初始判定表;
  • 简化、合并相似规则或者相同动作。

4、因果图法

(1)定义:多种输入条件的组合,产生多种结果设计测试用例。
(2)设计方法:

  • 分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标识符。
  • 找出原因与结果,原因与原因之间的对应关系,划出因果图。
  • 在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件。
  • 根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来。
  • 把判定表的每一列作为依据设计测试用例。

补充:其着重检查输入条件组合的方法,其根据输出对输入的依赖关系设计测试用例。

5、场景法

用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。
根据不同的场景设计测试用例,例如用户操作ATM机,就有查询,取款等操作。

6、正交实验法

正交测试法使用已经构造好了的正交表格来安排试验并进行数据分析。
正交表的两大优越性,即“均匀分散,整齐可比”。

7、功能图法

功能图法就是为了解决动态说明问题的一种测试用例的设计方法。
每个程序的功能通常由静态说明和动态说明组成:

  • 静态说明描述了输入条件和输出条件之间的对应关系。
  • 动态说明描述了输入数据的次序或者转移的次序。

8、错误推测法

测试者根据经验、知识和直觉来发现软件的错误,来推测程序中可能存在的各种错误,从而有针对性地进行测试。
特点:
没有依据,只能靠测试者自身实力;
优点:快速切入体会到程序易用与否;
缺点:难以准确知道测试覆盖率。

(二)特点

优点:

(1)对于较大的代码单元来说,黑盒测试比白盒测试效率较高;
(2)测试人员不需要了解细节,包括特定的编程语言;
(3)测试人员和开发人员彼此独立;
(4)从用户的角度测试,很容易理解和接受;

缺点:
(1)测试的只有一小部分,不可能测试全部输入;
(2)没有简明的需求规格说明书,测试用例很难设计;
(3)不能直接对程序段进行测试,改程序段可能隐藏更多错误。

二、白盒测试

白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。(是一种动态分析法)

白盒测试方法应该遵循的原则:
 - 保证一个模块中的所有独立路径至少被测试一次。 
 - 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。
 - 检查程序的内部数据结构,保证其结构的有效性。
 - 在上下边界及可操作范围内运行所有循环。

(一)方法

白盒测试方法主要分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖以及路径覆盖。

  • 语句覆盖:基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
  • 判定覆盖:基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
  • 条件覆盖:基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
  • 判定-条件覆盖:是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。
  • 条件组合覆盖:基本思想是设计足够的测试用例,使得程序中每个判断的所有可能的条件取值组合都至少出现一次。
  • 路径覆盖:设计测试用例时,覆盖程序中所有可能的执行路径
    优点:这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。 缺点:于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。

(二)特点

优点:

(1)迫使测试人员去仔细思考软件的实现;
(2)可以检测代码中的每条分支和路径;
(3)揭示隐藏在代码中的错误;
(4)对代码的测试比较彻底;
(5)最优化。

缺点:
(1)投入成本高,昂贵;
(2)无法检测代码中遗漏的路径和数据敏感性错误;
(3)不验证规格的正确性。

三、示例

软件测试方法应用:

在进行单元测试时,常常采用白盒测试,辅之以黑盒测试。
解释:白盒测试是测试程序内部的逻辑结构及有关信息,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试才是测试的根本,即比较深层次的测试,更容易发现和解决程序中的问题,因此单元测试时应以白盒测试为主,而黑盒测试只能作辅助。

引用

[1]https://www.dandelioncloud.cn/article/details/1547088445969281025
[2https://www.cnblogs.com/nancyxuege/p/9414511.html
[3]https://blog.csdn.net/qq_43411563/article/details/108382480
[4]https://blog.csdn.net/weixin_44997802/article/details/109352327

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