一、性能测试概述
1.1 概述
模拟各种正常的、峰值的测试环境,检测程序的各项性能指标是否达标。
如模拟系统半小时内2000个用户进行登录操作。
性能指标:如要求登录请求的响应时间在3秒钟以内。
1.2 作用
1、项目立项初期帮助技术选型
2、测试当前程序所能支持的最大负载
3、发现系统中的性能瓶颈,提高资源利用率
4、提升用户体验
.......
1.3 实现
使用jmeter的定时器实现时间的性能测试
二、同步定时器--模拟高并发
2.1 测试步骤
例:同一时刻,100个用户访问登录接口,统计高并发情况下平均响应时间以及错误率
1、新建测试计划、测试组、取样器、结果树,指定线程组的线程数为100,模拟100个用户:
2、添加定时器的synchronizing timer(同步定时器),实现同时访问:
3、运行测试计划,即可实现100个用户并发访问登录接口
4、通过聚合报告组件,可以对结果进行汇总分析
5、再次点击运行测试计划,在聚合报告中查看结果
2.2 同步定时器参数详解
当线程组中设置的线程数(用户数)不能整除同步定时器中设置的“模拟用户组的数量”,且超时时间为0时,会导致程序挂起,即运行测试计划后无法结束运行。
如线程组设置的线程数为100,同步定时器的“模拟用户组的数量”设置为30,超时时间为0,此时运行测试计划后,程序就会挂起,将会还剩10个线程无法运行:
如何避免程序挂起
方式一:修改“模拟用户组的数量”,使得线程组用户数能够被整除;
方式二:设置定时器的超时时间,如设置超时时间为5000毫秒,即使线程组的线程数不能被整除,一旦过了超时时间,程序就会执行完剩余的线程。
三、常量吞吐定时器--设置接口访问频率
3.1 步骤
例:一个用户以20QPS(20次/秒)的频率访问服务器的登录接口,持续15秒,统计服务器的平均响应时间
1、新建测试计划、线程组、取样器、聚合报告,设置相关测试参数
循环次数 = 访问频率 * 持续时间
2、添加常量吞吐定时器
3、运行测试计划,查看汇总结果
四、分布式性能测试实现
多台机器协作,以集群的方式完成性能测试,提高测试效率。
如峰值时期有30000个用户访问系统,一台测试机最多支持5000个用户,可以使用6台测试机窜起来实现30000个用户访问
基本架构:
- 控制机:负责任务分配
- 执行机:负责任务实现
- 控制机制定测试任务,并下发到执行机,执行机执行任务并将结果返回给控制机,控制机汇总结果
4.1 分布式测试环境搭建
1、在不同测试机上安装jmeter
2、配置基础环境(统一操作系统、JDK、jmeter)
3、配置控制机与执行机之间的通信(端口):
- 为执行机设置端口号
%JMETER_HOME/bin/jmeter.properties --> server_port=xxx
- 控制机中设置执行机的IP和端口
%JMETER_HOME/bin/jmeter.properties --> remote_hosts=执行机A的IP:端口,执行机B的IP:端口
- 设置控制机和执行机远程访问相关控制:server.rmi.ssl.disable=true
4.2 分布式性能测试步骤
例:模拟100个用户操作(默认已经搭建好分布式测试环境)
1、启动集群机器上的控制机、执行机的jmeter
2、在控制机的jmeter中,新增测试计划、测试组、取样器、聚合报告(具体步骤同上)
3、设置线程组的线程数,并运行测试计划: