什么是白盒测试?
白盒测试被定义为测试软件解决方案的内部结构,设计和编码。在这种类型的测试中,代码对测试人员是可见的。它主要侧重于通过应用程序验证输入和输出的流程,改进设计和可用性,加强安全性。白盒测试也称为透明盒测试,开箱测试,结构测试,基于代码的测试和玻璃盒测试。它通常由开发人员执行。
它是软件测试“盒子测试”方法的两个部分之一。其对应的黑盒测试涉及从外部或最终用户类型的角度进行测试。另一方面,白盒测试基于应用程序的内部工作,并围绕内部测试。
由于透视框概念,使用了术语“WhiteBox”。透明框或WhiteBox名称表示能够透过软件的外壳(或“盒子”)进入其内部工作。同样,“黑匣子测试”中的“黑匣子”表示无法看到软件的内部工作方式,因此只能测试最终用户体验。
白盒测试中验证什么?
白盒测试涉及测试以下软件代码:
- 内部安全漏洞
- 编码过程中的路径损坏或结构不良
- 特定输入流
- 预期输出
- 条件循环
- 单独测试每个语句,对象和函数
测试可以在系统,集成和单元级别的软件开发中完成。白盒测试的基本目标之一是验证应用程序的工作流程。它涉及针对预期或期望的输出测试一系列预定义输入。
如果视频无法访问,请单击此处
如何进行白盒测试?
- 步骤1)理解源代码
测试人员经常做的第一件事就是学习并理解应用程序的源代码。由于白盒测试涉及测试应用程序的内部工作,因此测试人员必须非常了解他们正在测试的应用程序中使用的编程语言。此外,测试人员必须高度了解安全编码实践。安全性通常是测试软件的主要目标之一。
- 步骤2)创建测试用例并执行
白盒测试的第二个基本步骤涉及测试应用程序的源代码以获得正确的流程和结构。一种方法是编写更多代码来测试应用程序的源代码。测试人员将针对应用程序中的每个过程或一系列过程开发少量测试。此方法要求测试人员必须熟悉代码,并且通常由开发人员完成。
白盒测试示例
考虑以下代码
WhiteBox测试的目标是验证代码中的所有决策分支,循环和语句。
要运用上面代码中的语句,WhiteBox测试用例就是
a = 1,b = 1
a= -1,b = -3
白盒测试技术
主要的白盒测试技术是代码覆盖率分析。有自动化工具可用于执行代码覆盖率分析。以下是一些覆盖分析技术
- 语句覆盖: - 至少对代码中的每个可能的语句进行一次测试。
- 分支覆盖 - 此技术检查软件应用程序的每个可能路径(if-else和其他条件循环)。
除此之外,还有许多覆盖类型,例如条件覆盖,多条件覆盖,路径覆盖,功能覆盖等。每种技术都有其自身的优点,并尝试测试(覆盖)软件代码的所有部分。使用Statement和Branch覆盖,您通常可以获得80-90%的代码覆盖率,这已足够。
白盒测试的类型
白盒测试包含几种用于评估应用程序,代码块或特定软件包的可用性的测试类型。下面列出了 -
- 单元测试
它通常是在应用程序上完成的第一种类型的测试。在开发时,对每个单元或代码块执行单元测试。单元测试基本上由程序员完成。作为一名软件开发人员,您需要开发几行代码,一个函数或一个对象,并在软件开发生命周期早期继续进行单元测试以帮助识别大多数错误之前对其进行测试以确保其正常工作。在这个阶段确定的错误更便宜,易于修复。
- 内存泄漏测试
内存泄漏是运行速度较慢的应用程序的主要原因。如果您的软件应用程序运行缓慢,那么在检测内存泄漏方面经验丰富的QA专家非常重要。
除此之外,一些测试类型是黑盒和白盒测试的一部分。它们列出如下
- 白盒渗透测试
在此测试中,测试人员/开发人员拥有应用程序源代码,详细网络信息,涉及的IP地址以及运行应用程序的所有服务器信息的完整信息。目的是从多个角度攻击代码以暴露安全威胁
- 白盒Mutation测试:
Mutation测试通常用于发现用于扩展软件解决方案的最佳编码技术。
参考资料
白盒测试工具
比如
- pytest
- nose
- unittest
- doctest
- Veracode
- EclEmma
- RCUNIT
- NUnit
- JSUnit
- JUnit
- CppUnit
- gtest
白盒测试的优点
- 通过查找隐藏错误来优化代码。
- 白盒测试案例可以轻松实现自动化。
- 由于通常涵盖所有代码路径,因此测试更加彻底。
- 即使GUI不可用,也可以在SDLC中尽早开始测试。
WhiteBox测试的缺点
- 白盒测试可能非常复杂且昂贵。
- 通常执行白盒测试用例的开发人员会厌恶它。开发人员测试的白盒测试不详细可能导致生产错误。
- 白盒测试需要专业资源,并对编程和实现有详细的了解。
- 白盒测试非常耗时,更大的编程应用程序需要时间来完全测试。
小结
白盒测试可能非常复杂。所涉及的复杂性与正在测试的应用程序有很大关系。执行单个简单操作的小型应用程序可以在几分钟内进行白盒测试,而较大的编程应用程序需要数天,数周甚至更长时间才能完全测试。
白盒测试应该在软件应用程序上进行,因为软件应用程序在编写后会在每次修改后再次开发。