(一)按内部结构划分的方法
1. 白盒测试
- 定义:白盒测试是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的方法。
- 特点:测试人员能够了解被测对象的结构,可以查阅被测代码内容。其直接好处是知道所设计的测试用例在代码上哪些地方被忽略,有助于增大代码的覆盖率,提高代码运行的整体质量,发现代码中的隐患。
- 应用场景:适用于对程序功能的实现进行测试,例如在单元测试中,白盒测试可以深入了解代码内部逻辑,确保每个函数、方法或模块的正确性。
2. 黑盒测试
- 定义:把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性。
- 特点:从用户角度出发,不关注内部实现,只关注输入和输出。测试方法简单直观,适用于对系统功能进行测试。
- 应用场景:功能测试通常采用黑盒测试,从软件产品的接口和架构开始,根据需求编写测试用例,输入数据,在预期结果和实际结果之间进行评估,以检查产品是否满足用户要求的功能。
3. 灰盒测试
- 定义:是一种综合测试法,将 “黑盒” 测试与 “白盒” 测试结合在一起,基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果。
- 特点:介于白盒测试和黑盒测试之间,既关注输出对于输入的正确性,也关注程序内部的情况,但不像白盒测试那么详细、完整。
- 应用场景:多用于集成测试阶段,关注模块与模块之间的交互。例如,在软件系统的集成测试中,灰盒测试可以验证各个模块之间的接口关系,确保系统的整体功能正常。
(二)按执行代码角度的方法
1. 静态测试
- 特点:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
- 用途:早期发现问题,成本低、效率高。可以在软件开发的早期阶段进行,帮助开发人员发现代码中的潜在问题,提高代码质量。例如,代码审查、静态分析等静态测试方法可以查找代码质量问题、潜在的缺陷和不良编码实践。
2. 动态测试
- 特点:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
- 用途:能够模拟真实环境、验证程序行为。在软件开发的后期阶段,动态测试可以验证软件的功能和性能是否符合用户需求。例如,在系统测试中,动态测试可以模拟真实用户并发访问的场景,验证系统的性能指标或发现其性能缺陷。
(三)按软件开发过程的方法
1. 单元测试
- 作用:针对软件设计的最小单位进行正确性检验的测试工作。目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。
- 在软件开发中的地位:是软件测试中至关重要的环节,为集成测试提供坚实的基础。完善的单元测试可以在开发过程中预防大部分问题,减少发布后的问题数量,从而减少维护成本,增强团队信心。
2. 集成测试
- 作用:是单元测试的多级扩展,在单元测试的基础上进行有序测试。旨在检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。
- 在软件开发中的地位:连接单元测试和系统测试的桥梁,确保各个模块能够协同工作,提高软件的整体质量。
3. 确认测试
- 作用:又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
- 在软件开发中的地位:在软件开发的后期阶段,确认测试可以确保软件满足用户的需求,提高用户满意度。如果软件的功能和性能要求在软件需求规格说明书中已经明确规定,那么确认测试就可以依据这些信息进行,为软件的发布提供保障。