目录
一、软件测试分类
1.1 按阶段分类
(1)单元测试:程序的最小模块完成后,进行测试。(可能函数、类或者界面等)
概念:用于验证应用程序中最小的代码单元是否能够按预期工作,目的是为了让开发人员快速发现和修复代码中的错误。
(2)集成测试:也称组装测试,在单元测试的基础上,把多个模块组装在一起进行测试,重点关注模块之间的接口。
概念:用于验证多个单元或者模块在集成之后是否能够按预期工作,目的是为了测试各个模块之间的接口和交互。
(3)系统测试:把软件项目作为一个整体进行测试,测试的依据是需求说明书。到了该阶段,软件基本是完成的。
概念: 用于验证整个应用程序系统是否满足需求和规格说明。目的是为了验证整个软件系统是否能够正常工作,并且满足各项功能、性能和质量的需求。
(4)验收测试:站在最终用户的角度来测试。
概念:用于验证整个应用程序系统是否满足用户的需求和预期,以及是否满足客户和利益相关者的要求和期望。目的是为了确保应用程序已经准备好交付且能够正常使用。
其中验收测试还分成几个阶段:
- Alpha测试(α测试):早期开发阶段进行测试,主要由开发人员和内部用户进行的。目的是为了测试应用程序的核心功能和基本交互。并尝试发现和解决问题。
- Beta测试(β测试):软件开发后期进行的测试,主要由外部人员进行的。目的是为了测试应用程序在真实的环境下的性能、稳定性和可靠性,并收集用户的反馈。
- Gamma测试(γ测试):是指一种有限的公测阶段,它在软件开发完成后,正式发布之前进行。与正式版相差无几。
1.2 按是否查看源代码分类
(1)黑盒测试:只测试功能,不关注功能的具体实现方式。
概念:也成为功能测试或者数据驱动测试,不考虑应用程序的内部结构和实现。只关注应用程序的输入和输出,针对软件的功能和界面进行测试。
黑盒测试常用的测试方法:
- 等价类划分法
- 边界值分析法
- 因果图法
- 判断表测试法
- 正交试验法
(2)白盒测试:不但要关注功能,还要关注代码是如何实现的
概念:也成为结构测试,一种程序内部结构和实现的测试方法。考虑应用程序代码和程序逻辑结构,并进行源码分析和逻辑覆盖测试等。
白盒测试的常用测试方法:
- 代码覆盖测试:通过执行测试用例,测试代码中每个语句是否被执行。
- 条件覆盖测试:通过执行测试用例,测试代码中每个条件是否被执行。
- 路径覆盖测试:通过执行测试用例,测试代码中每个路径是否被执行。
- 循环覆盖测试:通过执行测试用例,测试代码中每个循环是否被执行。
(3)灰盒测试:介于黑盒和白盒之间的一种测试。
概念:是一种结合和黑盒测试和白盒测试的方法,通过部分了解系统内部细节,以用户的角度进行测试,发现潜在问题和改进点。
1.3 按是否运行分类
(1)静态测试:无运行软件,静态观察软件是否符和预期。
(2)动态测试:运行软件,在运行过程中测试。
1.4 按是否自动化分类
(1)手工测试:通过测试工程师手工对软件进行测试。
(2)自动化测试:通过编程写代码,通过程序自动测试软件是否有问题。
1.5 其他分类
(1)冒烟测试:对软件最基本的流程和工作做一个粗略测试,看最基本的流程是否能够跑通。(测试拿到研发第一个版本,一般先冒烟)
(2)回归测试:当修复一个BUG后,把之前的测试用例在新的代码下再次测试。
概念:用于验证应用程序系统在更新或者修改后,是否存在新的问题或者错误。目的是为了确保先前通过的测试用例在新的版本下仍然生效。
(3)随机测试:主要是针对软件中重要功能进行复测。也包括测试那些当前的测试用例没有覆盖到的部分。
(4)探索性测试:一种灵活自由的测试方法,强调测试人员的主动探索和学习,以发现软件中的缺陷和问题。