JMeter性能测试---完整入门到白了少年头

52 篇文章 6 订阅
6 篇文章 0 订阅

一、性能测试

测试目的
1.客户有明确要求,如:系统要求同时满足5000个用户登录,平均每个用户登录时间不能超过5秒
2.考察目前系统性能(容量测试),需要对系统做出分析,找出系统的压力点
3.找出系统性能瓶颈,需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试
4.了解系统在长时间的压力下性能状况(强度测试)

注意事项
1.性能测试一般在功能测试稳定的前提下进行
2.修改性能测试问题的时候容易造成功能错误

负载测试:正常工作能力极限
压力、强度测试:瞬间峰值

六大步骤
1.测试计划
2.创建脚本
3.创建场景
4.运行场景
5.监控场景
6.系统调优

二、负载/压力/可靠性

场景类型用户数量(线程数)思考时间(固定定时器或高斯随机定时器)集合点(同步定时器)场景加压(加压时间)运行时间(循环次数或配置调度器)判定场景成功/失败条件
压力(狭义并发)50,60, 70, 80…禁用开启一次完成一次服务是否崩溃
负载50开启高斯随机定时器关闭2-5分钟内完成20分钟–2小时 启用调度器1.事务通过率
2.事务时间
可靠10开启高斯随机定时器关闭2-6分钟内完成启用调度器 24小时 36小时 72小时1.内存泄漏(30分钟记录一次内存)
2.服务器是否崩溃

三、JMeter工具

Jmeter元件
1.测试计划
2.线程组
3.监听器
4.逻辑控制器
5.断言
6.配置元件
7.前置处理器和后置处理器
8.定时器
9.取样器(sampler)
10.正则表达式提取器
11.用户定义变量
12.查看结果树

元件的执行顺序
1.配置元件
2.前置处理程序
3.定时器
4.取样器(sampler)
5.后置处理程序(除非sampler得到的返回结果为空)
6.断言(除非得到sampler得到的返回结果为空)
7.监听器(除非sampler得到的返回结果为空)

Jmeter体系结构图
在这里插入图片描述

四、负载脚本

1.线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
在这里插入图片描述
2.添加HTTP cookie管理器
在这里插入图片描述
3.默认请求值
在这里插入图片描述
4.添加一个事务控制器,可以当作一个业务
在这里插入图片描述
5.在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
在这里插入图片描述
6.添加脚本(http请求)
在这里插入图片描述
7.添加jp@gc - PerfMon Metrics Collector进行监控CPU、Memory、Disks I/O、Network I/O等。添加处:添加->监听器
在这里插入图片描述
8.在最后添加一个聚合报告,添加处:添加->监听器
在这里插入图片描述

五、Jmeter参数化

    在做性能测试过程中,一般我们需要模拟多个用户进行操作,为了满足实际场景,模拟真实的用户行为,我们需要做到模拟的用户帐号或其它信息都是不同的,这时我们就需要用到参数化。在Jmeter中,配置元件可以解决此问题

配置元件概念: JMeter配置元件可以用来进行参数化、初始化默认值和变量、存储服务器的 响应信息以及配置链接数据库等。JMeter参数化一般使用配置元件中的CSV Data Set Config或者JDBC Connection Configuration来进行参数化

1.CSV Data Set Config元件: 该元件可以用来读取csv或dat文件的数据(一行一行读取),然后通过设置 把读取到的数据关联到Jmeter中的变量保存。csv文件可以使用execl表格工具去进 行编辑。

2.JDBC Connection Configuration元件: 该元件可以用来进行数据库的连接,然后通过JDBC Request元件发送数据库请求数据库中的表中的数据,再通过正则表达式提取器关联到Jmeter中的变量保存

如:CSV Data Set Config元件(添加处:添加->配置元件)
在这里插入图片描述
界面字段说明:
    名称、注释与之前元件一样可以随意设置。 Filename:指保存信息的文件目录,可以相对或者绝对路径,相对路径从Jmeter 的启动目录(***/bin)路径。 File Encoding:文件编码,默认为ANSI,建议设置为utf-8,防止遇见乱码情况。

Variable Names:参数名称,每个名称中间用分隔符分割,分隔符使用下面的 “Delimitet”中定义的,默认用逗号隔开,与参数文件的参数对应。如果设置的参 数名称多于参数文件中的参数,多余的参数取不到值;反之参数文件中的参数将没 有参数对应。

Delimitet:定义分隔符,用于分隔文件中的参数,及上述Variable Names中定义的 参数名称。

Allow Quoated data?:是否允许引用数据,设置为True ,设置文件中的参数值都必须 用引号引起来,False则不需要

Recycle on EOF ?:遇到文件结束符时,是否从头开始循环读入,设置为True,则从 头开始继续循环

Stop Thread on EOF?:当Recycle on EOF 设置为False并且Stop Thread on EOF为True, 则读完csv文件中的记录后, 停止运行

Sharing Mode: 参数文件共享模式,有三个设置,说明如下:
All threads:参数文件对所有线程共享,包含同一测试计划中的不同线程组。
Current thread group:只对当前线程组中的线程共享。
Current thread:仅当前线程获取。

如:JDBC Connection Configuration元件(添加处:添加->配置元件)
在这里插入图片描述

六、远程操作运行脚本

1、操作步骤(GUI方式)
1.在负载机上部署jmeter,确保jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat这两个文件。(jdk是否配置好,jmeter是否安装成功)
在这里插入图片描述
2.双击启动负载机的jmeter-server.bat程序
在这里插入图片描述
3.在jmeter控制机的bin目录找到jmeter.properties文件,并修改”remote_hosts”,增加负载机IP,多个IP使用英文逗号隔开,修改后要启动jmeter
在这里插入图片描述
4.进入jmeter控制机的GUI图形界面,远程运行,点击安全即可,点击后,jmeter控制机会自动探测,只要先启动远程负载上的Agent,开始运行测试计划时就会自己连接负载机去完成
在这里插入图片描述
5.停止(可选),点击上面右图的后面两个按钮即可。前者是执行完成当前迭代停 止(比如脚本中有5个请求,在运行第2个的时候收到停止命令,那么将继续执行 完5个请求然后再停止),后者是立即终止

备注:remote_hosts里设置127.0.0.1 。需要控制机也启动jmeter-server.bat

2、命令窗口运行(非GUI方式)
命令窗口运行没有Jmeter界面,通过DOS命令窗口运行场景。用纯命令方式运行Jmeter是因为Jmeter可视化界面及监听器动态展示结果都比较消耗负载机资 源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能结果产生影响。 这个影响不是指被测系统的性能受到影响,而是指负载机的性能受到影响, 导致负载量上不去,比如命令模式100个线程可产生100TPS的负载,而GUI方式只 产生80TPS的负载。所以推荐进行性能测试的时候,使用命令方式来运行测试计划。

命令窗口方式运行场景命令如下
1. java -jar %JMETER_HOME%\bin\ApacheJMeter.jar -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl

2. %JMETER_HOME%\bin\jmeter -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl

备注:两条命令都可以运行测试计划,其中%JMETER_HOME%必须配置jmeter的环境变 量,%JMETER_HOME%\script\script.jmx为jmeter脚本存放路径。

命令行部分参数说明
-n:非GUI方式运行。
-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径
-h:查看帮助
-v:查看版本
-p:指定读取Jmeter属性文件,比如jmeter.properties文件中设置的
-l:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径
-s:以服务器方式运行(远程方式)
-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定
-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置
-L:定义Jmeter的日志级别,如DEBUG、INFO、ERROR等
-H:设置代理IP
-P:设置代理端口
-u:设置代理帐号
-a:设置代理帐号密码
-X:停止远程执行
-J:定义Jmeter属性,等同于在jmeter.properties中设置
-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享


jmeter不能远程出现的可能原因:
1.加压机(负载机)jmeter-server.bat没有开启
2.Jmeter.properties改了配置,没有重启jmeter,让配置文件生效
3.负载机的jmeter版本和控制机的jmeter版本不一样
4.如果有CSV参数化,必须把CSV文件,复制到每一个负载机上,同一位置,同一名称
5.控制机防火墙没有关
6.把其它网络连接关掉(如虚拟机的Vmnet1,Vmnet8),再双击jmeter-server.bat看网络IP是不是本机的


请添加图片描述

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值