定义
黑盒测试
黑盒测试是一种软件测试技术,它可以检查软件的功能,而不会窥视其内部结构或编码。黑盒测试的主要来源是客户声明的要求规范。
在此方法中,测试人员选择一个函数并提供输入值以检查它的功能,并检查该函数是否给出了预期的输出。如果函数产生正确的输出,则在测试中传递,否则测试失败。测试团队将结果报告给开发团队,然后测试下一个功能。如果出现严重问题,在完成所有功能的测试后,会将测试结果返回给开发团队进行更正。
-
黑盒测试基于要求的规范,因此在开始时进行检查。
-
测试人员通过选择有效和无效的输入值来检查软件是正确还是错误地处理它们,从而创建肯定的测试场景和不利的测试场景。
-
测试人员开发各种测试用例,如决策表,所有对测试,等效划分,误差估计,因果图等。 包括执行所有测试用例。
-
测试仪将预期输出与实际输出进行比较。 最后一步,如果软件中存在任何缺陷,则将其修复并再次测试。
白盒测试
白盒测试,也称为玻璃盒测试,结构测试,透明盒测试,开箱测试和透明盒测试。它测试软件的内部编码和基础设施,重点是根据预期和期望的输出检查预定义的输入。它基于应用程序的内部工作方式,并围绕内部结构测试。在这种类型的测试中,编程测试用例需要编程技巧。白盒测试的主要目标是通过软件关注输入和输出流,并加强软件的安全性。
由于系统的内部透视,使用术语“白盒子”。透明框或白框或透明框名称表示能够透过软件的外壳进入其内部工作。
白盒测试的测试用例源自软件开发生命周期的设计阶段。数据流测试,控制流测试,路径测试,分支测试,声明和决策覆盖所有这些技术使用白盒测试作为创建无错误软件的指南。
白盒测试的通用步骤
- 设计所有测试场景,测试用例并根据高优先级编号对其进行优先级排序。 此步骤涉及在运行时研究代码以检查资源利用率,而不是访问代码区域,
- 各种方法和操作所花费的时间等。
- 在此步骤中,将对内部子例程进行测试。内部子例程(如非公共方法,接口)能够适当地处理所有类型的数据。
- 此步骤侧重于测试控制语句(如循环和条件语句),以检查不同数据输入的效率和准确性。
- 在最后一步中,白盒测试包括安全测试,通过查看代码如何处理安全性来检查所有可能的安全漏洞。
白盒测试的原因
它识别内部安全漏洞。
检查代码中的输入方式。
检查条件循环的功能。
在单个级别测试函数,对象和语句。
灰盒测试
灰盒测试是一种软件测试方法,用于部分了解内部工作结构来测试软件应用程序。它是黑盒子和白盒测试的组合,因为它涉及访问内部编码以设计测试用例,因为白盒测试和测试实践在功能级别作为黑盒测试完成。
灰盒(GreyBox)测试通常识别属于Web系统的特定于上下文的错误。例如; 在测试时,如果测试人员遇到任何缺陷,那么他会对代码进行更改以解决缺陷,然后再次实时测试。它专注于任何复杂软件系统的所有层,以提高测试覆盖率。它提供了测试表示层和内部编码结构的能力。它主要用于集成测试和渗透测试。
为什么选择灰盒测试?
选择灰盒测试的原因如下:
它提供了白盒测试和白盒测试的综合优势。
它同时包括开发人员和测试人员的输入值,以提高产品的整体质量。
它减少了长时间功能和非功能测试的时间消耗。
它为开发人员提供了足够的时间来修复产品缺陷。
它包括用户观点,而不是设计师或测试者的观点。
它深入涉及用户观点的要求检查和规格确定。
黑盒测试 | 白盒测试 | 灰盒测试 |
---|---|---|
不需要了解内部工作结构(代码)。测试用例只需要GUI(图形用户界面)。 | 测试需要了解内部工作结构(软件编码)。 | 部分了解内部工作结构。 |
黑盒测试也称为功能测试,数据驱动测试和封闭盒测试。 | 白盒测试也称为结构测试,透明盒测试,基于代码的测试和透明测试。 | 灰盒测试也称为半透明测试,因为测试人员对编码知识有限。 |
测试方法包括试验技术和错误猜测方法,因为测试人员不需要知道软件的内部编码。 | 通过验证软件中固有的系统边界和数据域来进行白盒测试,因为不缺乏内部编码知识。 | 如果测试人员具有编码知识,则通过验证软件的数据域和内部系统边界来进行。 |
输入表的测试空间(用于创建测试用例的输入)非常庞大,在所有测试空间中最大。 | 与黑盒测试相比,输入表的测试空间(用于创建测试用例的输入)较少。 | 输入表的测试空间(用于创建测试用例的输入)小于黑盒和白盒测试。 |
发现软件的隐藏错误非常困难,因为错误可能是由于黑盒测试未知的内部工作造成的。 | 发现隐藏错误很简单,因为它可能是由于内部工作,这在白盒测试中得到了深入探索。 | 很难发现隐藏的错误,可在用户级测试中找到。 |
它不适用于算法测试。 | 它非常适合并推荐用于算法测试。 | 它不被考虑用于算法测试。 |
黑盒测试中的时间消耗取决于功能规范的可用性。 | 由于冗长的代码,白盒测试需要很长时间来设计测试用例。 | 测试用例设计可以在短时间内完成。 |
测试人员,开发人员和最终用户可以参与测试。 | 只有测试人员和开发人员才能参与测试; 最终用户不能涉及。 | 测试人员,开发人员和最终用户可以参与测试。 |
这是所有测试过程中耗时最少的过程。 | 在所有测试过程中,整个测试过程是最耗时的。 | 比白盒测试耗时更少。 |
黑盒测试涵盖了抵御病毒攻击的弹性和安全性。 | 白盒测试不包括针对病毒攻击的弹性和安全性。 | 灰盒测试不包括针对病毒攻击的弹性和安全性。 |
黑盒测试的基础是外部期望内部行为未知。 | 白盒测试的基础是编码,负责内部工作。 | 基于高级数据库图表和数据流图进行测试。 |
它不像白盒和灰盒测试方法那么详尽。 | 黑盒和灰盒测试方法之间最为详尽。 | 部分详尽; 取决于基于编码或基于GUI的测试用例的类型。 |