Jmeter教程

一、jmeter环境要求

Jmeter的安装需要用到java环境,而java环境的配置就是jdk的配置

jdk官网下载地址

下载安装完jdk之后

在系统变量中添加三个变量:

1
2
JAVA_HOME   :  D:\Java\jdk1.8.0_191  
(参数值为jdk的安装路径)
1
2
Path  :   %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(一般系统中自带Path变量名,只需要将该变量值追加进去即可)
1
CLASSPATH   :   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (最前面的  .  也要带)

添加完环境变量之后必须点击全部的确定

之后,在命令行输入 java -version

提示:

aETGKf.png

即为成功!!

二、jmeter的下载

下载的时候可以在jmeter官网上直接下载

jmeter官网下载地址

解压后,得到文件夹
打开文件夹,找到里面的bin目录

要想启动jmeter的话,直接双击第一个jar文件即可

打开后的页面如下:

aEHK1I.png

当然,jmeter这里我使用了一个非常友好的汉化版本,可以调整为简体中文

三、使用jmeter

1. 创建一个线程组,一个线程组就代表一个接口或多个接口(里面postman里面集合)

aEHU9s.png

2. 添加一个http请求,并填入请求方法、地址和参数

aEHDBT.png

填写请求的url时候,有两种填写方式,无论使用哪一种都可以的:

aEH7Ue.png

在请求的时候,有两种常见的请求方式,get和post。填写参数时需要注意:

aEbuaF.png

3. 在jmeter里,无法直接看到响应内容,需要手动的填写监听器。

常见的需要添加的监听器有:查看结果树和聚合报告

Jmeter的响应内容,需要再查看结果树里面看到,而响应统计在聚合报告里可以看到

aEb12R.png

4.运行jmeter,点击启动即可

aEbaIe.png

5.可以再查看查看结果树里看到对应的结果请求

aEbgZ8.png

6.解决jmeter数据乱码

1
prev.setDataEncoding("utf-8");

aEbxzR.png

7. 如果想清空请求记录,点击清除按钮

aEquOP.png

8.可以在聚合报告里查看到所有结果的统计情况

聚合报告的内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
Label:         请求的名字
Samples: 请求数量
Average: 平均响应时间(单位:ms)
Median: 中位数响应时间
90% Line: 90%用户响应时间
95%line: 95%用户响应时间
99%line: 99%用户响应时间
Min: 用户最小响应时间
Max: 用户最大响应时间
Error%: 错误率
Throughput: 吞吐量。默认情况下每秒完成的请求数
Received KB/S: 每秒从服务器接收的速度
Sent KB/S: 每秒向服务器发送的速度

aEq2Ox.png

9. 设置线程组和循环次数

线程组设置为几相当于同时有几个请求一起发送

循环次数设置为几相当于一个请求发送了几遍

aEqX0f.png

可以在聚合报告里看到运行情况

10.添加断言

aELwjI.png

11.接口的参数化

使用不同的请求参数,来访问同一个接口地址

Jmeter参数化,需要添加一个CSV数据文件设置:

aELc4g.png

然后再创建一个文件

里面写上要传入的参数,不同的参数之间换一下行

找到选择所导入的文件

aELTET.png

变量名称就是参数值

aELqC4.png

设置线程组中的循环次数(测试多少个情况下的接口就用设置多少个)

aELzb6.png

12.Jmeter的环境变量设置

在jmeter里也是可以跟postman一样,设置环境变量,并且非常的简单,首先在配置元件里添加一个用户定义的变量

aEOnVf.png

然后就可以自定义一些变量名和变量值,然后引用,引用的话是${xxx}的形式,如下:

aEOGMn.png

13.正则表达式

13.1、解释

(1)引用名称:下一个请求要引用的参数名称,如填写activityID,则可用${activityID}引用它。

(2)正则表达式:

1
2
3
4
5
6
()括起来的部分就是要提取的。
.匹配任何字符串。
+:一次或多次。
?:在找到第一个匹配项后停止。

注:(.+?)[.\n]+可以匹配换行符在内的所有字符。

(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$$3$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值

(4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,如果在LR中,取出的值是一个数组,还得处理一下,LR11版本用一个随机的函数就可以不用写大段的代码来处理数组。

(5)缺省值:如果参数没有取得到值,那默认给一个值让它取。

13.2、关于正则表达式的举例说明

(1)提取单个字符串

例1:假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取readme.txt

一个符合要求的正则表达式:name = "file" value = "(.+?)">

例2:将第一个接口的城市代码,作为第二个请求的参数传入

① 获取城市代码接口

1
http://toy1.weather.com.cn/search?cityname=nanjing

② 根据城市代码获取天气接口

1
http://www.weather.com.cn/data/cityinfo/101190101.html

aEXVW4.png

aEvvWD.png

(2)提取多个字符串

假设测试人员期望匹配Web页面的如下部分:name = "file" value = "readme.txt">并提取filereadme.txt

一个符合要求的正则表达式:name = "(.+?)" value = "(.+?)"

引用名称:MYREF

模板:$1$$2$

14.json提取器

下一个请求要引用的参数通过json提取器提取出来

aExDk6.png

aExzNV.png

15.参数化+json提取器

aVSiPf.png

aVS6Ld.png

16.跨线程组+json提取器

aVSqwn.png

aVph7R.png

aVpItx.png

aVpqje.png

点击查看

本文标题:Jmeter教程

文章作者:Mango

发布时间:2020年07月28日 - 21:34:45

最后更新:2020年07月29日 - 08:41:18

原始链接:https://mango185.github.io/post/ea16244c.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------