6.4.4 按测试目的分类
(1)功能测试(Functional Testing)。功能测试主要针对产品需求规格说明书对软件进行测试,逐项验证软件功能是否符合要求,包括对原定功能的检验以及测试软件是否有冗余功能、遗漏功能。
(2)接口测试(Interface Testing)。接口测试指对各个模块进行系统联调的测试,包含程序内接口和程序外接口测试。在接口测试中,测试人员在单元测试阶段进行一部分工作,大部分工作在集成测试阶段完成。
(3)用户界面测试(Interface Testing)。用户界面测试主要检查用户界面的风格是否满足客户的要求、界面是否友好、软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
(4)健壮性测试(Interface Testing)。健壮性测试侧重于对程序容错能力的测试,主要是验证程序在各种异常情况下是否能正确运行,包括数据边界测试、非法数据测试、异常中断测试等。
(5)性能测试(Performance Testing)。性能测试主要测试系统的性能是否满足用户要求,即在特定的运行条件下验证系统的能力状况。性能测试主要是通过自动化测试工具模拟正常、峰值以及异常负载状况,对系统的各项性能指标进行测试,测试中得到的负荷和响应时间等数据可以被用于验证软件系统是否能够达到用户提出的性能指标。
(6)强度测试(Strength Testing)。强度测试是一种性能测试,强度测试总是迫使系统在异常的资源配置下运行,目的是找出因资源不足或资源争用而导致的错误。例如,如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条件下并不明显的缺陷,这些缺陷可能由于争用共享资源(如数据库锁或网络带宽)而显现出来。一个系统在366MB内存下可以正常运行,但是降低内存容量后就不可能运行,系统提示内存不足,这个系统对内存的要求就是366MB。
(7)压力测试(Stress Testing)。压力测试是一种性能测试,指在超负荷环境中,检验程序是否能够正常运行,检验系统的稳定性。压力测试的目的是检测系统在资源超负荷情况下的表现,是通过极限测试方法,发现系统在极限或恶劣环境中的自我保护能力。压力测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,压力测试还要评估软件的性能特征,例如响应时间、事务处理速率和其他与时间相关的性能特征。例如,在B/S结构中,用户并发量测试就属于压力测试,测试人员可以使用Webload工具,模拟上百名客户同时访问网站,看系统响应时间、处理速度如何。(https://www.daowen.com)
(8)负载测试(Load Testing)。负载测试是一种性能测试,是通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如响应时间、事务处理速率和其他与时间相关的方面。
(9)安全性测试(Security Testing)。安全测试主要测试系统防止非法侵入的能力,例如,测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何运行,是否能够保证数据的安全。
(10)可靠性测试(Reliability Testing)。可靠性测试是指在真实的或仿真的环境中,为了保证和验证软件的可靠性水平是否满足用户的要求而进行的测试,即确定软件是否满足软件规格说明书中规定的可靠性指标。软件可靠性测试的目的是给出可靠性的定量估计值,通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,验证软件可靠性是否达到要求。软件可靠性测试是一项高投入的测试工作,通常需要进行大量的测试。
(11)恢复测试(Restore Testing)。恢复测试主要测试当出现系统崩溃、硬件错误或其他灾难性问题时系统的表现情况以及系统从故障中恢复的能力。
(12)安装/卸载测试(Install/Uninstall Testing)。安装测试主要检验软件是否可以正确安装,安装过程是否符合安装规程,安装文件的各项设置是否有效,安装后是否影响整个计算机系统;卸载测试是逆过程,测试软件是否被删除干净,删除后软件是否影响整个计算机系统等。
(13)兼容性测试(Compatibility Testing)。兼容性测试主要测试软件产品在不同的平台、不同的工具软件或相同工具软件的不同版本下的兼容性,其目的是测试系统与其他软件、硬件兼容的能力。
(14)文档测试(Documentation Testing)。文档测试主要检查内部/外部文档的清晰性和准确性,对外部文档而言,测试工作主要针对用户的文档,以需求说明、用户手册、安装手册等为主,检验文档是否和实际应用存在差别,而且还必须考虑文档是否简单明了,相关的技术术语是否解释清楚等问题。