- 软件测试教程
- 软件测试 - 首页
- 软件测试 - 概述
- 软件测试 - 缺陷管理
- 软件测试 - 生命周期
- 软件测试 - 缺陷生命周期
- 软件测试 - 误区
- 软件测试 - QA、QC 和测试
- 软件测试 - 环境
- 软件测试 - 策略
- 软件测试 - 步骤
- 软件测试 - 测试条件
- 软件测试 - 测试分析
- 软件测试 - ISO 标准
- 软件测试 - 类型
- 软件测试 - 技术
- 软件测试 - 方法
- 软件测试 - 指标
- 软件测试 - 层级
- 软件测试 - 估算技术
- 软件测试 - 七大原则
- 软件测试 - 严重程度和优先级
- 软件测试 - 缺陷密度
- 软件测试有用资源
- 软件测试 - 问答
- 软件测试 - 快速指南
- 软件测试 - 有用资源
- 软件测试 - 讨论
软件测试 - 方法
软件测试可以使用不同的方法。本章简要介绍了可用的方法。
黑盒测试
在不了解应用程序内部工作原理的情况下进行测试的技术称为黑盒测试。测试人员对系统架构一无所知,也无法访问源代码。通常,在执行黑盒测试时,测试人员会通过提供输入并检查输出与系统的用户界面进行交互,而不知道输入是如何以及在哪里处理的。
下表列出了黑盒测试的优缺点。
| 优点 | 缺点 |
|---|---|
| 非常适合大型代码段,并且效率高。 | 覆盖范围有限,因为实际上只执行了选定的测试场景。 |
| 不需要访问代码。 | 测试效率低下,因为测试人员对应用程序的了解有限。 |
| 通过清晰定义的角色,明确地区分了用户的视角和开发人员的视角。 | 盲目覆盖,因为测试人员无法针对特定的代码段或容易出错的区域。 |
| 大量中等技能的测试人员可以在不了解实现、编程语言或操作系统的情况下测试应用程序。 | 测试用例的设计难度较大。 |
白盒测试
白盒测试是对代码内部逻辑和结构的详细检查。白盒测试也称为**玻璃盒测试**或**开盒测试**。为了对应用程序执行**白盒**测试,测试人员需要了解代码的内部工作原理。
测试人员需要查看源代码,并找出哪个单元/代码块的行为不正常。
下表列出了白盒测试的优缺点。
| 优点 | 缺点 |
|---|---|
| 由于测试人员了解源代码,因此很容易找出哪种类型的数据可以有效地帮助测试应用程序。 | 由于需要熟练的测试人员来执行白盒测试,因此成本会增加。 |
| 有助于优化代码。 | 有时不可能查看每个角落和缝隙以找出可能导致问题的隐藏错误,因为许多路径将不会被测试。 |
| 可以删除额外的代码行,这可能会引入隐藏的缺陷。 | 白盒测试难以维护,因为它需要诸如代码分析器和调试工具之类的专用工具。 |
| 由于测试人员了解代码,因此在编写测试场景期间可以获得最大程度的覆盖率。 |
灰盒测试
灰盒测试是一种在对应用程序的内部工作原理了解有限的情况下测试应用程序的技术。在软件测试中,“了解得越多,越好”这句话在测试应用程序时具有很大的分量。
掌握系统领域总是能让测试人员比那些领域知识有限的人更有优势。与仅测试应用程序用户界面的黑盒测试不同,在灰盒测试中,测试人员可以访问设计文档和数据库。拥有这些知识,测试人员可以在制定测试计划时准备更好的测试数据和测试场景。
| 优点 | 缺点 |
|---|---|
| 在尽可能的情况下,提供黑盒测试和白盒测试的组合优势。 | 由于无法访问源代码,因此检查代码和测试覆盖率的能力受到限制。 |
| 灰盒测试人员不依赖于源代码;相反,他们依赖于接口定义和功能规范。 | 如果软件设计师已经运行了测试用例,则测试可能会冗余。 |
| 基于有限的可用信息,灰盒测试人员可以设计出优秀的测试场景,尤其是在通信协议和数据类型处理方面。 | 测试每个可能的输入流是不现实的,因为这将花费不合理的时间;因此,许多程序路径将不会被测试。 |
| 测试是从用户的角度而不是设计人员的角度进行的。 |
测试方法比较
下表列出了区分黑盒测试、灰盒测试和白盒测试的要点。
| 黑盒测试 | 灰盒测试 | 白盒测试 |
|---|---|---|
| 不需要了解应用程序的内部工作原理。 | 测试人员对应用程序的内部工作原理了解有限。 | 测试人员完全了解应用程序的内部工作原理。 |
| 也称为闭合盒测试、数据驱动测试或功能测试。 | 也称为半透明测试,因为测试人员对应用程序内部的了解有限。 | 也称为透明盒测试、结构测试或基于代码的测试。 |
| 由最终用户以及测试人员和开发人员执行。 | 由最终用户以及测试人员和开发人员执行。 | 通常由测试人员和开发人员执行。 |
| 测试基于外部期望 - 应用程序的内部行为未知。 | 测试基于高级数据库图表和数据流图表。 | 内部工作原理完全已知,测试人员可以相应地设计测试数据。 |
| 它非常详尽且最不费时。 | 部分费时且详尽。 | 最详尽且最费时的测试类型。 |
| 不适合算法测试。 | 不适合算法测试。 | 适合算法测试。 |
| 这只能通过试错法来完成。 | 如果已知,可以测试数据域和内部边界。 | 可以更好地测试数据域和内部边界。 |
广告