非功能测试包括性能测试、兼容性测试、用户界面测试、安装测试、安全性测试和文档测试。
性能是与被测系统相关的一系列度量指标。不同的系统关心不同的性能指标,例如对于通信软件的相关的性能指标有接通率、掉话率、接续容量等;对于证券系统相关的性能指标就是下单速度、下单数量、是否堵单等。但站在最终用户的角度有一个性能指标是所有系统都非常关注的,即响应时间。因此,测试响应时间是必不可少的,而优化最重要的程序性能指标,提高用户体验的满意度,也是性能测试的最终目的。
性能测试是借助测试工具或手工开发测试脚本,模拟典型的用户行为以判断系统性能是否达到期望目标,同时监控关键性能测量结果的过程,是一个综合性的测试活动。通常包括一系列与被测系统性能相关的互相关联、互相包含的测试活动,如常规的性能测试、负载测试、压力测试、强度测试、并发测试、大数据量测试等。
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的前提下,系统所能承受的最大负载量的测试。
压力测试是通过逐步增加系统负载,监控测试系统性能的变化并最终确定在什么负载下系统性能处于失效状态并以此来获得系统能提供的最大服务级别的测试。以Web性能测试为例,如果规定访问一个页面的响应时间不超过1s,负载测试就是测试响应时间为1s时,系统所能承受的最大并发访问用户的数量,而压力测试则是测试系统在多大的并发访问用户数量下,响应时间不可接受,例如超过一分钟(定义为失效状态)。
强度测试是迫使系统在异常的资源配置下运行以检查程序对异常情况的抵抗能力,判断系统的稳定性以及系统未来的扩展空间。例如当正常用户点击率为1000次/s,运行点击率为2000次/s的测试用例。
并发测试是指测试多个用户同时访问同一个应用程序、同一个模块或者数据记录时,是否存在死锁或者其他性能问题。
大数据量测试包含独立数据量测试和综合数据量测试。独立数据量测试是针对某些系统存储、传输、统计查询等业务进行单用户大数据量测试,综合数据量测试是与并发测试等相结合的在极限状态下的测试。
性能测试流程:
性能测试是一个迭代进行的过程,遵守执行-改进-执行的规则,一个迭代周期分为如下四个阶段:
1.性能测试规划,是性能测试最重要的阶段。这个阶段的主要任务是确定性能测试需求、制定性能测试策略,规划性能测试各类相关资源,包括软硬件环境、工具、人力等。
2.性能测试设计与开发。其主要任务是设计并评审性能测试用例,开发性能测试脚本,简单地运行脚本以验证本功能的正确性。
3.性能测试执行与监控。通过测试工具或者真实的用户创建测试场景、依次执行性能测试用例,监控关键测量指标,收集相关数据。
4.测试结果分析与系统调整。相关人员根据执行与监控阶段收集到的度量信息,分析测试结果,确定系统是否存在性能问题,若存在问题由相关人员负责修改,修改完毕后可能引起另一个性能测试周期。最后输出性能测试报告与相关经验总结。