Jmeter 使用方法

2020博客地址汇总

2019年博客汇总

目录

1、目的

2、范围

3、工作程序

一、测试准备

安装JDK[S1] 

配置Jmeter

启动Jmeter

二、测试执行

HTTP请求测试

运行脚本

使用多台机器做负载测试

WebService接口测试

WebSocket接口测试

测试后恢复


1、目的

进一步规范和管理对Jmeter软件的使用方法。

2、范围

适用于SSTL测试中的性能测试的使用。适用于Jmeter本。

3、工作程序

一、测试准备

安装JDK[S1] 

  1. 下载安装JDK;
  2. 配置JDK环境变量;

右键计算机属性->高级系统设置->系统属性->高级->环境变量->添加如下的系统变量:

变量名:【JAVA_HOME

变量值:【D:\Program Files\Java\jdk1.8.0_92】【jdk安装路径】

变量名:【path

变量值:【\;%JAVA_HOME%\bin;

变量名:【CLASSPATH

变量值:【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

  1. 验证JDK

运行cmd->输入java -version->显示java版本就表示jdk安装成功

配置Jmeter

  1. 下载解压Jmeter,下载地址:http://jmeter.apache.org/download_jmeter.cgi
  2. 配置Jmeter环境;

变量名:【JMETER_HOME

变量值:【F:\test\jmeter\apache-jmeter-3.0(根据实际的jmeter解压路径填写)】

变量名:【CLASSPATH

变量值:

%JMETER_HOME\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

启动Jmeter

Jmeter无需安装,只需解压,双击Jmeter解压路径(apache-jmeter-3.0\bin)的bin下面的jmeter.bat。

二、测试执行

HTTP请求测试

脚本录制有两种方式:一种是利用Jmeter代理服务器录制,另一种是利用badboy工具录制。

***利用Jmeter代理服务器录制脚本***

  • 添加虚拟用户组

右击“测试计划”>添加>ThreadsUsers>线程组。线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统

  • 线性属性设置
  1. 线程数:指虚拟用户数
  2. Ramp-Up Period (in seconds):虚拟用户增长时长,指用户在多长时间内增长完毕。此处设置为0,表示用户数同时加载。
  3. 循环次数:指一个虚拟用户做多少次的测试

  • 设置并启动Jmeter代理服务器

    右键单击工作台(Work Bench),选择非测试元件(Non-Test Elements)中的Http代理服务器(HTTP Proxy Server),如下图所示:

    设置该“Http 代理服务器(HTTP Proxy Server)”->目标控制器(Target Controller)选择刚才建立的线程组(测试计划>线程组)

3   设置IE的代理服务器配置

打开IE界面,选择“工具(Tools)”->Internet选项(Internet Option)”->“连接(connections)”->“局域网设置(LAN setting)”,如下图所示:

在局域网设置(LAN setting)界面勾上LAN使用代理服务器(Use a proxy server for your LAN,设置地址(address)为“localhost(本机),端口(Port)为8888,端口号必须是没有被占用的(可以通过netstat –ano命令查看一下本机正在使用的端口,不要重复使用,否则录制不到Jmeter脚本

注意:录制完成后记得恢复浏览器的代理服务器设置,否则无法上网

  • 录制脚本

在浏览器的URL栏输入需要测试的地址,进行需要录制的操作,操作完毕后,点击Jmeter中的“Http代理服务器(HTTP Proxy Server)”的“停止(STOP)”按钮

此时录制完成后你会发现录制到太多的没用数据,此时需要使用正则表达式在代理服务器的排除模式下添加过滤(如过滤jpg文件使用.*\.jpg),如下图所示:

  • 参数化

在使用Jemeter做压力测试的时候,往往需要参数化用户名、密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录

  1. 右击脚本中的用户名和密码,选择“Replace values with variables”,对用户名和密码做参数化

 

2、右击线程组(Thread Group->配置元件(Config Element->CSV Data Set Config,设置相关参数:

  • FileNamecsv文件的完整路径(当csv文件在bin目录下时,只需给出文件名即可)
  • File Encoding:默认为ANSI
  • Varible Names:定义文本文件中的参数名,参数之间逗号分隔.参数项的名称应该与HTTP Request中的参数项一致。
  • Delimiter:如文件中使用的是逗号分隔,则填写逗号;如果使用的是TAB,则填写\t
  • Allow Quoated data选项选为True的时候对全角字符的处理出现乱码
  • Recycle on EOF:设置为True后,允许循环取值;设置为False后,当读取文件到结尾时,停止读取文件
  • Stop Thread on EOF:当“Recycle on EOF”为False并且Stop Thread on EOFTrue,则读完csv文件中的记录后,停止运行
  • Sharing Mode:设置是否线程共享

 

***利用badboy工具录制脚本***

  1. 下载并启动Badboy工具

进入Badboy安装目录下双击badboy.exe。下图是Badboy主界面

以登录百度为例录制脚本,输入百度网址后回车,即进入百度界面

输入框中输入“badboy”,点击百度搜索。

将录制脚本导出为jmx格式。点击File -> Export to Jmeter -> 另存为“百度搜索.jmx -> 保存

2、添加结果监听器

右击“线程组”->“监听器”->“察看结果树”、“图形结果”、“聚合报告”来查看性能测试过程中请求和响应信息

运行脚本

  1. 使用单台机器做负载测试 

试运行脚本:先点击保存后点击运行测试按钮。

  • 压力测试:修改线程组的线程数等参数,然后执行。

注意:使用badboy录制的脚本做多线程测试时需要在逻辑控制器中添加循环控制器,否则脚本只运行一次不会做多线程并发。

 

使用多台机器做负载测试

1、在所有期望运行jmeter作为负载生成器的机器上安装jmeter,并确定其中一台机器作为controller,其他的机器作为agent

2、运行所有agent机器上的jmeter-server文件(假定使用两台机器192.168.9.99 192.168.9.130作为agent

3、在controller机器的jmeterbin目录下,找到jmeter.properties文件,编辑该文件:

查找:remote_hosts=127.0.0.1

修改为:remote_hosts=192.168.9.99:1099,192.168.9.130:1099

这里要特别注意端口号,有些资料说明端口1644jmetercontrolleragent之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机器是否开启了防火墙等。

4、启动controller机器上的jmeter应用jmeter.bat,选择菜单“运行”--->“远程启动”,来分别启动agent,也可以直接选择“远程全部启动”来将所有的agent启动。

 

结果分析

一般使用聚合报告、图形结果查看性能,如下图所示:

 

WebService接口测试

  • 打开Jmeter,添加线程组
  • 添加WebService测试单元;右键线程组-->添加-->Sample--> SOAP/XML-RPC Request

具体原理:Web service都是放在Web服务器(IIS)后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。所以我们要添加soap协议request

  • 添加查看结果选项

右键选择添加的SOAP/XML-RPC Request,添加监听器,点击图形结果和用表格查看结果,也可以加入其它结果

  • 设置SOAP/XML-RPC Request

填写WebService的地址,SOAPAction地址以及数据格式,webservice暴露了哪些接口,接口都需要传入哪些参数,在数据格式中都有体现,你只需要去替换参数,传给服务器就可以了

  • 运行:设置完之后,可以点击运行按钮,测试一下,点击添加的结果模块查看结果是否成功
  • 压力测试:测试成功之后,设置线程组的线程数和循环条件进行压力测试

  • 运行:设置完之后,可以点击运行按钮,测试一下,点击添加的结果模块查看结果是否成功
  • 压力测试:测试成功之后,设置线程组的线程数和循环条件进行压力测试

 

WebSocket接口测试

  • 打开Jmeter,添加线程组
  • 在线程组下选择Sampler,添加Websocket Sampler(直接打开是没有WebSocket Sampleer的,这里需要安装插件,网上自行下载插件包,把解压后的插件包拷贝到Jmeter/lib/ext的目录下,然后重启Jmeter)

  • 添加结果监听器

右击“线程组”->“监听器”->“察看结果树”、“图形结果”、“聚合报告”来查看性能测试过程中请求和响应信息

配置websocket sampler,如下图所示:

  1. Server Name or IPWebSocket发送的目标服务器的地址或者名称
  2. Port NumberWebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到
  3. Connection:发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒
  4. Response:对响应消息的最大等待时间
  5. Implementation:只支持RFC6455(v13)WebSocket协议标准的最新版
  6. Protocol:有wswss之分,ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己的实际情况填写
  7. Streaming Connection:选择这个TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭

Request data:填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息

 

  • 可以在chrome的调试模式下(F12)可以找到websocket的连接信息

frametab页可以看到发送的信息内容,右键可以进行copy

根据上面的ws连接信息配置websocket sampler

测试后恢复

  1. 数据清理:测试结束后,需要把和项目有关的测试数据备份出来,并将测试设备上的数据清除,以免造成被测项目的信息泄露;
  2. 测试设备、软件状态恢复:检查测试设备及软件的状态是否正常,如发现异常需及时修复。

 

 

更多干货

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值