白盒测试
1 引言
白盒测试(也称为透明盒测试、开盒测试、玻璃盒测试、透明盒测试、基于代码的测试或结构测试)是一种软件测试方法,其中被测试项目的内部结构/设计/实现是测试者已知的。测试者选择输入到代码中的运行路径,并确定适当的输出。
在这个过程中,编程知识和实现知识是必不可少的。
白盒测试是超越用户界面的测试,深入到系统的细枝末节。
这种方法之所以如此命名,是因为在测试者的眼中,软件程序就像一个白色/透明的盒子;在盒子里面,人们可以清楚地看到。
2 定义
白盒测试是基于组件或系统内部结构分析的测试。
白盒测试设计技术是基于对组件或系统内部结构的分析,推导和选择测试案例的程序编写技术
3 工作流程
白盒测试的工作流程如下:
l 输入:
n 需求、功能规格、设计文件、源代码。
l 处理过程:
n 进行风险分析,以指导整个过程。
l 适当的测试计划:
n 设计测试用例,以覆盖整个代码。执行漂洗-重复,直到软件中无法发现错误。同时,将测试结果进行展示交流。
l 输出结果:
n 准备整个测试过程的最终报告。
4 测试技术
4.1 语句覆盖
在这种技术中,目的是至少遍历所有语句一次。因此,每一行代码都要进行测试。在流程图的情况下,每个节点必须至少遍历一次。由于所有的代码行都被覆盖,有助于指出有问题的代码。
(语句覆盖案例)
4.2 分支覆盖
在这种技术中,测试用例的设计是为了使所有决策点的每个分支至少被遍历一次。在一个流程图中,所有的边缘都必须至少遍历一次。
(需要4个测试案例,使所有分支都被覆盖,即流程图的所有边缘都被覆盖。)
4.3 条件覆盖
在这一技术中,必须涵盖所有个别条件,如下所示:
1. READ X, Y
2. IF(X == 0 || Y == 0)
3. PRINT ‘0’
在这个例子中,有2个条件,X==0和Y==0。现在,测试这些条件的值是TRUE和FALSE。一个可能的例子是:
#TC1 – X = 0, Y = 55
#TC2 – X = 5, Y = 0
4.4 多条件覆盖
在这种技术中,所有可能的条件结果的可能组合都至少测试一次。让我们考虑下面的例子:
1. READ X, Y
2. IF(X == 0 || Y == 0)
3. PRINT ‘0’
#TC1: X = 0, Y = 0
#TC2: X = 0, Y = 5
#TC3: X = 55, Y = 0
#TC4: X = 55, Y = 5
因此,两个单独的条件需要四个测试用例。
同样,如果有n个条件,则需要2n 个测试用例。
4.5 基础路径测试
在这种技术中,根据代码或流程图制作控制流程图,然后计算环形复杂度(Cyclomatic Complexity),确定独立路径的数量,以便为每个独立路径设计最少的测试案例。
步骤:
1. 制作相应的控制流程图
2. 计算环形复杂度
3. 寻找独立路径
4. 设计与每个独立路径对应的测试用例
4.5.1 流程图的符号
它是一个由节点和边组成的定向图。每个节点代表一个语句序列,或一个决策点。一个谓语节点是代表一个决策点,它包含一个条件,在这个条件之后,图就会分裂。区域以节点和边为界。
4.5.2 环形复杂度(Cyclomatic Complexity)
它是衡量软件逻辑复杂度的指标,用来定义独立路径的数量。对于一个图G,V(G)是它的环形复杂度。
4.5.2.1 计算V(G):
l V(G)=P+1,其中P是流程图中的谓语节点数。
l V(G) = E - N + 2,其中E是边的数量,N是节点的总数。
l V(G) =图中非重叠区域的数量。
4.5.2.2 例子
V(G)=4(使用上述任何一个公式)
独立路径数=4
#P1: 1 – 2 – 4 – 7 – 8
#P2: 1 – 2 – 3 – 5 – 7 – 8
#P3: 1 – 2 – 3 – 6 – 7 – 8
#P4: 1 – 2 – 4 – 7 – 1 – . . . – 7 – 8
4.6 循环(Loop)测试
循环被广泛使用,是许多算法的基础,因此,循环测试非常重要。错误经常发生在循环的开始和结束处。
4.6.1 简单循环
对于大小为n的简单循环,测试用例设计为:
l 完全跳过这个循环
l 只能通过一次循环
l 2次传递
l m次传递,其中m<n
l n-1个答案n+1次传递
4.6.2 嵌套循环
对于嵌套循环,所有的循环都被设置为最小计数,我们从最里面的循环开始。对最内层的循环进行简单的循环测试,然后向外进行,直到所有的循环都被测试完毕。
4.6.3 并联的循环
独立的循环,一个接一个。对每个循环都要进行简单的循环测试。
如果它们不是独立的,就像嵌套循环一样对待。
5 测试人员及开发人员
测试员,通常也是开发人员,研究网页上某个字段的实现代码,确定所有合法(有效和无效)和非法的输入,并根据预期的结果验证输出,这也是通过研究实现代码确定的。
白盒测试就像一个机械师的工作,检查发动机,看看汽车为什么不动。
6 测试适用级别
白盒测试法适用于以下级别的软件测试:
l 单元测试:
n 适用于单元内的测试路径。
l 集成测试:
n 适用于单元之间的测试路径。
l 系统测试:
n 用于测试子系统之间的路径。
总体而言,它主要应用于单元测试。
7 优势
l 白盒测试是非常彻底的,因为整个代码和结构都经过测试。
l 它的结果是优化代码,消除错误,并有助于消除额外的代码行。
l 它可以在较早的阶段开始,因为它不需要任何接口。
l 易于自动化。
8 劣势
l 主要缺点是成本很高。
l 重新设计代码和重写代码需要重新编写测试用例。
l 与黑盒测试相比,测试人员需要对代码和编程语言有深入的了解。
l 由于对存在的代码进行了测试,所以无法检测出缺失的功能。
l 如果实现变化过于频繁,测试脚本的维护可能是一个负担。
l 由于这种测试方法与被测试的应用程序密切相关,因此可能无法随时获得满足各种实现/平台的工具。
l 非常复杂,有时也不现实。
9 参考
https://www.geeksforgeeks.org/differences-between-black-box-testing-vs-white-box-testing/
https://en.wikipedia.org/wiki/White-box_testing
http://softwaretestingfundamentals.com/white-box-testing/
https://www.guru99.com/white-box-testing.html
https://www.geeksforgeeks.org/software-engineering-white-box-testing/
- 点赞
- 收藏
- 关注作者
评论(0)