白盒测试
它是软件测试的盒子测试方法的两个部分之一。另一方面,软件工程中的白盒测试基于应用程序的内部工作,围绕内部测试。
“白盒”的使用是因为透明盒子的概念。“黑盒测试”中的“黑盒”表示不能看到软件的内部工作方式,因此只能测试最终用户的体验,清晰盒或白盒名称象征着能够看到这一点的能力,同样,“黑盒测试”中的“黑盒”也象征着不能看到软件的内部工作原理。
在本白盒测试教程中,将了解-
- 什么是白盒测试?
- 在白盒测试中验证了什么?
- 如何执行白盒测试?
- 白盒测试示例
- 白盒测试技术
- 白盒测试的类型
- 白盒测试工具
- 白盒测试的优势
- 白盒测试的缺点
在白盒测试中验证了什么?
白盒测试涉及以下软件代码的测试:
- 内部安全漏洞
- 编码过程中的断路或结构不良的路径
- 通过代码的特定输入流
- 预期输出
- 条件循环的功能
- 逐个测试每个语句、对象和函数
测试可以在软件开发的系统级、集成级和单元级进行。其一,它涉及对照预期或期望的输出测试一系列预定义的输入,当特定的输入没有产生预期的输出时,就测试失败了。
如何执行白盒测试?
为了给一个简单的白盒测试解释,我们将其分为两个基本步骤。这是测试人员在使用白盒测试技术测试应用程序时所做的事情:
步骤1) 了解源码
测试人员通常要做的第一件事就是学习和理解应用程序的源代码。由于白盒测试涉及对应用程序内部工作的测试,测试人员(即测试人员)应该能够发现安全问题,并防止黑客和天真用户的攻击,这些黑客和天真的用户可能会有意或无意地将恶意代码注入到应用程序中。
步骤2) 创建测试用例并执行
白盒测试的第二个基本步骤涉及测试应用程序的源代码是否正确的流和结构。其他方法包括手动测试、试用和错误测试以及测试工具的使用,我们将在本文中进一步解释。

白盒测试示例
考虑以下代码段
Printme (int a, int b)
{
------------ Printme is a function
int result = a+ b;
If (result> 0)
Print ("Positive", result)
Else
Print ("Negative", result)
}
----------- End of the source code
软件工程中白盒测试的目标是验证代码中的所有决策分支、循环和语句。
要练习上面白盒测试示例中的语句,白盒测试用例应该是
- a=1,b=1
- a=-1,b=-3
白盒测试技术
一种主要的白盒测试技术是代码覆盖率分析。代码覆盖率分析消除了测试用例套件中的空白。标识了一组测试没有执行的程序区域一旦确定了差距,就可以创建测试用例来验证代码的未测试部分,从而提高软件产品的质量
有一些自动化工具可用于执行代码覆盖率分析。下面是盒式测试员可以使用的一些覆盖率分析技术:
语句覆盖:-该技术要求在软件工程的测试过程中,代码中的每条可能的语句都要至少测试一次。
分支覆盖-此技术检查软件应用程序的每条可能路径(If-Else和其他条件循环)。
除此之外,还有条件覆盖、多条件覆盖、路径覆盖、函数覆盖等多种覆盖类型,使用语句和分支覆盖一般可以达到80-90%的代码覆盖率,这已经足够了。
以下是重要的白盒测试技术:
- 语句覆盖范围
- 决策覆盖面
- 分支机构覆盖范围
- 条件覆盖范围
- 多条件覆盖
- 有限状态机覆盖范围
- 路径覆盖范围
- 控制流测试
- 数据流测试
白盒测试的类型
白盒测试包括几种测试类型,用于评估应用程序、挡路代码或特定软件包的可用性。下面列出了以下内容-
- 单元测试:这通常是对应用程序进行的第一种类型的测试。单元测试是在开发代码的每个单元或挡路上执行的。作为一名软件开发人员,需要开发几行代码、一个函数或一个对象,并对其进行测试,以确保在此阶段发现的两个Bug更便宜、更容易修复。
- 测试内存泄漏:内存泄漏是导致应用程序运行速度较慢的主要原因。在检测内存泄漏方面经验丰富的QA专家在软件应用程序运行缓慢的情况下是必不可少的。
除此之外,一些测试类型既是黑盒测试的一部分,也是白盒测试的一部分。它们如下所列
- 白盒渗透测试:在这项测试中,测试人员/开发人员掌握了应用程序源代码的完整信息、详细的网络信息、涉及的IP地址以及应用程序运行在其上的所有服务器信息,目的是从多个角度攻击代码以暴露安全威胁
- 白盒突变测试:突变测试通常用于发现用于扩展软件解决方案的最佳编码技术。
白盒测试工具
下面是顶级白盒测试工具的列表
- Parasoft Jtest
- EclEmma
- NUnit
- PyUnit
- HTMLUnit
- CppUnit
白盒测试的优势
- 查找隐藏错误进行代码优化。
- 可以很容易地实现自动化。
- 测试更为彻底,通常会覆盖所有代码路径。
- 即使GUI不可用,测试也可以在SDLC中开始。
白盒测试的缺点
- 可能相当复杂和昂贵。
- 通常执行白盒测试用例的开发人员讨厌它。开发人员的白盒测试不详细可能会导致发布错误。
- 白盒测试需要专业的资源,对编程和实现有详细的了解。
- 白盒测试很耗时,更大的编程应用程序需要时间来完全测试。
结束语:
- 白盒测试可能相当复杂。所涉及的复杂性很大。执行单个简单操作的小型应用程序可以在几分钟内完成白盒测试,而大型编程应用程序需要数天、数周甚至更长时间才能完全测试。
- 软件测试中的白盒测试应该在编写软件应用程序时对其进行白盒测试,并在每次修改后再次对其进行白盒测试