软件测试分类
软件测试可以分为很多的方面,一些常见的分类,如下图:
(一)按技术分类
1.白盒测试
白盒测试技术关心软件内部设计和程序实现,对内部实现逻辑进行测试的过程。如果已知产品内部的活动方式,就可以采用白盒测试技术来测试它的内部活动是否都符合设计要求。
2.黑盒测试
黑盒测试技术不关心软件内部设计和程序实现,一般是对功能进行测试。这是在已知产品需求的情况下,通过测试来检验是否都能被满足的测试方法。对于软件测试而言,黑盒测试技术把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。
(二)按测试方法分类
1.静态测试
静态测试(static testing)就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
包括对代码测试、界面测试和文档测试三个方面
2. 动态测试
动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。
(三)按测试阶段分类
1.单元测试
单元测试是针对软件设计的最小程序单位——模块或组件的内部代码进行正确性检查的测试工作。单元测试又称为模块测试,其目的在于发现各模块内部可能存在的各种差错。
2.集成测试
集成测试也称组装测试或联合测试。集成测试按设计要求把通过单元测试的各个模块组装在一起之后进行测试,其目的是检查程序单元或部件的接口关系,以便发现与接口有关的各种错误。集成测试依据的标准是软件概要设计规格说明书。
3.系统测试
系统测试是将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。系统测试一般依据系统需求规格说明书。
有时会把确认测试和系统测试合并为一个过程,统称为系统测试。
4.验收测试
验收测试又称有效性测试。验收测试的任务是验证软件的功能、性能及其他特性是否与用户的要求一致。验收测试要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。
5.确认测试
确认测试也称为合格性测试,用来检测集成后的软件功能是否符合用户的需求。它依据软件需求规格说明书,主要验证软件是否满足预期用途的需求。
(四)按测试内容分类
1.功能测试
功能测试可以验证每个功能是否按照事先定义的要求那样正常工作。
2.性能测试
性能测试是指测试系统在不同负载条件下的系统具体的性能指标。
3.可靠性测试
可靠性测试是检验系统是否能保持长期稳定、正常的运行,如确定正常运行时间,即平均失效时间。可靠性测试包括强壮性测试和异常处理测试。
4.安全性测试
安全性测试是测试系统权限设置有效性、应对非授权的内部/外部访问、防范非法入侵的能力、数据备份和恢复能力等。
5.回归测试
回归测试是为保证软件中新的变化(新增代码、代码修改等)不会对原有功能的正常使用有影响而进行的测试。
6.压力测试
压力测试也称为负载测试,用来检查系统在不同负载(如数据量、并发用户、连接数等)条件下的系统运行情况,特别是高负载、极限负载下的系统运行情况,以发现系统不稳定、系统性能瓶颈、内存泄漏、CPU使用率过高等问题。
7.兼容性测试
兼容性测试是测试系统不同运行环境(网络、硬件、第三方软件等)下的实际表现。
8.安装测试
安装测试是验证系统是否能按照安装说明书成功地完成系统的安装。
9.灾难性恢复测试
灾难性恢复测试是在系统崩溃、硬件故障或其他灾难发生之后,重新恢复系统和数据的能力测试。