测试的分类有很多,目前来看可以从三方面进行划分,分别是按照软件开发的阶段、测试实施的组织与测试技术来分类。
1. 按照软件开发阶段
按照开发阶段可将测试划分为:单元测试、集成测试、系统测试、确认测试和验收测试
1)单元测试:又称模块测试,是针对程序模块进行正确性检验的最小单位。
目的:检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的错误。
特点:需要从程序的内部结构出发设计测试用例;多个模块可平行地独立进行单元测试。
2)集成测试:又称组装测试,是在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。
目的:检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。
特点:软件集成是一个持续的过程,会形成很多个临时版本,在每个版本提交时都需要进行冒烟测试。稳定性是功能集成的真正挑战。
(冒烟测试:又称版本验证测试、提交测试,对程序主要功能进行验证。)
3)确认测试:通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。
目的:检测与证实软件是否满足软件需求说明书中规定的要求。
4)系统测试:为验证和确认系统是否达到了原始目标,而对集成的硬件和软件系统进行的测试
特点:在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(硬件、外设、网络等)正确配置、连接,并满足用户需求。
5)验收测试:按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。
2. 按照测试实施组织
按照测试实施组织可将测试划分为:开发方测试(α测试)、用户测试(β测试)、第三方测试
1)开发方测试:又称验证测试,开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求。
特点:软件开发完成后,由开发方在开发环境下,对要提交的软件进行的自我检查与验证,可以和软件的“系统测试”同时进行。
2)用户测试:用户在其应用环境下,通过运行和使用软件,检测与核实软件实现是否符合自己预期的要求。通况,用户测试不是指用户的“验收测试”而是用户的使用性测试。
β测试:β被看为一种用户测试,它主要把软件产品分发到市场,让用户大量使用,并评价检查软件。通过用户使用的方式来发现软件存在的问题。
3)第三方测试:又称独立测试,是介于软件开发方与用户方之间的测试组织的测试。一般情况下是在模拟用户真实应用环境下,进行的软件确认测试。
3. 按照测试技术
(1)按照测试技术可划分为:静态测试、动态测试。
1)静态测试:指不运行程序,通过人工对程序和文档进行分析与检查,包括代码走查、需求确认等。
2)动态测试:指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现
(2)也可划分为白盒测试、黑盒测试、灰盒测试。在实现测试方法上,它们既包括了静态测试也包括了动态测试
1)白盒测试:又称结构测试,在清楚了解程序结构和处理过程的基础上,检查是否所有的结构及路径都正确。
2)黑盒测试:是在程序界面处的测试,在完全不考虑程序内部结构和处理过程的情况下,通过软就爱你的外部表现来发现其缺陷。它只需要检查程序是否按照规格说明书的规定正常实现
3)灰盒测试:介于白、黑盒测试之间的测试,它结合了两种测试的测试要素,即灰盒测试同时关注输出对于输入的正确性与程序的内部表现。
小结:
软件测试与软件开发息息相关,贯穿整个软件生命周期,而在每个测试阶段又可用不同的方法进行测试。在整个测试过程中,开发文档与源程序可用单元测试、代码走查的方法;单元测试可用白盒测试;集成测试可用近似灰盒测试的方法;系统测试和确认测试则应用黑盒测试。