软件测试 – 方法
软件测试 – 方法
有不同的方法可用于软件测试。本章简要介绍了可用的方法。
黑盒测试
在不了解应用程序内部工作原理的情况下进行测试的技术称为黑盒测试。测试人员对系统架构一无所知,也无法访问源代码。通常,在执行黑盒测试时,测试人员将通过提供输入和检查输出与系统的用户界面进行交互,而无需知道输入的工作方式和位置。
下表列出了黑盒测试的优缺点。
Advantages | 缺点 |
---|---|
Well suited and efficient for large code segments. | 覆盖范围有限,因为实际上只执行了选定数量的测试场景。 |
Code access is not required. | 测试效率低下,因为测试人员对应用程序的了解有限。 |
Clearly separates user’s perspective from the developer’s perspective through visibly defined roles. | 盲目覆盖,因为测试人员无法针对特定的代码段或容易出错的区域。 |
Large numbers of moderately skilled testers can test the application with no knowledge of implementation, programming language, or operating systems. | 测试用例很难设计。 |
白盒测试
白盒测试是对代码内部逻辑和结构的详细调查。白盒测试也称为玻璃测试或开盒测试。为了进行白盒上的应用程序的测试,测试人员需要知道的代码的内部工作。
测试人员需要查看源代码内部并找出代码的哪个单元/块表现不正常。
下表列出了白盒测试的优缺点。
Advantages | 缺点 |
---|---|
As the tester has knowledge of the source code, it becomes very easy to find out which type of data can help in testing the application effectively. | 由于需要熟练的测试人员进行白盒测试,因此增加了成本。 |
It helps in optimizing the code. | 有时不可能查看每个角落以找出可能造成问题的隐藏错误,因为许多路径未经测试。 |
Extra lines of code can be removed which can bring in hidden defects. | 维护白盒测试很困难,因为它需要专门的工具,如代码分析器和调试工具。 |
Due to the tester’s knowledge about the code, maximum coverage is attained during test scenario writing. |
灰盒测试
灰盒测试是一种在对应用程序的内部工作了解有限的情况下测试应用程序的技术。在软件测试中,这句话知道得越多,在测试应用程序时就越好。
掌握系统的领域总是让测试人员比领域知识有限的人更有优势。与黑盒测试不同,测试人员只测试应用程序的用户界面;在灰盒测试中,测试人员可以访问设计文档和数据库。有了这些知识,测试人员可以在制定测试计划的同时准备更好的测试数据和测试场景。
Advantages | 缺点 |
---|---|
Offers combined benefits of black-box and white-box testing wherever possible. | 由于无法访问源代码,因此检查代码和测试覆盖率的能力受到限制。 |
Grey box testers don’t rely on the source code; instead they rely on interface definition and functional specifications. | 如果软件设计者已经运行了一个测试用例,那么这些测试可能是多余的。 |
Based on the limited information available, a grey-box tester can design excellent test scenarios especially around communication protocols and data type handling. | 测试每个可能的输入流是不切实际的,因为它会花费不合理的时间;因此,许多程序路径将未经测试。 |
The test is done from the point of view of the user and not the designer. |
测试方法的比较
下表列出了区分黑盒测试、灰盒测试和白盒测试的要点。
Black-Box Testing | 灰盒测试 | 白盒测试 |
---|---|---|
The internal workings of an application need not be known. | 测试人员对应用程序的内部工作原理了解有限。 | 测试人员完全了解应用程序的内部工作原理。 |
Also known as closed-box testing, data-driven testing, or functional testing. | 也称为半透明测试,因为测试人员对应用程序内部的了解有限。 | 也称为明盒测试、结构测试或基于代码的测试。 |
Performed by end-users and also by testers and developers. | 由最终用户以及测试人员和开发人员执行。 | 通常由测试人员和开发人员完成。 |
Testing is based on external expectations – Internal behavior of the application is unknown. | 测试是在高级数据库图和数据流图的基础上完成的。 | 内部工作原理是完全已知的,测试人员可以相应地设计测试数据。 |
It is exhaustive and the least time-consuming. | 部分耗时且详尽。 | 最详尽和最耗时的测试类型。 |
Not suited for algorithm testing. | 不适合算法测试。 | 适合算法测试。 |
This can only be done by trial-and-error method. | 如果知道,可以测试数据域和内部边界。 | 可以更好地测试数据域和内部边界。 |