软件测试(慕课版)
上QQ阅读APP看书,第一时间看更新

1.2 软件测试的分类

目前,软件测试领域有许多测试名称,这些名称来自不同的分类原则,以下是常见测试名称的分类。

1.按测试阶段或测试步骤划分

按测试阶段或测试步骤来分,有单元测试、集成测试、确认测试和系统测试。这种划分来源于软件的开发过程,目的是验证软件开发过程各阶段的工作是否符合需求和设计要求。在软件单元完成编码后,首先进行单元测试,验证软件单元是否正确实现了规定的功能和接口等要求;在确认没有问题后,将软件单元组装在一起进行集成测试,验证软件是否满足设计要求;然后对软件进行确认测试,验证软件是否满足软件需求规格说明的各项需求;最后使通过确认测试的软件与其他系统成分组合在一起,并使其在实际运行环境中运行,进行系统测试。

在确认测试中,按照测试的方式又有Alpha测试和Beta则试。这两种测试针对的是由多用户使用的软件,由用户来发现那些似乎只有最终用户才能发现的错误。Alpha测试是这样的测试,在开发方的场所,用户在开发人员的指导下对软件进行测试,测试是受控的,开发人员负责记录错误和使用中出现的问题;Beta测试是由软件的最终用户在一个或多个用户场所来进行,开发人员通常不在现场,整个测试不被控制,用户记录下所有的问题,并报告给开发人员。Alpha测试和Beta测试都不能由开发人员或测试人员完成。

2.按测试对象划分

按测试对象划分,有单元测试、部件测试、配置项测试和系统测试。

软件配置项是为配置管理而设计的、并且能够满足最终用户功能的软件,在配置管理过程中作为单个实体对待。

软件部件是构成软件配置项或系统的部分之一,在功能上或逻辑上具有一定的独立性,且可以进一步划分为其他部件。

3.按使用的测试技术划分

按使用的测试技术来分,有静态测试和动态测试,这两种测试分别代表了程序不同的运行状态。动态测试又分为白盒测试和黑盒测试,白盒测试包括逻辑覆盖测试、域测试、程序变异测试、路径测试、符号测试等,黑盒测试包括功能测试、强度测试、边界值测试、随机测试等。

4.按软件质量特性划分

按软件质量特性划分,有功能性测试、可靠性测试、易用性测试、效率测试、可移植性测试和维护性测试。

功能性测试又包含适合性测试、准确性测试、互操作性测试、安全保密性测试、功能性依从性测试;可靠性测试包含容错性测试、成熟性测试、易回复性测试、可靠依从性测试;易用性测试包括易理解性测试、易学习测试、易操作性测试、吸引性测试、易用性依从性测试;效率测试包括时间特性测试、资源利用率测试、效率依从性测试;维护性测试包括改变性测试、稳定性测试、易测试性测试、易分析性测试、易替换性测试、共从性测试和可移植性依从性测试。

5.按照测试项目划分

按照测试项目划分,有功能测试、性能测试、接口测试、余量测试、强度测试、可靠性测试、安全性测试、人机界面测试、健壮性测试、恢复测试、安装测试、压力测试、负载测试等。

(1)功能测试:主要针对软件/产品需求规格说明的测试,验证功能是否符合需求,包括原定功能的检验、是否有冗余的功能。

(2)健壮性测试:侧重于软件容错能力的测试,主要是验证软件对各种异常情况(如数据边界、非法数据、异常中断等)是否进行正确处理。

(3)恢复测试:对每一类导致恢复或重构的情况进行测试,验证软件自身运行的回复或重构,软件控制的系统的回复或重构,以及系统控制的软件的回复或重构。

(4)人机界面测试:对人机界面提供的操作进行测试,测试人机界面的有效性、便捷性、直观性等,如用户界面是否友好、是否方便易用、设计是否合理、位置是否准确等。

(5)接口测试:测试被测对象与其他软件(包括软件单元、部件、配置项)或硬件的接口。

(6)强度测试:使软件在其设计能力的极限状态下,以及超过此极限下运行,检验软件对异常情况的抵抗能力。

(7)可用性测试:对“用户友好性”的测试。受主观因素影响,且取决于最终用户。用户面谈、调查和其他技术都可使用。

(8)压力测试:对系统不断施加压力的测试,通过确定一个系统的瓶颈或者不能接收的性能点,获得系统能提供的最大服务级别的测试。例如,测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。压力测试注重的是外界不断施压。

(9)性能测试:测试软件是否达到需求规格说明中规定的各类性能指标,并满足相关的约束和限制条件。

(10)兼容测试:测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。

(11)用户界面测试:对系统的界面进行测试,测试用户界面是否友好、是否方便易用、设计是否合理、位置是否正确等一系列界面问题。

(12)安全性测试:测试软件在没有授权的内部或者外部的用户的攻击或者恶意破坏时如何进行处理,是否能保证软件和数据的安全。

(13)可靠性测试:这里是比较狭义的可靠性测试,它主要是对系统能否稳定运行进行估计。

(14)安装测试:安装测试主要检验软件是否可以正确安装,安装文件的各项设置是否有效,安装后是否影响原系统,卸载后是否删除干净,是否影响原系统。

(15)文档测试:测试开发过程中生成的文档,以需求规格说明、软件设计、用户手册、安装手册等为主,检验文档是否和实际存在差别。文档测试不需要编写测试用例。

软件测试的这些类别之间有密切的关系,体现在以下方面。

(1)在软件开发过程中,不同阶段的测试对应了对不同软件对象的测试,图1-2所示为这种对应关系。例如,集成测试对应了部件测试、确认测试对应了配置项测试。可以把按阶段/步骤分类的软件测试对等于按测试对象分类的软件测试。

图1-2 软件测试的对象和步骤

(2)在不同的测试阶段,由于测试目标、对象、要求的不同而采用不同的测试技术。表1-1所列为一般情况下不同测试对象中采用的测试技术。

表1-1 测试对象和测试技术

(3)在不同的阶段对不同对象的测试包含不同的测试项目。例如,确认测试可包含功能测试、性能测试、人机界面测试;组合测试可包括接口测试;系统测试可包括可靠性测试、强度测试等。同时,对各阶段和对象的测试完整性要求也不同。