1、A Free sample background from Slide 1第四章 白盒测试及其用例的设计第 4章 白盒测试及其用例的设计4.1 白盒测试方法4.2 白盒测试的基本概念4.3 覆盖测试4.4 路径测试4.5 最少测试用例数计算A Free sample background from Slide 2第四章 白盒测试及其用例的设计本章教学目标理论环节n 学习理解白盒测试方法的基本概念n 学习理解白盒测试的覆盖理论n 学习掌握白盒测试的路径表达n 学习掌握白盒测试的基本路径测试法实践环节n 通过案例运用学习掌握覆盖问题的解决方法n 运用基本路径测试方法进行实际程序测试A Free s
2、ample background from Slide 3第四章 白盒测试及其用例的设计4.1 白盒测试方法n 为什么要进行白盒测试?如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个 bug 常常是由多个因素共同导致的,如下图所示。Return假设此时开发工作已结束,程序假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有送交到测试组,没有人知道代码中有一个潜在的被一个潜在的被 0 除的错误。若测试组除的错误。若测试组采用的测试用例的执行路径没有同时采用的测试用例的执行路径没有同时经过经过 x=0和和 y=5/x进行测试,显然测试进行测试,显然测试工作
3、似乎非常完善,测试用例覆盖了工作似乎非常完善,测试用例覆盖了所有执行语句,也没有被所有执行语句,也没有被 0 除的错误除的错误发生。发生。A Free sample background from Slide 4第四章 白盒测试及其用例的设计白盒测试方法 (续)n 白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。n 白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。 但 即使每条路径都测试过了,仍然可能存在错误。因为: 穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是
4、否是一个错误的程序。 穷举路径测试不可能查出程序因为遗漏路径而出错。 穷举路径测试发现不了一些与数据相关的错误。A Free sample background from Slide 5第四章 白盒测试及其用例的设计白盒测试方法 (续)n 采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的: 保证一个模块中的所有独立路径至少被测试一次。 所有逻辑值均需测试真 (true) 和假 (false) 两种情况。 检查程序的内部数据结构,保证其结构的有效性。 在上下边界及可操作范围内运行所有循环。n 白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有: 逻辑覆盖法(逻辑驱
5、动测试) 基本路径测试方法A Free sample background from Slide 6第四章 白盒测试及其用例的设计4.2 白盒测试的基本概念4.2.1 控制流图4.2.2 环形复杂度4.2.3 图矩阵ReturnA Free sample background from Slide 7第四章 白盒测试及其用例的设计4.2.1 控制流图n 控制流图(可简称流图)是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。n 控制流图中包括两种图形符号:节点和控制流线。 节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。
6、控制流线由带箭头的弧或线表示,可称为边。它代表程序中的控制流。n 对于复合条件,则可将其分解为多个单个条件,并映射成控制流图。常见结构的控制流图A Free sample background from Slide 8第四章 白盒测试及其用例的设计常见结构的控制流图其中,包含条件的节点被称为 判定节点 (也叫谓词节点),由判定节点发出的边必须终止于某一个节点,由边和节点所限定的范围被称为 区域 。A Free sample background from Slide 9第四章 白盒测试及其用例的设计4.2.2 环形复杂度n 环形复杂度也称为圈复杂度,它是一种为程序逻辑复杂度提供定量尺度的软件度
7、量。n 环形复杂度的应用 可以将环形复杂度用于基本路径方法,它可以提供:程序基本集的独立路径数量;确保所有语句至少执行一次的测试数量的上界。 独立路径是指程序中至少引入了一个新的处理语句集合或一个新条件的程序通路。 采用流图的术语,即独立路径必须至少包含一条在本次定义路径之前不曾用过的边。n 测试可以被设计为基本路径集的执行过程,但基本路径集通常并不唯一。 A Free sample background from Slide 10第四章 白盒测试及其用例的设计计算环形复杂度的方法n 环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用如下三种方法之一来计算环形复杂度: 控制流图中区域的数量对应于环形复杂度。 给定控制流图 G的环形复杂度 V(G), 定义为V(G) = E-N+2其中, E是控制流图中边的数量, N是控制流图中的节点数量。 给定控制流图 G的环形复杂度 V(G), 也可定义为 V(G) = P+1其中, P是控制流图 G中判定节点的数量。