概念
白盒测试又称为“结构测试”或“逻辑驱动测试”,把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构和有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
测试的目的是通过尽量少的测试用例将代码的每条可执行语句、每个判断条件都覆盖到
白盒测试用例中的输入数据从程序结构导出,但期望输出务必从需求规格中导出
测试覆盖标准
逻辑覆盖
逻辑覆盖标准有: 语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖。
覆盖标准 | 概念 |
---|---|
语句覆盖 | 每条语句至少执行一次 |
判定覆盖 | 每一判定的每个分支至少执行一次 |
条件覆盖 | 每一判定中每个条件,分别按T/F至少各执行一次 |
判定条件覆盖 | 同时满足判定覆盖和条件覆盖的要求 |
条件组合覆盖 | 求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次 |
发现错误的能力从上到下由弱到强
控制结构覆盖
控制结构覆盖有:基本路径测试、循环测试、条件测试、数据流测试
基本路径测试
- 在程序控制图的基础上,通过分析控制构造的环行复杂性,导出基本可执行 路径集合,从而设计测试用例。
- 设计出的测试用例要保证在测试中程序的每一个基本独立路径至少执行一次。
1.画出程序的控制流图
是描述程序控制流的一种图示方法:
- 图中的每一个圆称为流图的结点,代表一条或多条语句
- 流图中的箭头称为边或连接,代表控制流
- 如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断
区域
:由边和解点封闭起来的区域不要忘记区域外的部分
独立路径(基本路径)
:一条程序执行的路径, 至少包含一条在定义该路径之前的其他基本路径中所不曾用过的边(即:至少引入程序的一个新处理语句集合或一个新条件)。
2.计算圈复杂度
- 流图中区域的数量
- 给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量
- 给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量
3.导出测试用例
根据独立路径设计输入数据,使程序分别执行到V(G)条独立路径。也就是测试用例最多V(G)个就可以。但是测试用例越简化,代表测试越少、可能发现的错误就越少。
4.准备测试用例
测试用例 = {测试数据+期望结果}
- 测试数据是由路径和程序推论出来的;
- 预期结果是从函数说明中导出,不能根据程序结构中导出