白盒测试


白盒测试

软件测试的盒测试方法包括黑盒测试和白盒测试。我们在这里讨论白盒测试,也称为玻璃盒测试、结构测试、透明盒测试、开盒测试和透明盒测试。它测试软件的内部编码和基础设施,重点是根据预期和期望的输出检查预定义的输入。它基于应用程序的内部工作原理,并围绕内部结构测试展开。在这种类型的测试中需要编程技能来设计测试用例。白盒测试的主要目标是关注通过软件的输入和输出流并加强软件的安全性。

使用术语“白盒”是因为系统的内部视角。透明框或白色框或透明框名称表示能够透过软件的外壳看到其内部工作。

开发人员进行白盒测试。在此,开发人员将测试程序的每一行代码。开发人员执行白盒测试,然后将应用程序或软件发送给测试团队,在那里他们将执行黑盒测试并验证应用程序以及需求并识别错误并将其发送给开发人员。

开发人员修复错误并进行一轮白盒测试并将其发送给测试团队。在这里,修复错误意味着错误已被删除,并且特定功能在应用程序上运行良好。

在这里,由于以下原因,测试工程师将不包括在修复缺陷中:

  • 修复错误可能会中断其他功能。因此,测试工程师应该始终发现错误,而开发人员应该仍在进行错误修复。
  • 如果测试工程师大部分时间都花在修复缺陷上,那么他们可能无法找到应用程序中的其他错误。

白盒测试包含各种测试,具体如下:

  • Path testing
  • Loop testing
  • Condition testing
  • Testing based on the memory perspective
  • Test performance of the program

Path测试

在路径测试中,我们将编写流程图并测试所有独立路径。此处编写流程图意味着流程图代表程序的流程,并显示每个程序如何相互添加,如下图所示:

白盒测试

并且测试所有独立路径意味着假设从 main() 到函数 G 的路径,首先设置参数并测试该特定路径中的程序是否正确,并以相同的方式测试所有其他路径并修复错误。

Loop测试

在循环测试中,我们将测试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 行代码。

白盒测试

开发人员将进行白盒测试,他们将逐行测试所有五个程序以查找错误。如果他们在任何程序中发现任何错误,他们将予以纠正。他们再次必须测试系统,然后这个过程需要大量的时间和精力,并且会减慢产品发布时间。

现在,假设我们有另一个案例,客户想要修改需求,那么开发人员将进行所需的更改并再次测试所有四个程序,这需要大量的时间和精力。

这些问题可以通过以下方式解决:

在此,我们将为类似程序编写测试,其中开发人员以相关语言编写这些测试代码作为源代码。然后他们执行这些测试代码,也称为单元测试程序。这些测试程序链接到主程序并作为程序实现。

白盒测试

因此,如果代码中有任何修改或错误的要求,则开发人员在主程序和测试程序中进行调整,然后执行测试程序。

Condition测试

在此,我们将测试值和值的所有逻辑条件;也就是说,我们将验证ifelse条件。

例如:

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从未在程序中的任何地方被调用过,并且函数Create user也从未在代码中的任何地方被调用过。因此,它导致我们消耗内存。

由于代码量大,我们无法通过验证代码手动记住此类错误。因此,我们有一个内置工具,可以帮助我们测试不需要的变量和函数。而且,这里我们有一个名为Rational purify的工具。

白盒测试

假设我们有三个程序,例如程序 P、Q 和 R,它们为 S 提供输入。S 进入程序并验证未使用的变量,然后给出结果。之后,开发人员将单击几个结果并调用或删除不必要的函数和变量。

此工具仅用于C 编程语言和C++ 编程语言;对于另一种语言,我们在市场上有其他相关工具可用。

  • 开发人员不使用可用的内置功能;相反,他们使用他们的逻辑编写了完整的功能。因此,它导致我们浪费时间并推迟产品发布。

测试程序的性能(速度、响应时间)

由于以下原因,应用程序可能会很慢:

  • 使用逻辑时。
  • 对于有条件的情况,我们将充分使用&
  • Switch case,这意味着我们不能使用嵌套 if,而不能使用switch case。

白盒测试

我们知道,开发人员在进行白盒测试,他们明白代码运行缓慢,或者程序的性能也在变得刻意。并且开发人员无法手动检查程序并验证哪一行代码会减慢程序的速度。

为了在这种情况下恢复,我们有一个名为Rational Quantify的工具,它可以自动解决这些类型的问题。一旦整个代码准备就绪,理性量化工具将遍历代码并执行它。我们可以在结果表中以粗线和细线的形式看到结果。

在这里,粗线指定了哪一段代码是耗时的。当我们双击粗线时,该工具会自动将我们带到该行或一段代码,它也以不同的颜色显示。我们可以一次又一次地更改该代码并使用此工具。当线条的顺序全部变细时,我们知道程序的呈现增强了。开发人员将自动执行白盒测试,因为它比手动执行更节省时间。

白盒测试的测试用例源自软件开发生命周期的设计阶段。数据流测试、控制流测试、路径测试、分支测试、语句和决策覆盖所有这些技术被白盒测试用作创建无错误软件的指南。

白盒测试

白盒测试遵循一些工作步骤,使测试易于管理并易于理解下一个任务要做什么。执行白盒测试有一些基本步骤。

白盒测试的一般步骤

  • 设计所有的测试场景、测试用例并根据高优先级数字对其进行优先级排序。
  • 这一步涉及在运行时研究代码,以检查资源利用率、代码未访问区域、各种方法和操作所花费的时间等。
  • 在此步骤中,对内部子程序进行测试。非公共方法、接口等内部子程序能够适当地或不适当地处理所有类型的数据。
  • 此步骤侧重于测试循环和条件语句等控制语句,以检查不同数据输入的效率和准确性。
  • 在最后一步,白盒测试包括安全测试,通过查看代码如何处理安全来检查所有可能的安全漏洞。

白盒测试的原因

  • 它识别内部安全漏洞。
  • 检查代码内部的输入方式。
  • 检查条件循环的功能。
  • 在单个级别测试函数、对象和语句。

白盒测试的优势

  • 白盒测试优化代码,以便识别隐藏的错误。
  • 白盒测试的测试用例可以轻松实现自动化。
  • 此测试比其他测试方法更彻底,因为它涵盖了所有代码路径。
  • 即使没有 GUI,它也可以在 SDLC 阶段启动。

白盒测试的缺点

  • 当涉及到大规模编程应用程序时,白盒测试太耗时了。
  • 白盒测试非常昂贵和复杂。
  • 它可能导致生产错误,因为开发人员没有详细说明。
  • 白盒测试需要对编程语言和实现有详细知识和理解的专业程序员。

白盒测试中使用的技术

数据流测试 数据流测试是一组测试策略,它检查程序的控制流,以便根据事件的顺序探索变量的顺序。
控制流测试 控制流测试通过控制结构确定程序语句或指令的执行顺序。程序的控制结构用于为程序开发测试用例。在这种技术中,测试人员选择大型程序的特定部分来设置测试路径。测试用例由程序的控制图表示。
分支测试 分支覆盖技术用于覆盖控制流图的所有分支。它至少涵盖了决策点的每个条件的所有可能结果(真和假)。
语句测试 语句覆盖技术用于设计白盒测试用例。该技术涉及至少执行一次源代码的所有语句。它用于计算源代码中执行的语句总数,在源代码中存在的语句总数中。
决策测试 该技术报告布尔表达式的真假结果。当 do while 语句、if 语句和 case 语句(控制流语句)等语句有可能产生两个或多个结果时,就将其视为决策点,因为有两个结果要么真要么假。

白盒测试和黑盒测试的区别

以下是白盒测试和黑盒测试之间的显着差异:

白盒测试 黑盒测试
开发人员可以执行白盒测试。 测试工程师执行黑盒测试。
要执行 WBT,我们应该了解编程语言。 要执行 BBT,无需了解编程语言。
在此,我们将查看源代码并测试代码的逻辑。 在此,我们将根据需求规范验证应用程序的功能。
在此,开发人员应该了解代码的内部设计。 在这里,无需了解代码的内部设计。