白盒测试技术 - wolai 笔记
两个重要的测试技术:逻辑覆盖、控制结构测试

1.逻辑覆盖

测试数据在程序执行过程中覆盖的路径。

1.1语句覆盖

选择测试数据,使被测程序中每个语句至少执行一次
输入语句:a, b, x

1.2判定覆盖

每个语句至少执行一次,每个判定的真假分支至少执行一次。
比语句覆盖强,但只覆盖一半路径

1.3条件覆盖

每个语句至少执行一次,判定表达式每个条件取各种可能结果

1.4判定/条件覆盖

取足够多测试数据,使判定表达式每个条件都取各种可能值,且每个判定表达式也都取到各种可能结果。
有时判定/条件覆盖不比判定覆盖更强

1.5条件组合覆盖

选足够多的数据,是每个判定表达式中条件的各种组合都至少执行一次

2.控制结构测试

2.1 基本路径测试

Tom McCabe提出的一种白盒测试技术

(1)根据过程设计结果画出相应流图

(2)计算流图的环形复杂度

V(G)=en+2\mathbf{V}(\mathbf{G})=\mathbf{e}-\mathbf{n}+\mathbf{2}
V(G)=图所在平面被划分为的区域数 V(G)=图所在平面被划分为的区域数
V(G)=判定节点数+1 V(G)=判定节点数+1
  • e=10, n=7
  • V=e-n+2=5
  • V=区域数=5
  • V=判定节点数+1=5

(3)确定线性独立路径的基本集合

独立路径:至少包含一条在定义该路径之前不曾用过的边。
环形复杂度为独立路径基本集的上界
上图的独立路径为:
  • 路径1:1-2-4-6-7
  • 路径2:1-2-4-2-5-7
  • 路径3:1-2-5-7
  • 路径4:1-3-7
  • 路径5:1-3-5-7

(4)设计测试用例覆盖基本集合的路径

2.2基本路径测试示例

(0)示例

计算不超过100个在规定值域内有效数的平均值;同时计算有效数字的综合和个数。
PDL描述的如图。

(1)画出流图

(2)计算环形复杂度

  • V=区域数=6
  • V=17(e)-13(n)+2=6
  • V=5(判定节点)+1=6

(3)确定线性独立路径基本集合

  • path1: 1-2-10-11-13
  • path2: 1-2-10-12-13
  • path3: 1-2-3-10-11-13
  • path4: 1-2-3-4-5-8-9-2-…
  • path5: 1-2-3-4-5-6-8-9-2-…
  • path6: 1-2-3-4-5-6-7-8-9-2-…

(4)设计测试用例执行基本集合中的路径

2.3循环测试

分为四种:

(1)简单循环

  • 零次循环:从循环入口直接跳到循环出口。
  • 一次循环:查找循环初始值方面的错误。
  • 二次循环:检查在多次循环时才能暴露的错误。
  • m次循环:此时的m<n。
  • 最大次数循环、比最大次数多一次循环、比最大次数少一次的循环
示例:

(2)嵌套循环

  • 从最内层循环开始,置所有其它层循环为最小值
  • 对最内层循环做简单循环的全部测试。
  • 逐步外推,测试时保持所有外层循环变量取最小值,其它嵌套内层循环变量取“典型”值。
  • 反复进行,直到所有各层循环测试完毕。

(3)连锁循环

  • 各个循环互相独立,可用与简单循环相同方法进行测试。
  • 几个循环不是互相独立,需要使用测试嵌套循环。

(4)非结构化循环

使用结构化程序设计方法重新设计



Comment