简介
1,多线程框架,支持多并发操作
2,用于对服务器模拟负载
3,支持web 数据库 ftp服务区系统的性能测试
4,开源,纯Java,可二次定制化开发
其他:
jmeter.log jemeter日志文件
jmeter.sh 运行在Linux系统打开的
Jmeter安装
一、Jmeter下载
进入官网:http://jmeter.apache.org/
1.第一步进入官网如下图
2.选择进行下载,下载下来为一个压缩包,解压即可
个人认为要注意3点:
1)解压之后压缩包叫apache-jmeter-4.0.zip,如是src.zip后缀的都不对,打开之后会报错不可用,因为里面缺少我们下一步将要配置的环境变量.jar文件。
2)对应的jdk版本不可太低,一般jmeter3.0的对应jdk1.7,jmeter4.0对应jdk1.8以上,否者启用jmeter也会报错。
3)一定要确保环境变量配置正确(包括jdk的与jmeter的环境变量配置)。
二、Jmeter环境变量相关配置
1.) 电脑桌面----》“计算机”图标----》鼠标右键选择“属性”----》点击高级系统设置----》高级—》环境变量页面
2) 开始配置环境变量了。在系统变量框,点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径是在E盘,这个路径根据自己实际安装路径进行填写。然后点击确定保存即可
3)配置classpath变量,没有的话也要按照上面步骤进行新建,有的话直接进行选中,点击编辑即可。变量值固定为:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar; 做完之后一定要保存,不确定的话可以直接点击确定按钮直到退到我的电脑页面
4)基本配置完成,然后验证一下是否配置正确,是否可用。
首先进到你的jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat,鼠标右键用管理员方式运行,或者直接双击打开,此时会弹出2个界面:1.个是命令窗口,使用jmeter的时候此命令窗口不能关,你缩小到电脑任务栏即可。2.还有一个界面是jmeter工作页面,你可以在里面进行相关的操作.具体如图
三、Jmeter目录结构
1.bin目录
examples: 目录中有CSV样例
jmeter.bat windows的启动文件
jmeter.log jmeter运行日志文件
jmeter.sh linux的启动文件
jmeter.properties 系统配置文件
jmeter-server.bat windows分布式测试要用到的服务器配置
jmeters-server linux分布式测试要用的服务器配置
其中系统配置文件中的SSL设置重点关注如下几个:
#指定HTTPS协议层
https.default.protocol=TLS
#指定SSL版本
https.default.protocol=SSLv3
#设置启动的协议
https.socket.protocols=SSLv2HelloSSLv3 TLSv1
#缓存控制,控制SSL是否可以在多个迭代中重用
https.use.cached.ssl.context=true
2.docs目录
存放了一些图片、css文件、接口信息
3.extras目录
扩展插件目录。提供了对Ant的支持,可以使用Ant来实现自动化测试,例如批量脚本执行,产生html格式的报表,测试运行时,可以把测试数据记录下来,jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行"ant -Dtest=文件名 report",就可以生成测试统计报表。
4.lib目录
所用到的插件目录,里面均为jar包。jmeter会自动在jmeter_HOME/lib和ext目录下寻找需要的类,lib下存放JMeter所依赖的外部jar,如:httpclient.jar、httpcore.jar、httpmime.jar等等。其中lib\ext目录下存放有Jmeter依赖的核心jar包,ApacheJMeter_core.jar、ApacheJMeter_java.jar在写client端需要引用,JMeter插件包也在此目录下。lib\junit下存放junit测试脚本.
5.Licenses目录
jmeter证书目录
6.Printable_docs目录
用户使用手册
jmeter常用组件介绍
1.测试计划(Test Plan)
用例描述一个性能测试,包含与本次性能测试所相关的功能。也就是说本次性能测试的所有内容都是基于一个计划的。
2.线程组和测试片段
2.1.线程组
2.1.1.setup thread group
一种特殊类型的ThreadGroup,可用于执行预测试操作。这些线程的行为完成像一个正常的线程组原件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。类似于init
2.1.2.teardown thread group
一种特殊类型的ThreadGroup,可用于执行测试后操作。这些线程的行为完成像一个正常的线程组原件。不同的是,这些类型的线程执行测试结束后进行定期线程组的执行。
2.1.3.thread group(线程组)
这个才是我们通常添加运行的线程。可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数据再测试执行过程中是不会改变的。
2.2.测试片段(Test Fragment)
测试片段是一个辅助的组件,在此节点下几乎可以放置任何 Jmeter 测试元件,但它一般不会被运行。
测试片段的作用:
(1) 在脚本开发过程中可以用来备份元件。
(2) 测试片段下的元件可以被模块控制器调用,我们可以利用它来模块化请求供模块控制器调用。
2.3.非测试元件
a.HTTP代理服务器:可以用于录制脚本
b.HTTP镜像服务:适用于调试接口测试时,不想真正发送http请求到服务器
3.Jmeter八大可执行元件
3.1.配置元件(Config Element)
配置元件(config element)用于提供对静态数据配置的支持。如CSV Data Set config 可以将本地数据文件形成数据池(Data Pool)。
3.2.定时器(Timer)
定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
3.3.前置处理器(Per Processors)
用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当URL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
3.4.后置处理器(Post Processors)
用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。
3.5.断言(Assertions)
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
3.6.监听器(Listener)
是用来对测试结果数据进行处理和可视化展示的一系列元件。 图行结果、查看结果树、聚合报告。都是我们经常用到的元件。注意:这个监听器可不是用来监听系统资源的元件。
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。
3.7.取样器(sample)
取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler ,如 HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
3.8.逻辑控制器
逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。
启动jmeter
bat文件
jar文件
jmeter与loadrunner区别?
都是压测工具,可以用来做性能测试,但是jmeter比较轻量级
jmeter是用Java语言写的,需要Java环境,loadrunner不需要
jmeter更偏向于功能和技术,lr偏向于业务
lr有强大得图表系统,jmeter相比弱一点
jmeter界面修改永久中文
什么是jmeter脚本?
通俗:用户操作被侧软件系统某场景的动作流程
jmeter:用户操作被侧软件系统某场景的请求
jmeter脚本开发
1,录制
a,badboy录制
默认安装即可,需注意,abdboy本身是一个测试工具,只不过,他提供了将录指回放功能,软件较古老,不推荐使用
b,使用jmeter自带的http代理服务器录制
添加代理服务器
点击 “工作台”,然后右键,根据如下图步骤,添加一个代理服务器。
添加之后,界面如下图
浏览器设置代理
打开火狐浏览器,找到高级-网络-设置-设置代理,下面我们设置填写 localhost 和端口8082
上面除了可以写localhost,还可以输入你机器的IP地址,端口只要不要和系统其它程序的端口冲突就可以,这里我设置成8082,点击确定,浏览器不要关闭。
添加逻辑控制器
在 工作台 下点击前面添加的代理服务器,右键,点击添加,添加一个逻辑控制器下的录制控制器。逻辑控制器是在线程组下面建立
添加完如下图所示,我们可以给这个录制控制器重命名下,例如我们录制 百度搜索,那么我们就写百度搜索,待会录制输入百度url。
点击HTTP代理服务器,切换到代理服务器配置界面,修改以下两处红圈位置。
第一个是端口号,和我们在火狐浏览器里面设置的端口保持一致,第二个是选择我们百度搜索这个录制控制器,也就是说,接下来我们录制的脚本都是在百度直接搜索内容。注意到这个页面还有一个启动和停止录制的按钮,接下来介绍。
启动录制脚本
点击代理服务器右侧里面的启动录制按钮,弹出一个根证书的弹窗,点击确定。
在火狐浏览器地址栏手动输入www.baidu.com,等页面加载完成,我们点击“新闻”这个链接,页面加载完成,我们选择停止录制,然后点击展开BaiDu_News这个录制控制器,可以看到以下这些请求。
监听服务器状态
1,安装这个插件
2,配合工具,启动图片中程序
3,线程添加这个组件,进行设置
如果要监控linux,将文件包拖到Linux目录下,启动程序即可
2,编码
jmeter参数化
什么是参数化?
业务中脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。
参数的不同方式
jmeter中参数化方式很多,以下讲解两种常见的参数化方式
方式一:接着在之前创建的脚本的基础上,右键点击 配置元件---->CSV数据文件设置
a.页面参数设置
文件名:脚本的存放路径,可以点击直接选择,这里可以读取CSV和txt格式的数据
文件编码:一般选择UTF-8
变量名:我这里根据测试数据选择username,password 注意中间需要使用逗号完成
忽略首行:这里第一行不需要则选择True
分隔符:数据中文件中分割符合是逗号,那这里直接写逗号即可
b.在请求中应用,应用的时候注意格式要使用${username}的形式
方式二:使用函数助手进行参数化
第一步:
我们需要“参数化”的数据,这里我用CSV格式的文件创建了三个用户名/密码,保存为.csv格式的文件。
将文件放在:D:\login.txt。至于如何生成大量测试数据可以看稍后章节
第二步:
编写函数来调用这个login.txt文件,点击菜单栏“工具”---->“函数助手对话框”,选择CSVRead如下图。
注:.csv文件第一列从0开始取得。
第三步:
将我们写好的函数复制到“登录”页面用户名和密码的位置。
注意:现在我们的参数化设置完成,在执行脚本的时候,将会调用我们E盘下面的login_user.csv文件,第一列是用户,第二列是密码。
username : ${__CSVRead(d:/login_user.csv,0)} #取第一列的数据
password : ${__CSVRead(d:/login_user.csv,1)} #取第二列的数据
第四步
在“线程组”中将线程数设置为3,刚好对应创建的3个用户,查看结果树:
jmeter接口传参:
parameters:键值对形式
body data :连接符&
file upload:上传文件使用
掌握工具的思想是什么?
实现的业务(功能) - 帮助我们实现API接口调用
过程(流程)- 可以把接口组织起来(顺序)
使用方法 - 如何实现 1, 2, 3 这几个关注点
参数化
断言
jmeter的设计思想是
面向开发,类似于IDE开发环境,这个开发环境变成了UI
组件就是java开发的class中的方法
插件化 - 需要什么就添加什么
测试管理是树状结构,一层一层的推进。
组件之间存在一定顺序的关系,这点要注意
测试计划 - 打算干什么,测试什么
测试线程组
脚本编写基本流程 测试计划->线程组->测试协议->查看结果(仅是操作的流程)
JMeter主要功能
参数化
调试取样器
正则表达式提取器
解压之后打开
打开jmeter路径
发起http请求
逐步加压使用
连接数据库,变量用来接收数据,用来调试用,有几组数据定义几个变量,
MySQL的操作
要实现变量套变量要使用__V内置的函数 例如:KaTeX parse error: Expected group after '_' at position 2: {_̲_V(myusername_{index})}
获取得数据用作下一个接口得输入数据,使用变量接收
循环数据,起到多用户作用
生成报告
1,生成结果存放在jtl文件中,在写入一个文件时创建就可以
2,运行线程
3,tools-生成html报告
4,选择位置,第一个是创建的jtl结果文件
第二个是apache-jmeter-5.2.1\apache-jmeter-5.2.1\bin\user.properties
第三个是存放报告处,必须是空的文件夹
生成HTML测试报告的两种方式
1、利用已有.jtl文件生成报告
如果已经有经过测试生成的.jtl文件(可以在聚合报告等上面设置保存),可以利用该文件直接生成HTML可视化测试报告。
进入jmeter的bin目录下,输入如下命令:
D:\tools\apache-jmeter-5.3\bin\jmeter.bat -g C:\Users\Augus\Desktop\poy.jtl -o D:\re
#-g:后跟test.jtl文件所在的路径
#-o:后跟生成的HTML文件存放的路径
PS:如果是在Windows环境命令行运行,必须指定生成的HTML文件存放文件夹,否则会报错;如果是linux环境,如指定路径下不存在该文件夹,会生成对应的文件夹存放报告文件!
2、命令行界面直接运行脚本生成
可以通过如下命令,一次性完成测试执行和生成HTML可视化报告的操作,进入jmeter的bin目录下,输入如下命令
D:\tools\apache-jmeter-5.3\bin\jmeter.bat -n -t E:\性能测试脚本\蜗牛Boss.jmx -e -o D:\re -l login.log
#-n:以非GUI形式运行Jmeter
-t:source.jmx 脚本路径
-l:记录样本到文本,可以看成日志,文件名为.log即可
-e:在脚本运行结束后生成html报告
-o:用于存放html报告的目录
我本地Windows环境执行截图如下:
执行完毕后,用浏览器打开生成的文件目录下的index文件