白盒测试技术的测试方案的基本目标是确定一组最可能发现某个错误或者某类错误的测试数据。
所以其题目考察也是围绕设计测试数据展开,大致分为逻辑覆盖和控制结构测试两大类。
一、逻辑覆盖
可以分为:
- 语句覆盖:选择足够多的测试数据,使得被测程序中每个语句至少执行一次
- 判定覆盖:分支覆盖,不仅每个语句必须执行一次,而且每个判定的每种可能的结果应该至少执行一次。即每个分支都要执行一次
- 条件覆盖:不仅每个语句至少执行一次,而且使得判定表达式中的每个条件都取到各种可能的结果
- 判定/条件覆盖:能同时满足判定覆盖和条件覆盖的逻辑覆盖
- 条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次
这五种覆盖强度逐渐增强。
除此之外还有 - 点覆盖:经过每个节点一次
- 边覆盖:经过每条边一次
- 路径覆盖:每条可能的路径至少执行一次
注意点:
- 先将伪码表示的程序结构画出来,尤其将判断结构画清楚,再依据其做题
- 按照各自的定义写测试用例,注意要给出每个测试用例的预期输出(如果有输出)
- 对于分支覆盖,即针对判断部分取对错(而不是判断部分里面的每个条件),进而将每条路走一遍
- 对于条件组合覆盖,要先把每一个判断部分所有的可能情况列出来,然后进行组合。
二、控制结构测试
可以分为:
1.基本路径测试:
计算程序的环形复杂度,并用该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次。
步骤:
- 根据过程设计结果画出相应的流图
- 计算流图的环形复杂度
- 确定线性独立路径的基本集合
- 设计可强制执行基本集合中每条路径的测试用例
注意点:
- 环形复杂度值等于独立路径数量
- 注意判定结点,在确定独立路径时要以此为判断
- 设计测试用例按照独立路径走
2.条件测试
测试用例能够检查程序模块中包含的逻辑条件,着重测试程序中的每个条件。
主要有:
- 分支测试:对于复合条件C,C的真分支和假分支以及C中每个简单条件,都应该执行一次
- 域测试:要求对一个关系表达式执行3个或4个测试
- BRO测试:基于分支测试、域测试。如果在条件中所有布尔变量和关系变量都只出现一次而且没有公共变量,则BRO测试保证能够发现该条件中的分支错和关系算符错
BRO测试用例设计,要围绕保证三种情况进行:
- 前对后对
- 前不对后对
- 前对后不对
3.循环测试
分为:
1.简单循环
- 跳过循环
- 只通过循环一次
- 通过循环两次
- 通过循环m次,m<n-1
- 通过循环n-1,n,n+1次
n是允许通过循环的最大次数
2.嵌套循环
- 从最内层循环开始测试,其他的循环设置为最小值
- 对最内层循环使用简单循环测试方法,使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的尝试
- 由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为典型值
- 继续进行下去,直到测试完所有循环
3.串接循环
如果串接循环的各个循环都彼此独立,则可以使用前述的测试简单循环的方法来测试串接循环。
如果两个循环串接,而且第一个循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。
当循环不是独立的,使用嵌套循环测试