安装与配置
一:下载jdk——配置jdk环境变量
1.新建环境变量变量名:JAVA_HOME变量值:(即JDK的安装路径)
2.编辑Path%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
3.新建环境变量变量名:CLASSPATH变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
4.验证在cmd窗口中输入java
二:下载JMeter——配置环境变量
(下载地址:Apache JMeter - Download Apache JMeter)
![](https://img-blog.csdnimg.cn/img_convert/aaee4decf3e24aae82a2bf7fcc0c4a33.png)
1.下载后无需安装,解压后即可使用。解压后目录如下
![](https://img-blog.csdnimg.cn/img_convert/0df4572886f84171ab520b625d98da09.png)
2.环境配置
![](https://img-blog.csdnimg.cn/img_convert/5d9363eead60485cbb6620abc52dadcb.png)
编辑CLASSPATH变量,加上
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
![](https://img-blog.csdnimg.cn/img_convert/da482a3444704fe7bdc49c2a569c1d18.png)
完成以上操作后打开JMeter中bin目录下面的jmeter.bat文件即可打开JMeter了
打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不要关闭命令窗口
![](https://img-blog.csdnimg.cn/img_convert/265f39d2d1bc406d957a2137d796ac20.png)
![](https://img-blog.csdnimg.cn/img_convert/814e83cbc7be432886940e4780ad1631.png)
设置成中文
方法一:
![](https://img-blog.csdnimg.cn/img_convert/5d5863ba0e474b678b84a8d4f8009177.png)
方法二:永久设置成中文
找到jmeter下的bin目录,打开jmeter.properties 文件
![](https://img-blog.csdnimg.cn/img_convert/0d4f6794cae04009ae9639c9e219b232.png)
第三十七行修改为
language=zh_CN
去掉前面的#
![](https://img-blog.csdnimg.cn/img_convert/fc41e1505cda4cd3aba29bdb2c4e564e.png)
jmeter——接口测试
一.线程组——选择测试计划,右键-->添加-->线程-->线程组
![](https://img-blog.csdnimg.cn/img_convert/8693f625df8b4a0a81c78fcf2ff95285.png)
![](https://img-blog.csdnimg.cn/img_convert/ddd90105e061400ba62060c7041199af.png)
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。
准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
二.HTTP请求——选择线程组:右键-->添加-->取样器-->HTTP请求
![](https://img-blog.csdnimg.cn/img_convert/6c832917b65741bab3d7e0a8e20a40bc.png)
![](https://img-blog.csdnimg.cn/img_convert/cffa1b89261b4e59bb48202d047293ea.png)
请求名称,可不改
Web服务器信息,网络协议、域名或IP、端口号,可自行修改
接口请求:请求方法、请求路径、编码格式,可自行修改
参数传递:消息体数据存储JSON信息
三.HTTP信息头管理器——选择线程组:右键-->添加-->配置元件-->HTTP信息头管理器
作用:可以存储请求头里面的信息
![](https://img-blog.csdnimg.cn/img_convert/4c075f3ba3eb4f279af360a10ae86ca1.png)
![](https://img-blog.csdnimg.cn/img_convert/b3ae2160475d41419744dd6533f8dfa6.png)
四.查看结果——选择线程组:右键-->添加-->监听器-->查看结果树
![](https://img-blog.csdnimg.cn/img_convert/563fe5e0870e42ef8937489a985296cf.png)
![](https://img-blog.csdnimg.cn/img_convert/efd8e18969d145988e4624d665d2c985.png)
1.开始测试
![](https://img-blog.csdnimg.cn/img_convert/a6c247a5d2f04524a225dc1603222f8d.png)
![](https://img-blog.csdnimg.cn/img_convert/743843354dc342c39a3d701bfdf363bc.png)
接口调用成功,通过修改http请求来验证返回值是否符合预期!
jmeter——Http请求默认值
选择测试计划:右键-->添加-->配置元件-->HTTP请求默认值
![](https://img-blog.csdnimg.cn/img_convert/8596d9c0ec3940af97cca851a5aa4944.png)
![](https://img-blog.csdnimg.cn/img_convert/d6806ccde1584e90b7c914bf711227a6.png)
一个线程下可以同时存在多个http请求,可以把公共参数,提取到HTTP请求默认值组件中
比如:协议、IP、端口号、编码等
然后在每个http请求的元件中,编辑自己独有的信息即可。
![](https://img-blog.csdnimg.cn/img_convert/679ef337f4674c1788c255c08961e9d2.png)
![](https://img-blog.csdnimg.cn/img_convert/e243c34512d045ef93e3a1a9573adbc5.png)
注:加了http请求默认值之后,在单个http请求里面还填写了同样的数据,那么以哪个为准就近原则——就近原则!
jmeter——Http cookie管理器
1.添加HTTP cookie管理器之前:有报错,缺少cookies
![](https://img-blog.csdnimg.cn/img_convert/056dc862342f4f13bb11c6b69ab8dde3.png)
2.选择测试计划:右键-->添加-->配置元件-->HTTP cookie管理器
![](https://img-blog.csdnimg.cn/img_convert/ffc4ccb35d7f4a8480d657cf575538b3.png)
![](https://img-blog.csdnimg.cn/img_convert/7eff9b829d754e158983774ce7d3c68d.png)
3.添加HTTP cookie管理器之后再次测试,不报错。
![](https://img-blog.csdnimg.cn/img_convert/6d46077a0f7a4e65ac1b28e22f891246.png)
作用描述:HTTP Cookie管理器可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。
jmeter——接口与线程之间的传参
以查询全部课程接口为例,希望提取课程id
![](https://img-blog.csdnimg.cn/img_convert/74586d8efd1946b08f46c3ce67d1e590.png)
一.添加json提取器:右键http请求-》添加-》后置处理器-》json提取器
JSON提取公式:$..字段名
![](https://img-blog.csdnimg.cn/img_convert/b31db636a2c248449e55eec89e636e15.png)
![](https://img-blog.csdnimg.cn/img_convert/351a88eb387b45078775f52be7b28afe.png)
查看提取结果——调试取样器:course_id=63
![](https://img-blog.csdnimg.cn/img_convert/3a1594c9f96041ffaa7cd579cc49a7ff.png)
提取全部id如下:
![](https://img-blog.csdnimg.cn/img_convert/e561275bd88c4d63981d8e67eb7b0901.png)
![](https://img-blog.csdnimg.cn/img_convert/7b30d878b53a4f0abfe134646f3f2977.png)
二.引用提取出来的参数
1.同一线程下引用:${引用名}
![](https://img-blog.csdnimg.cn/img_convert/6cb5323d46754945836b5974544edcd6.png)
![](https://img-blog.csdnimg.cn/img_convert/054ac89b11f9480189641ea6d9ff89fc.png)
2.跨线程引用:后置处理程序
直接把进入课程详情接口拉到另一个线程下,课程id没有成功被引用
![](https://img-blog.csdnimg.cn/img_convert/9e59d8473d8b47e184a45282f8e5930a.png)
跨线程需要把提取出来的值设置为全局变量:
右键http请求-》添加-》后置处理器-》后置处理程序
在BeanShell后置处理器中使用__setProperty()函数把courses_id设置为全局变量
${__setProperty(新值,${提取值},)};
![](https://img-blog.csdnimg.cn/img_convert/65089969426748a191027bacbfcf500b.png)
![](https://img-blog.csdnimg.cn/img_convert/a76ae3b940aa4b95a4889635fc6056ce.png)
设置全局变量成功,再次引用查看效果
跨线程引用方法:${__property(变量名)}
![](https://img-blog.csdnimg.cn/img_convert/3c55a470ab3e48c1bcf417cd9223d655.png)
![](https://img-blog.csdnimg.cn/img_convert/999ad8496dbe488984c43a9ca2eecce1.png)
跨线程调用成功!
报错是因为没有cookies,下面解决no cookies问题
三.跨线程调用cookies
1.找到需要提取的内容
![](https://img-blog.csdnimg.cn/img_convert/7b12fc4cc0d245128b9e885440e4acb0.png)
2.添加正则表达式提取器:右键http请求-》添加-》后置处理器-》json提取器
![](https://img-blog.csdnimg.cn/img_convert/e7187eb2821842e39725cfa1848e6b4d.png)
![](https://img-blog.csdnimg.cn/img_convert/dfb00ac9be414a228797e5a89d27d1a7.png)
3.查看提取结果——调试取样器
![](https://img-blog.csdnimg.cn/img_convert/37eb022836874c19a7913d5b46d6159e.png)
4.成功提取!同样,跨线程需要把提取出来的值设置为全局变量:
右键http请求-》添加-》后置处理器-》后置处理程序
${__setProperty(nlqtoken,${lqtoken},)};
![](https://img-blog.csdnimg.cn/img_convert/8148907d51cc453f9cb8c317d53eeef9.png)
5.在第二个线程下添加信息头管理器
![](https://img-blog.csdnimg.cn/img_convert/0d1a2f79cccd4b7491d054553e7325a4.png)
6.跨线程引用函数:lqtoken=${__property(nlqtoken)}
![](https://img-blog.csdnimg.cn/img_convert/f7ae769c1166400dabb59cbefc480b65.png)
7.开始测试
![](https://img-blog.csdnimg.cn/img_convert/b87b4a053a3e46ac825353528e37a1ce.png)
跨线程cookies调用成功!
jmeter——参数化
一.CSV Data Set Config方式
1.新建CSV格式文件
![](https://img-blog.csdnimg.cn/img_convert/3c56ba54038446adb94af1eafaf01e5a.png)
![](https://img-blog.csdnimg.cn/img_convert/7f9dc511294b4f049448ca96438e150c.png)
2.CSV——选择测试计划,右键-->添加-->元件-->CSV data Sat config
![](https://img-blog.csdnimg.cn/img_convert/7855eee871ae40f189a5527f7035dc7a.png)
![](https://img-blog.csdnimg.cn/img_convert/3783d653108d48878d156170e3a49f15.png)
3.使用参数化变量:${变量名}
![](https://img-blog.csdnimg.cn/img_convert/3a70754b5a9b417d8ebf36d7ed3caad5.png)
4.开始测试
![](https://img-blog.csdnimg.cn/img_convert/a2bf7c01e8294b1aa05554ea24d0525f.png)
![](https://img-blog.csdnimg.cn/img_convert/aa85e3c76c4f4fb48c831f7647174ad7.png)
![](https://img-blog.csdnimg.cn/img_convert/672e819f4fd9491a890bc0ba90e635b7.png)
三个登录接口分别使用了不同的账号密码