白盒测试方法 + 实战

定义

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,白盒指的是程序的内部结构和运作机制是可见的。
  
目的
  通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设置检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试的方法:大致分为静态方法和动态方法两大类。

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

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

1.逻辑覆盖法
2.循环覆盖法
3.基本路径法

逻辑覆盖法的六种方法:

符 说明:

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

(1)语句覆盖

每条语句至少执行一次,重点在语句。
  测试用例条件: A ^ B = T

(2)判定覆盖(分支覆盖)

每个分支都要执行一次,重点在分支。在设计用例的时候,要设计判断语句结果为True和False的两种情况
  
测试用例条件:
A ^ B = T
A ^ B = F

(3)条件覆盖

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

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

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

设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次,即判定+条件覆盖-重复用例。
  
测试用例条件:
A ^ B = TA ^ B = F
A=T A=F
B=T B=F

(5)条件组合覆盖

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

测试用例条件:
A= TB= T
A= TB= F
A= FB= T
A= FB= F

(6)路径覆盖

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

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

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

举例:

【图1.1】

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF

(3)条件覆盖【图 1.2】适用
a) 主要特点:设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果。
b) 用例设计

X Y 路径
1 90 70 ACD
2 40 85 ACE

(4)判定条件覆盖【图 1.2】适用

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF
4 70 90 ACDF

(5)条件组合覆盖** 【图 1.2】适用

X Y 路径
1 90 90 ABF
2 90 70 ACDF
3 90 30 ACEF
4 70 90 ACDF
5 30 90 ACEF
6 70 70 ACEF
7 50 50 ACEF

(6)基本路径法 【图 1.2】适用
a)主要特点: 设计测试用例时,覆盖程序中所有可能的执行路径
b) 用例设计

X Y 路径
1 90 90 ABF
2 50 50 ACEF
3 90 70 ACDF
4 70 90 ACDF

已知三角形三遍abc,现在有个程序能判断三角形类别(如:等腰三角形),请为这个程序设计测试用例。

分析:

  1. 构成三角形的条件:两边之和大于第三边
  2. 构成等腰三角形的条件:任意两边相等
  3. 构成等腰直角三角形的条件:任意两边相等且两边的平方和等于第三边的平方和
  4. 构成等边三角形的条件:三条边都相等

用到设计测试用例的方法:等价类、边界值、因果图

等价类:

  1. 有效等价类
    输入三个正整数或正小数

  2. 无效等价类
    a. 空
    b. 非数字
    c. 小于三个数
    d. 大于三个数
    f. 负整数

测试用例如下:

输入条件 有效等价类 无效等价类
是否是三角形 a>0

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月6日
下一篇 2020年4月6日

相关推荐