软件测试 - 方法
有不同的方法可用于软件测试。本章简要介绍了可用的方法。
黑盒测试
在不了解应用程序内部工作情况的情况下进行测试的技术称为黑盒测试。测试人员不了解系统架构,也无法访问源代码。通常,在执行黑盒测试时,测试人员将通过提供输入和检查输出来与系统的用户界面进行交互,而不知道如何以及在何处处理输入。
下表列出了黑盒测试的优点和缺点。
优点 | 缺点 |
---|---|
非常适合且高效地处理大型代码段。 | 覆盖范围有限,因为实际上只执行了选定数量的测试场景。 |
不需要代码访问。 | 由于测试人员对应用程序的了解有限,测试效率低下。 |
通过明确定义的角色,将用户的视角与开发人员的视角清楚地分开。 | 盲覆盖,因为测试人员无法针对特定的代码段或容易出错的区域。 |
大量中等技能的测试人员可以在不了解实现、编程语言或操作系统的情况下测试应用程序。 | 测试用例很难设计。 |
白盒测试
白盒测试是对代码内部逻辑和结构的详细调查。白盒测试也称为玻璃测试或开盒测试。为了对应用程序执行白盒测试,测试人员需要了解代码的内部工作原理。
测试人员需要查看源代码内部并找出代码的哪个单元/块Behave不当。
下表列出了白盒测试的优点和缺点。
优点 | 缺点 |
---|---|
由于测试人员了解源代码,因此很容易找出哪种类型的数据可以帮助有效地测试应用程序。 | 由于需要熟练的测试人员来进行白盒测试,因此增加了成本。 |
它有助于优化代码。 | 有时不可能检查每一个角落来找出可能产生问题的隐藏错误,因为许多路径都未经测试。 |
可以删除可能带来隐藏缺陷的额外代码行。 | 维护白盒测试很困难,因为它需要专门的工具,例如代码分析器和调试工具。 |
由于测试人员对代码的了解,在测试场景编写过程中获得了最大的覆盖率。 |
灰盒测试
灰盒测试是一种在对应用程序内部工作了解有限的情况下测试应用程序的技术。在软件测试中,“你知道的越多,越好”这句话在测试应用程序时具有很大的影响力。
掌握系统领域总是让测试人员比领域知识有限的人更具优势。与黑盒测试不同,测试人员仅测试应用程序的用户界面;在灰盒测试中,测试人员可以访问设计文档和数据库。有了这些知识,测试人员可以在制定测试计划时准备更好的测试数据和测试场景。
优点 | 缺点 |
---|---|
尽可能提供黑盒和白盒测试的综合优势。 | 由于无法访问源代码,因此检查代码和测试覆盖率的能力受到限制。 |
灰盒测试人员不依赖源代码;相反,它们依赖于接口定义和功能规范。 | 如果软件设计者已经运行了测试用例,则测试可能是多余的。 |
根据可用的有限信息,灰盒测试人员可以设计出色的测试场景,特别是围绕通信协议和数据类型处理。 | 测试每个可能的输入流是不现实的,因为这会花费不合理的时间;因此,许多程序路径将未经测试。 |
测试是从用户而不是设计者的角度进行的。 |
测试方法比较
下表列出了黑盒测试、灰盒测试和白盒测试的区别点。
黑盒测试 | 灰盒测试 | 白盒测试 |
---|---|---|
不需要知道应用程序的内部工作原理。 | 测试人员对应用程序内部工作原理的了解有限。 | 测试人员完全了解应用程序的内部工作原理。 |
也称为闭箱测试、数据驱动测试或功能测试。 | 也称为半透明测试,因为测试人员对应用程序内部的了解有限。 | 也称为明盒测试、结构测试或基于代码的测试。 |
由最终用户以及测试人员和开发人员执行。 | 由最终用户以及测试人员和开发人员执行。 | 通常由测试人员和开发人员完成。 |
测试基于外部期望 - 应用程序的内部Behave未知。 | 测试是在高级数据库图和数据流图的基础上完成的。 | 内部工作原理是完全清楚的,测试人员可以相应地设计测试数据。 |
它是详尽且耗时最少的。 | 部分耗时且详尽。 | 最详尽且耗时的测试类型。 |
不适合算法测试。 | 不适合算法测试。 | 适合算法测试。 |
这只能通过试错法来完成。 | 如果已知的话,可以测试数据域和内部边界。 | 可以更好地测试数据域和内部边界。 |