目录

白盒测试与黑盒测试

[TOC]

白盒测试与黑盒测试定义和区别

区别:白盒测试主要用于检测软件编码过程中的错误;黑盒测试主要检测软件的每一个功能是否能够正常使用。软件的黑盒测试意味着测试要在软件的接口处进行;软件的白盒测试是对软件的过程性细节做细致的检查。

白盒测试与黑盒测试的定义

白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。

黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。

白盒测试与黑盒测试的区别

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试。

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试。白盒测试主要是想对程序模块进行检查。

白盒测试覆盖方法

白盒定义

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,白盒指的是程序的内部结构和运作机制是可见的。

白盒目的

通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设置检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒方法

大致分为静态方法和动态方法两大类。

静态分析

是一种不执行程序而进行测试的技术。静态分析的主要目的是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态分析

当软件系统在模拟或真实的环境中执行前、过程中和执行后,对其行为分析。它显示了一个系统在检查状态下是否正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

六种覆盖方法

符号说明

1
2
3
^ 代表逻辑运算符 && 或者 ||
T 代表 True F 代表 False
A / B 代表条件表达式

语句覆盖

使程序中的每个可执行语句都能执行一次的测试用例

测试用例条件: A ^ B = T

http://img.cana.space/picStore/20210913165509.png

判定覆盖(分支覆盖)

对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

测试用例条件:

  •  A ^ B = T
  •  A ^ B = F

http://img.cana.space/picStore/20210913165602.png

条件覆盖

设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果

测试用例条件:

  • A=T     A=F
  • B=T     B=F

http://img.cana.space/picStore/20210913165734.png

判定条件覆盖(分支条件覆盖)

设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

测试用例条件:

  • A ^ B = T    A=T     B=T
  • A ^ B = F A=T     B=F

http://img.cana.space/picStore/20210913165917.png

条件组合覆盖

设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次

测试用例条件:

  • A= T    B= T
  • A= T    B= F
  • A= F    B= T
  • A= F    B= F

http://img.cana.space/picStore/20210913170001.png

路径覆盖

设计测试用例时,覆盖程序中所有可能的执行路径

  • 优点

    这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。

  • 缺点

    于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。路径覆盖虽然是一种比较强的覆盖,但未必考虑判断语句中条件表达式结果的组合,并不能代替条件覆盖和条件组合覆盖。