前言
Apache JMeter是测试工程师日常工作中经常会使用的一款软件,它可用来测试接口、模拟用户负载来完成性能测试工作,可以对web应用或各种服务的性能进行分析和度量。它具有开源高扩展性,使用成本低的特点,是当前使用率最高、最好用最全面的性能测试工具之一。本篇文章为大家详细描述了在使用 JMeter 进行测试时常用的测试场景的脚本编写方法,希望能为你带来一些帮助,推荐收藏,作为工具书查阅。
JMeter 有什么优势?
开源免费:开源意味着高扩展性,免费意味着使用成本低;
高扩展性:支持可视化插件进行扩展测试;
友好GUI:界面简单易用;
可移植性:100% 纯 Java 桌面应用程序,可以多平台运行;
安装方便:组件小,下载安装包解压,配置路径即可使用;
完全多线程:可以通过多个线程组并发取样,也可通过单独的线程组对不同的功能同时取样;
结果可视化:可视化界面展示执行结果和你可能需要关注的性能指标;
多测试策略:比如功能测试、负载测试、分布式测试;
录制回放:支持多种录制脚本的方法,最常见的是第三方工具 Badboy 录制,还有JMeter自身设置来录制脚本;
仿真:可以模仿真实的用户行为;
支持多协议:支持 HTTP、HTTPS、FTP、SOAP / REST、LDAP等多种协议;
支持脚本测试:可以自行编写 bean shell、java脚本进行测试。
下面我们就来了解下如何使用JMeter来进行脚本的开发,首先你要先安装上它。
下载与安装
一、下载地址:Apache JMeter - Download Apache JMeter
二、选择需要版本的zip包(解压安装方式时)
三、文件解压缩,把下载的zip文件解压缩到你的安装目录
四、配置环境变量(适用win10系统)
- 系统搜索栏搜索环境变量——弹窗中点击环境变量
- 新建JMETER_HOME变量:值为你解压的JMeter安装路径
- 编辑classpath变量,在其后追加如下配置:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
五、安装完成
JMeter 安装路径——bin——jmeter.bat,鼠标右键管理员方式运行/双击运行
注意:JMeter 3.0需要对应安装jdk1.7,JMeter 4.0对应jdk1.8以上,否则启用 JMeter 也会报错
快速开始
JMeter 导航栏
初次使用 JMeter 的伙伴可能对界面上的一些元素不太熟悉,下面就通过一张图来说明一些常用元素的含义 。
你也可以打开已存在的脚本,路径为:文件——打开——选择jmx文件即可。
如何进行脚本录制?
使用Badboy进行脚本录制
下载与安装
- 下载地址(非官方):https://www.cr173.com/soft/874188.html
- 解压后执行exe文件,选择安装目录,下一步确认安装即可
Badboy使用
- 双击BadBoy图标,打开BadBoy;
- 地址栏输入录制网址,打开网址;
- 录制场景;
- 录制完成后点击保存,将录制结果保存为BadBoy脚本,以备后面使用;
- 点击File->Export to JMeter,保存为JMeter脚本;
- Jmeter打开录制脚本,点击File——Open——选中文件。
使用 JMeter 的代理服务器功能进行脚本录制
- 在测试计划——线程组——逻辑控制器——添加录制控制器;
- 在测试计划中添加非测试元件——HTTP 代理服务器,配置如下图;
- 在代理服务器下添加定时器——高斯随机定时器,并配置固定延迟偏移为${T},用于告知 JMeter 在其生成的 HTTP 请求中自动添加一个定时器,定时器会使相应的取样器被延迟,规则为当上一个请求被响应并延迟了指定时间后,再发送下一个请求;
- 360浏览器中工具——Internet选项——连接——局域网设置中配置浏览器的局域网代理服务器信息为 localhost,端口为8080;
- 开启代理服务器的启动功能,在浏览器中进行系统访问即可进行录制,录制完成后可进行脚本保存,别忘了恢复浏览器的代理服务器设置。
录制效果如图:
但是并不推荐使用脚本录制工具,更推荐手动编写脚本,原因如下:
- Badboy 无法支持所有网站的脚本录制,很多网站都不太支持,会出现脚本运行错误;
- 使用jmeter配置代理进行录制也很难用,因为录制时每个 js、png 及动态请求都会录制下来,很不高效;
- 即使可以录制的网站,其录制脚本的 session 信息也易失效,不具有持续性;
- 录制脚本也很容易回放失败。
测试脚本必需元件
JMeter 中一个脚本就是一个测试计划,也是一个管理单元。测试计划需要包含以下要素:
脚本中测试计划只能有一个:JMeter 脚本在 GUI 显示树型结构,测试计划是根节点
测试计划中至少要有一个线程组:JMeter 负载通过线程组驱动,可以建立多个线程组
至少有一个取样器:测试的目的是模拟用户请求,没有取样器的脚本毫无意义
至少有一个监听器:我们需要从结果中分析衡量系统性能
线程组
添加线程组 一个测试计划可添加一个或多个线程组,其中多个线程组的运行采用的是并行的方式,即同时被初始化及同时执行其下的 Sampler。
配置参数:
- 线程数:模拟的用户数量;
- Ramp—Up Period (in seconds):达到指定线程需要的时间,例如线程数为100,时间设定为10s ,即10s 加载100 个线程,每秒启动的线程数=100/10=10;
- 循环次数:每个线程发送请求的次数。
取样器
添加 Sampler 取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的