性能测试基本概念
一、进行性能测试的原因
-
应用程序是否能够很快的响应用户的要求?
-
应用程序是否能处理预期的用户负载并有盈余能力?
-
应用程序是否能处理业务所需要的事务数量?
-
在预期和非预期的用户负载下,应用程序是否稳定?
-
是否能确保用户在真正使用软件时获得舒服的体验?
产生问题的根源:
- 在多种平台上的数百个服务器
- 异构系统、多种应用
- 数千个工作站
- 局域网、广域网和其他分类型的分布式网络体系结构
- 交错的故障点
二、性能测试应关注内容
- 并发用户数/吞吐量
- 平均响应时间
- 服务器资源占用情况
- 可靠性、可扩展性
- 发现引起系统问题的原因,关注采用何种技术提高系统性能
软、硬件配置是否合适(容量规划/硬件选型)
三、性能测试基本概念及相关术语
-
性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
-
系统的性能:包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性。
-
一般地,它主要是针对系统的性能指标制定性能测试方案,执行测试用例,得出测试结果来验证系统的性能指标是否满足既定值。性能指标里可能包括系统各个方面的能力,如系统并发处理能力,系统响应时间,批量业务处理能力等等。
-
并发数:
- 系统用户数:简单地说就是该系统的注册用户数。
- 在线用户数:即登录系统的用户。
- 并发用户数:同一时间进行同一个操作的用户数。
-
响应时间(RT):
网络传输(请求)时间+服务器处理(一层或多层)时间+网络传输(响应)时间。
-
事务响应时间(TRT:Transaction Reponse Time):
事务是指一组密切相关的操作组合。服务器处理一个事务所用的时间为事务响应时间。
-
每秒事务通过数(TPS:Transaction Per Second):
每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标。
-
点击率(HPS:Hit Per Second):
用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大。
-
吞吐量(Throughput):(服务器在单位时间处理的信息量)
单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力,一般来说用请求数/秒或是页面数/秒来衡量,从业务的角度,也可以用访问人数/天或是处理的业务数/小时来衡量,从网络的角度来说,也可以用字节数/天来衡量。
-
思考时间(Think Time):
用户进行操作时,每个请求或者操作之间的间隔时间,是为了更加真实地模拟用户的操作场景。
-
资源利用率:
不同系统资源的使用情况。CPU、Memory、磁盘、网络。
四、性能测试的分类
-
基准测试
对一个新系统进行性能测试,记录各项性能指标,作为后续性能测试的基准。
-
狭义性能测试
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能能否满足生产系统要求。
-
负载测试
给系统定容定量,在系统上不断增加负载,看系统最大承受的用户负载时多少,看系统是否达到了需求所需要的性能指标。(RT、TPR、吞吐率、资源利用率)
-
压力测试 / 强度测试
为了找出系统的性能瓶颈,以及产生系统瓶颈的原因而进行的测试。
测试系统在一定饱和状态下,例如cpu、内存等在饱和使用状态下,系统能够处理的会话能力,以及系统是否会出现错误。
负载测试和压力测试的区别:
负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。 -
并发测试
并发测试是通过模拟用户的并发访问,测试多用户并发访问同一个应用,同一个模块或者数据记录时是否存在死锁或者其他性能问题。
-
配置测试
配置测试是通过被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到各项资源的最优分配原则。
通过测试不同的应用服务器、网络环境、数据库不同的参数设置、不同硬件设备,查看系统的性能表现,找出最优最合理的资源配置。
-
可靠性测试
通过给系统加载一定的业务压力(例如资源在70%-90%的使用率)的情况下,让应用系统持续运行
一段时间,测试系统在这种条件下是否能够稳定运行。(查看系统的性能指标是否稳定) -
失效恢复测试
失效恢复测试方法是针对有备份和负载均衡的系统设计的,这种测试方法可以用来检验如果系统局部发生故障,
用户能否继续使用系统,以及如果这种情况发生,用户将受到多大程度的影响。