白盒测试?看这一篇就够了
- 什么是白盒测试:
- 白盒测试流程
- 白盒测试技术
- 白色测试分 2 个步骤进行
- 白盒测试的特点
- 白盒测试的优点
- 白盒测试的缺点
五星上将麦克阿瑟曾经说过“在白盒测试面前,黑盒测试就是弟弟“
什么是白盒测试:
白盒测试技术分析内部结构、使用的数据结构、内部设计、代码结构和软件的工作,而不仅仅是黑盒测试中的功能。它也称为玻璃盒测试或透明盒测试或结构测试。白盒测试也称为透明测试或开盒测试。
白盒测试是一种软件测试技术,涉及测试软件应用程序的内部结构和工作原理。测试人员可以访问源代码,并使用这些知识来设计可以在代码级别验证软件正确性的测试用例。
白盒测试也称为结构测试或基于代码的测试,用于测试软件的内部逻辑、流程和结构。测试人员创建测试用例来检查代码路径和逻辑流,以确保它们满足指定的要求。
白盒测试流程
-
输入:需求、功能规格、设计文档、源代码。
-
处理:进行风险分析以指导整个过程。
-
正确的测试计划:设计测试用例以覆盖整个代码。执行冲洗重复,直到达到无错误的软件。此外,还传达了结果。
-
输出:准备整个测试过程的最终报告。
白盒测试技术
-
报表覆盖范围
2. 分支机构覆盖范围:
在这种技术中,测试用例被设计为使得来自所有决策点的每个分支至少被遍历一次。在流程图中,所有边必须至少遍历一次。
-
条件覆盖
在此技术中,必须涵盖所有单独的条件,如下例所示:
读取 X、Y
如果(X == 0 || Y == 0)
打印“0”
#TC1 – X = 0,Y = 55
#TC2 – X = 5,Y = 0
- 多条件覆盖
在该技术中,条件的可能结果的所有可能组合至少被测试一次。让我们考虑以下示例:
读取 X、Y
如果(X == 0 || Y == 0)
打印“0”
#TC1:X = 0,Y = 0
#TC2:X = 0,Y = 5
#TC3:X = 55,Y = 0
#TC4:X = 55,Y = 5
- 基础路径测试
在该技术中,控制流图由代码或流程图组成,然后计算循环复杂度,定义独立路径的数量,以便可以为每个独立路径设计最少数量的测试用例。:
制作相应的控制流程图
计算圈复杂度
找到独立路径
设计每个独立路径对应的测试用例
V(G) = P + 1,其中 P 是流图中谓词节点的数量
V(G) = E – N + 2,其中 E 是边数,N 是节点总数
V(G) = 图中不重叠区域的数量
#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
- 循环测试
循环被广泛使用,它们是许多算法的基础,因此它们的测试非常重要。错误经常发生在循环的开始和结束处。
简单循环:对于大小为 n 的简单循环,测试用例的设计如下:
完全跳过循环
只有一次通过循环
2次通过
m 通过,其中 m < n
n-1 次和 n+1 次通过
嵌套循环:对于嵌套循环,所有循环都设置为其最小计数,并且我们从最内层循环开始。对最里面的循环进行简单的循环测试,然后向外进行,直到测试完所有循环为止。
串联循环:一个接一个的独立循环。每个都应用简单的循环测试。
白色测试分 2 个步骤进行
测试人员应该很好地理解代码
测试人员应该为测试用例编写一些代码并执行它们
白盒测试所需的工具:
-
PyUnit
Sqlmap
Nmap
Parasoft Jtest
Nunit
VeraUnit
CppUnit
Bugzilla
Fiddler
JSUnit.net
OpenGrok
Wireshark
HP Fortify
CSUn
白盒测试的特点
-
代码覆盖率分析:白盒测试有助于分析应用程序的代码覆盖率,这有助于识别未测试的代码区域。
-
访问源代码:白盒测试需要访问应用程序的源代码,这使得测试各个功能、方法和模块成为可能。
-
编程语言知识:执行白盒测试的测试人员必须具备 Java、C++、Python 和 PHP 等编程语言知识,才能理解代码结构并编写测试。
-
识别逻辑错误:白盒测试有助于识别代码中的逻辑错误,例如无限循环或不正确的条件语句。
-
集成测试:白盒测试对于集成测试很有用,因为它允许测试人员验证应用程序的不同组件是否按预期协同工作。
-
单元测试:白盒测试也用于单元测试,其中涉及测试各个代码单元以确保它们正常工作。
-
代码优化:白盒测试可以通过识别任何性能问题、冗余代码或其他可以改进的领域来帮助优化代码。
-
安全测试:白盒测试也可用于安全测试,因为它允许测试人员识别应用程序代码中的任何漏洞。
-
设计验证:验证软件内部设计是否按照指定的设计文件进行实现。
-
检查代码是否准确:验证代码是否按照指南和规范运行。
-
识别编码错误:它发现并修复代码中的编程缺陷,包括语法和逻辑错误。
-
路径检查:它确保探索代码执行的每个可能路径并测试代码的各种迭代。
-
确定死代码:它查找并删除程序正常运行时未使用的任何代码(死代码)。
白盒测试的优点
-
彻底的测试:白盒测试是彻底的,因为整个代码和结构都经过测试。
-
代码优化:它可以优化代码,消除错误,并有助于消除多余的代码行。
-
早期检测缺陷:它可以在早期阶段开始,因为它不需要像黑盒测试那样的任何接口。
-
与SDLC集成:可以在软件开发生命周期中轻松启动白盒测试。
-
复杂缺陷的检测:测试人员可以识别通过其他测试技术无法检测到的缺陷。
-
全面的测试用例:测试人员可以创建更全面、更有效的测试用例,涵盖所有代码路径。
-
测试人员可以确保代码符合编码标准并针对性能进行了优化。
白盒测试的缺点
-
编程知识和源代码访问:测试人员需要具备编程知识并访问源代码才能执行测试。
-
过分强调内部工作:测试人员可能会过多关注软件的内部工作,而可能会错过外部问题。
-
测试中的偏见:测试人员可能对软件有偏见,因为他们熟悉软件的内部工作原理。
-
测试用例开销:重新设计代码、重写代码需要重新编写测试用例。
-
对测试人员专业知识的依赖:测试人员需要对代码和编程语言有深入的了解,而不是黑盒测试。
-
无法检测缺失的功能:在测试现有代码时无法检测到缺失的功能。
-
生产错误增加:生产中出现错误的可能性很高。