白盒测试
白盒测试
软件测试的盒测试方法包括黑盒测试和白盒测试。我们在这里讨论的白盒测试也称为玻璃盒是测试、结构测试、透明盒测试、开盒测试和透明盒测试。它测试软件的内部编码和基础设施,重点是根据预期和期望的输出检查预定义的输入。它基于应用程序的内部工作原理,并围绕内部结构测试展开。在这种类型的测试中需要编程技能来设计测试用例。白盒测试的主要目标是关注通过软件的输入和输出流并加强软件的安全性。
使用术语"白盒"是因为内部视角系统。透明盒或白盒或透明盒的名称表示能够透过软件的外壳看到其内部工作。
开发人员进行白盒测试。在此,开发人员将测试程序的每一行代码。开发人员执行白盒测试,然后将应用程序或软件发送给测试团队,在那里他们将执行黑盒测试测试并根据需求验证应用程序并识别错误并将其发送给开发人员。
开发人员修复错误并进行一轮白盒测试并将其发送给测试人员团队。在这里,修复错误意味着该错误已被删除,并且该特定功能在应用程序上运行良好。
此处,由于以下原因,测试工程师将不包括在修复缺陷中:
修复错误可能会中断其他功能。因此,测试工程师应该始终发现错误,而开发人员应该仍在进行错误修复。
如果测试工程师大部分时间都花在修复缺陷上,那么他们可能无法找到应用程序中的其他错误。
白盒测试包含各种测试,具体如下:
路径测试
循环测试
条件测试
基于内存角度的测试
测试程序的性能
路径测试
在路径测试中,我们将编写流程图并测试所有独立路径。此处编写流程图意味着流程图代表程序的流程,并显示每个程序如何相互添加,如下图所示:
并测试所有独立路径意味着假设从main()到函数G的路径,首先设置参数并测试程序是否在该特定路径中正确,并以相同的方式测试所有其他路径并修复错误。
循环测试
在循环测试中,我们将测试循环,例如 while、for 和 do-while 等,如果工作正常以及条件的大小是否足够,还会检查结束条件。
例如: 我们有一个程序,其中开发人员提供了大约 50,000 个循环。
{
while(50,000)
……
……
}
我们无法手动测试该程序的所有 50,000 个循环周期。所以我们编写了一个小程序,可以帮助所有 50,000 个周期,正如我们在下面的程序中看到的,测试 P 是用与源代码程序类似的语言编写的,这被称为单元测试。它仅由开发人员编写。
Test P
{
……
…… }
如下图所示,我们有1、2、3、4等各种需求。然后,开发者针对并行条件编写了程序1、2、3、4等程序.这里应用程序包含 100 行代码。
开发人员将执行白盒测试,他们将逐行测试所有五个程序以查找错误。如果他们在任何程序中发现任何错误,他们将予以纠正。然后他们又要测试系统,这个过程需要大量的时间和精力,拖慢了产品的发布时间。
现在,假设我们有另一个案例,客户想要修改需求,那么开发人员将进行所需的更改并再次测试所有四个程序,这需要大量时间和精力。
这些问题可以通过以下方式解决:
在这里,我们将为一个类似的程序编写测试,其中开发人员以相关语言编写这些测试代码作为源代码。然后他们执行这些测试代码,也称为单元测试程序。这些测试程序链接到主程序并作为程序实现。
因此,如果代码有任何修改或bug的需求,则开发者在主程序和测试程序中进行调整,然后执行测试程序。
条件测试
在这里,我们将测试 true 和 false 值的所有逻辑条件;也就是说,我们将验证if 和 else 条件。
例如:
if(condition)- true
{
…..
……
……
}
else - false
{
…..
……
……
}
上面的程序在这两种情况下都可以正常工作,这意味着如果条件正确,则 else 应该为假,反之亦然。
基于内存进行测试(大小)透视
代码的大小正在增加,原因如下:
代码重用不存在: 我们举一个例子,我们有四个同一个应用程序的程序,程序的前十行是相似的。我们可以把这十行写成一个离散的函数,上面四个程序也应该可以访问。而且,如果存在任何错误,我们可以修改函数中的代码行而不是整个代码。
开发人员使用可能被修改的逻辑。如果一个程序员编写代码并且文件大小高达 250kb,那么另一个程序员可以使用不同的逻辑编写类似的代码,文件大小高达 100kb。
开发人员声明了许多可能永远不会在代码的任何部分使用的函数和变量。因此,程序的大小会增加。
例如、
int a=15;
int b=20;
String S= "Welcome";
….
…..
…..
….
…..
int p=b;
Create user()
{
……
……
….. 200's line of code
}
在上面的代码中,我们可以看到整数a从未在程序中的任何地方被调用过,而且创建用户函数也从未在任何地方被调用过在代码中。因此,它会导致我们消耗内存。
由于代码量大,我们无法通过验证代码手动记住此类错误。因此,我们有一个内置工具,可以帮助我们测试不需要的变量和函数。而且,这里我们有一个名为 Rational purify 的工具。
假设我们有三个程序,例如程序 P、Q 和 R,它们为 S 提供输入。S 进入程序并验证未使用的变量,然后给出结果。之后,开发人员会点击几个结果,调用或删除不需要的函数和变量。
此工具仅用于C 编程语言 和 C++ 编程语言;对于另一种语言,我们在市场上有其他相关工具可用。
开发者不使用可用的内置函数;相反,他们使用他们的逻辑编写了完整的功能。因此,这会导致我们浪费时间并推迟产品发布。
测试程序的性能(速度、响应时间)
应用程序可能由于以下原因而变慢:
使用逻辑时。
对于有条件的情况,我们将充分使用or & and。
Switch case,这意味着我们不能使用嵌套 if,而不能使用 switch case。
我们知道开发人员正在执行白盒测试,他们明白代码运行缓慢,或者程序的性能也越来越刻意。并且开发人员无法手动检查程序并验证哪一行代码使程序变慢。
为了在这种情况下恢复,我们有一个名为Rational Quantify的工具,它自动解决此类问题。一旦整个代码准备就绪,理性量化工具将遍历代码并执行它。并且我们可以在结果表中以粗线和细线的形式看到结果。
这里,粗线指定了哪一段代码是耗时的。当我们双击粗线时,该工具会自动将我们带到该行或一段代码,它也以不同的颜色显示。我们可以一次又一次地更改该代码并使用此工具。当线条的顺序全部变细时,我们知道程序的呈现增强了。并且开发人员会自动执行白盒测试,因为它比手动执行更节省时间。
白盒测试的测试用例来自设计软件开发生命周期的阶段。数据流测试、控制流测试、路径测试、分支测试、语句和决策覆盖所有这些技术被白盒测试用作创建无错误软件的指南。
白盒测试遵循一些工作步骤,使测试易于管理并易于理解下一步要做什么。执行白盒测试有一些基本步骤。
白盒测试的一般步骤
设计所有测试场景、测试用例并根据高优先级编号确定它们的优先级。
此步骤涉及在运行时研究代码,以检查资源利用率、代码未访问区域、各种方法和操作所花费的时间等。
在此步骤中会测试内部子程序。非公共方法、接口等内部子程序能够适当地或不适当地处理所有类型的数据。
此步骤侧重于测试循环和条件语句等控制语句,以检查不同数据输入的效率和准确性。
在最后一步,白盒测试包括安全测试,通过查看代码如何处理安全来检查所有可能的安全漏洞。
白盒测试的原因
它可以识别内部安全漏洞。
检查代码内部的输入方式。
检查条件循环的功能。
在单个级别测试函数、对象和语句。
白盒测试的优势
白盒测试可优化代码,以便识别隐藏的错误。
白盒测试的测试用例可以轻松实现自动化。
此测试比其他测试方法更彻底,因为它涵盖了所有代码路径。
即使没有 GUI,它也可以在 SDLC 阶段启动。
白盒测试的缺点
对于大规模编程应用程序,白盒测试非常耗时。
白盒测试既昂贵又复杂。
它可能会导致生产错误,因为开发人员没有详细说明。
白盒测试需要对编程语言和实现有详细知识和理解的专业程序员。
白盒测试中使用的技术
数据流测试 |
数据流测试是一组测试策略,它检查程序的控制流,以便根据事件的顺序探索变量的顺序。 |
控制流测试 |
控制流测试通过一个控制结构来确定程序语句或指令的执行顺序。程序的控制结构用于为程序开发测试用例。在这种技术中,测试人员选择大型程序的特定部分来设置测试路径。由程序的控制图表示的测试用例。 |
分支测试 |
分支覆盖技术用于覆盖控制流图的所有分支。它至少涵盖了决策点的每个条件的所有可能结果(真和假)。 |
语句测试 |
语句覆盖技术用于设计白盒测试用例。该技术涉及至少执行一次源代码的所有语句。它用于计算源代码中执行的语句总数,在源代码中存在的语句总数中。 |
决策测试 |
该技术报告布尔表达式的真假结果。每当像 do while 语句、if 语句和 case 语句(控制流语句)这样的语句有可能产生两个或多个结果时,就将其视为决策点,因为有两个结果或真或假。 |
白盒测试和黑盒测试的区别
以下是白盒测试和黑盒测试的显着区别:
白盒测试 |
黑盒测试 |
开发人员可以进行白盒测试。 |
测试工程师执行黑盒测试。 |
要执行 WBT,我们应该了解编程语言。 |
要执行 BBT,无需了解编程语言。 |
在这里,我们将查看源代码并测试代码的逻辑。 |
在这里,我们将根据需求规范验证应用程序的功能。 |
在此,开发者应该了解代码的内部设计。 |
在此,无需了解代码的内部设计。 |