软件测试 - 方法

软件测试可以使用多种方法。本章简要介绍可用的方法。

黑盒测试

在不了解应用程序内部工作原理的情况下进行测试的技术称为黑盒测试。测试人员不了解系统架构,也无法访问源代码。通常,在执行黑盒测试时,测试人员将通过提供输入和检查输出来与系统的用户界面进行交互,而无需了解输入的处理方式和位置。

下表列出了黑盒测试的优点和缺点。

优点 缺点
非常适合大型代码段,并且效率高。 覆盖范围有限,因为实际上只执行了选定数量的测试场景。
不需要代码访问。 测试效率低下,因为测试人员对测试用例的了解有限。应用程序。
通过明确定义的角色,将用户视角与开发人员视角明确区分开。 盲目覆盖,因为测试人员无法针对特定的代码段或容易出错的区域。
大量中等技能的测试人员可以在不了解实施、编程语言或操作系统的情况下测试应用程序。 测试用例很难设计。

白盒测试

白盒测试是对代码内部逻辑和结构的详细调查。白盒测试也称为玻璃测试开盒测试。为了对应用程序执行白盒测试,测试人员需要了解代码的内部工作原理。

测试人员需要查看源代码,找出代码的哪个单元/块行为不当。

下表列出了白盒测试的优点和缺点。

优点 缺点
由于测试人员了解源代码,因此很容易找出哪些类型的数据可以帮助有效地测试应用程序。 由于需要熟练的测试人员进行白盒测试,因此成本会增加。
它有助于优化代码。 有时不可能深入每一个角落来找出可能产生问题的隐藏错误,因为许多路径都未经测试。
可以删除多余的代码行,这可能会带来隐藏的缺陷。 维护白盒测试很困难,因为它需要专门的工具,如代码分析器和调试工具。
由于测试人员了解代码,因此在测试场景中可以实现最大覆盖率写作。

灰盒测试

灰盒测试是一种在对应用程序内部工作原理了解有限的情况下测试应用程序的技术。在软件测试中,测试应用程序时,"知道的越多越好"这句话非常重要。

掌握系统领域总是会让测试人员比领域知识有限的人更有优势。与黑盒测试不同,黑盒测试中测试人员只测试应用程序的用户界面;在灰盒测试中,测试人员可以访问设计文档和数据库。有了这些知识,测试人员可以在制定测试计划时准备更好的测试数据和测试场景。

优点 缺点
尽可能提供黑盒测试和白盒测试的综合优势。 由于无法访问源代码,因此检查代码和测试覆盖率的能力受到限制。
灰盒测试人员不依赖源代码;相反,它们依赖于接口定义和功能规范。 如果软件设计人员已经运行了测试用例,则测试可能会变得多余。
基于有限的可用信息,灰盒测试人员可以设计出出色的测试场景,尤其是围绕通信协议和数据类型处理。 测试每个可能的输入流是不现实的,因为这将花费不合理的时间;因此,许多程序路径将未经测试。
测试是从用户的角度而不是设计人员的角度进行的。

测试方法比较

下表列出了黑盒测试、灰盒测试和白盒测试的区别。

黑盒测试 灰盒测试 白盒测试
无需了解应用程序的内部工作原理。 测试人员对应用程序的内部工作原理了解有限。 测试人员完全了解应用程序的内部工作原理。
也称为闭盒测试、数据驱动测试或功能测试。 也称为半透明测试,因为测试人员对应用程序内部了解有限。 也称为透明测试、结构测试或基于代码的测试。
由最终用户以及测试人员执行,开发人员。 由最终用户以及测试人员和开发人员执行。 通常由测试人员和开发人员完成。
测试基于外部期望 - 应用程序的内部行为未知。 测试基于高级数据库图和数据流图进行。 内部工作原理完全已知,测试人员可以据此设计测试数据。
它是详尽的,并且耗时最少。 部分耗时且详尽。 最详尽和最耗时的测试类型。
不适合算法测试。 不适合算法测试。 适合算法测试。
这只能通过反复试验的方法来完成。 如果已知,可以测试数据域和内部边界。 可以更好地测试数据域和内部边界。