Jmeter使用

一、Jmeter下载安装配置

1.JMeter介绍

JMeter是目前行业内用的比较多的一个开源测试工具,主要用于负载测试、性能测试、回归测试等,由Java语言编写,要依赖Java环境来运行(需要提前配置Java环境)。
主要特点:

  1. 开源性质:JMeter 是完全免费的,并且它的源代码可以被任何人查看、修改和分发。
  2. 多协议支持:除了Web服务,JMeter 还支持通过HTTP、HTTPS、FTP、JDBC、LDAP、SOAP等协议进行测试。
  3. 用户界面:它有一个基于Java的GUI界面,使得创建和执行测试计划更加直观。
  4. 脚本化测试:JMeter 允许用户通过BeanShell、JSR223脚本、Jython等编写脚本来进行复杂的测试。
  5. 灵活的测试计划:用户可以创建包含多种不同类型采样器的测试计划,以模拟真实的用户操作。
  6. 报告和可视化:JMeter 提供了多种方式来查看测试结果,包括图形、表格、日志和XML文件等。
  7. 插件扩展:JMeter 支持各种插件,这使得用户可以根据自己的需要扩展JMeter的功能。

2.下载

官网最新版本下载地址:https://jmeter.apache.org/download_jmeter.cgi
image.png

**Binaries:**二进制版,即已经编译好、可直接执行;
**Source:**源代码版,需要自己编译;
**.tgz **后缀名的为Linux下使用的包
**.zip **后缀名的为Windows、macOS下使用的包
根据自己的需要下载对应的包即可。

历史版本下载:https://archive.apache.org/dist/jmeter/binaries/
image.png
或者在我的网盘下载也可以:https://www.alipan.com/s/d8YngVufEvU

3. JMeter目录解析

首先将下载的zip包解压到自己想要放的目录。
由于里面文件比较多所以只会解释比较重要的文件。

apache-jmeter-X.X.X
 ├── bin    # 可执行文件目录
 │    ├── examples      # csv样例
 │    ├── jmeter.bat   # Windows的启动文件
 │    ├── jmeter.log    # 日志文件
 │    ├── jmeter.sh     # Linux的启动文件(tgz包才有)
 │    ├── jmeter.properties     # 系统配置文件
 │    └── jmeter-server.bat     # Windows分布式测试要用到的服务器
 ├── docs   # 帮助文档目录
 ├── extras     # 扩展插件目录,目录下的文件提供了对ant的支持
 ├── lib        # 存放Jmeter依赖的jar包,同时安装插件也放于此目录
 ├── licenses   # 软件许可文件,不用管
 ├── printable_docs     # 用户手册,其中usermanual/component_reference.html是最常用的核心帮助手册
 ├── LICENSE    # LIcense说明文件
 ├── NOTICE     # LIcense说明文件
 └── README.md  # JMeter简明介绍

4. Windows/macOS下安装启动

第一步:解压下载的安装包
第二步:进入解压后的apache-jmeter-X.X.X/bin目录
第三步:双击jmeter.bat文件或者ApacheJMeter.jar文件,两者都可以启动,使用jmeter.bat启动会多启动一个cmd窗口,使用ApacheJMeter.jar启动可直接启动jmeter的GUI界面。
image.png
启动好后
image.png

如果起不开,可能是Java环境没有配好,将Java环境配置好即可,可参考第1章 Java 概述的1.6配置。

5. JMeter切换语言为中文

临时切换,点选项-》选择语言–》中文(简体)
image.png
永久切换:
找到jmeter目录下的bin目录,打开jmeter.properties文件,找到#language=en,将其改为language=zh_CN
image.png

6. Linux下安装启动

step1:下载Linux版本的安装包,可以通过上述方式下载好再传到Linux,也可以直接通过命令在线下载:
wget https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.1.tgz
step2:解压:tar -zxvf apache-jmeter-5.4.1.tgz
step3:配置环境变量:

export JMETER_HOME=/software/apache-jmeter-5.4.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin

让配置文件生效:source /etc/profile
step4:查看jmeter版本:jmeter -v
image.png
显示上图即代表安装成功

二、接口测试测试用例编写

:::info
常用快捷键:Ctrl+S(保存) Ctrl+E (清除结果树) Ctrl+R(运行-启动)
:::

三、编写一条简单Jmeter用例脚本

JMeter接口测试的操作依赖各种组件,最简单的接口模拟需要用到4个组件。

1、测试计划

打开JMeter后便默认存在一个测试计划

2、添加一个线程组

添加方法:测试计划 -> 右键 -> 添加 -> 线程 -> 线程组
image.png

3、添加配置元件: HTTP请求默认值

添加方法:线程组 -> 右键 -> 添加 -> 配置元件 -> HTTP请求默认值
image.png
作用:用于配置web服务器 协议类型、ip地址、端口号

4、添加监听器:查看结果树

添加方法:线程组 -> 右键 -> 添加 -> 监听器 -> 查看结果树
image.png
作用:用于查看用例执行结果
可以选择不同的方式查看结果:默认为Text,常用的如JSON, 如果在校验Json 表达式是否正确,则可用JSON Path Tester
可以将结果输出到一个文件中,如果没有事先创建文件,则会自动生成文件(C:\Users\Administrator\Desktop\result1.csv)

5、在线程组下 添加一个 http请求(添加一条测试用例)

添加方法:线程组 -> 右键 -> 添加 -> 取样器 -> http请求
image.png

6、修改HTTP请求名称为 用例标题,带上编号;并添加请求方法与路径

image.png

7、运行并查看结果(Ctrl+r)

image.png

变量的引用:${变量名}

四、其它常用元件

1、HTTP请求默认值

添加方法:线程组 -> 右键 -> 添加 -> 配置元件 -> HTTP请求默认值
image.png
作用:一般用于存放URL相关信息,当一个用例里有多个http请求,且请求的URL信息一样 的时候可以提取出来写到这里,方便管理。
image.png

2、HTTP信息头管理器

添加方法:http请求(用例) -> 右键 -> 添加 -> 配置元件 -> HTTP信息头管理器
image.png
作用:一般用于存放token信息(输入参数–头部校验参数)
image.png
例:

3、JSON提取器

添加方法:请求 -> 右键 -> 添加 -> 后置处理器 -> JSON 提取器
image.png
作用:用于提取响应信息的内容(常用于提取token、id等),与正则表达式提取器功能类似,注意:响应必须是JSON格式的才能用。
例:
image.pngimage.png
image.png

4、正则表达式提取器

添加方法:请求 -> 右键 -> 添加 -> 后置处理器 -> 正则表达式提取器

例:要提取的字符串如:
{“status”:200,“msg”:“success”,“token”:“b94d67f7fb554cf09c172ba8675aeec5”}
操作
image.png

  1. 先确定要从哪个文本字符串中提取哪一部分信息,然后确定要提取信息的左右边界,左右边界不能变化,且是唯一的,
  2. 将带左右边界的串拿出来 “,“token”:“b94d67f7fb554cf09c172ba8675aeec5”} 将要提取的信息用(.*)替换,替换之后的串就是我们要用的正则表达式:”,“token”:“(.*)”}
  3. 提取token:“token”:“(.*)”}
  4. 提取 200,sucess,token值:{“status”😦.),“msg”:"(.)“,“token”:”(.*)"}

image.png
变量具体的值根据$中间数字决定

5、调试取样器

添加方法:线程组 -> 右键 -> 添加 -> 取样器 -> 调试取样器
image.png
作用:显示某些变量的值,如JSON提取器里提取的值

6、添加断言

6.1 JSON断言

何时用:返回对象是JSON时
添加方法:请求 -> 右键 -> 添加 -> 断言 -> JSON断言
image.png
判断值存不存在时,
image.png
判断值相不相等时,
image.png

6.2 响应断言

何时用:使用范围更广
添加方法:请求 -> 右键 -> 断言 -> 响应断言

使用

模式匹配规则的异同点

包括与字符串

测试模式中的信息只要包含在实际结果中,测试通过

包括 支持正则表达式;字符串不支持正则表达式

匹配与相等

同:

测试模式中的信息要完全与实际结果一致,测试通过

异:

匹配支持正则表达式,相等不支持正则表达式((.*))

7、事务控制器

添加路径:请求 -> 右键 -> 插入上级 -> 逻辑控制器 -> 事务控制器
image.png
目的:可以使结构更清晰

8、JDBC Connection Configuration与JDBC Request

JDBC Connection Configuration:一般用来连接数据库
JDBC Request:根据连接好的库,校验用例信息在数据库中是否真实存在
当需要到数据库校验信息时,可以:
1、添加驱动,把2个驱动包放到 …\apache-jmeter-5.1.1\lib路径下,重新进入JMeter
2、添加配置元件:JDBC Connection Configuration
一般移动位置到线程组下方,具体用例(http请求)前

路径:线程组 -> 右键 -> 配置元件 -> JDBC Connection Configuration
image.png

练习用URL
jdbc:mysql://111.231.66.194:3307/test_project
例:
image.png

3、添加取样器:JDBC Request(JDBC 请求)
路径:线程组 -> 右键 -> 取样器 -> JDBC Request
image.png
查询语句,例:select * from userinfo where username = “${v_gename}”;
image.png
想要知道查询的结果对不对可以在JDBC 请求下加个断言。

9、循环控制器

添加方法:请求 -> 右键 -> 插入上级 -> 逻辑控制器 -> 循环控制器
image.png
作用:循环

例:

10、CSV数据文件设置(注意作用域)

image.png
场景:
假如现在我们要注册,我们希望将测试数据放在一个文件中,如csv文件,在jmeter 中执行注册请求时,能从csv文件中读取数据,再完成注册
操作
1、新建一个csv文件,用来存放测试数据,新建的时候,先建一个txt 文件,将其扩展名改为.csv,如register.csv
2、打开register.csv,在里面写入测试数据
3、添加一个请求
4、添加一个 csv数据文件设置元件,将register.csv关联进来
5、在请求中,引用变量的值
6、将请求和csv数据文件设置元件放在循环控制器中,并设置循环次数(注意循环次数不能大于 csv文件中的数据行数)
7、执行,查看结果

11、函数助手对话框

打开路径:Tools -> 函数助手对话框 -> 选择对应的函数 -> …

作用:可以使用函数生成一些语句,如随机数

以下是一些常用的 JMeter 内置函数介绍及使用示例:

  1. __time() - 获取当前时间:
${__time(yyyy-MM-dd HH:mm:ss,var1)}

这将返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS,并将当前时间存储到变量var1(可选)

  1. __timeShift 函数在 JMeter 中用于对时间进行偏移操作
语法:
${__timeShift(格式, 时间变量, 偏移量, [语言], [变量名])}
示例:
${__timeShift(yyyy/MM/dd HH:mm:ss,,P2DT-3H4M,,My_time)}

日期时间格式字符串:指定返回的日期时间的格式。如果不指定格式,则默认返回毫秒级的时间戳。建议的格式为:yyyy/MM/dd HH:mm:ss
日期时间:指定要进行偏移操作的原始日期时间。如果不指定日期时间,则默认使用当前时间。可以是具体的日期时间字符串,如 2023-08-09 10:00:00,也可以是其他能够表示日期时间的变量或表达式。
偏移量:指定从原始日期时间中添加或减去的时间量。偏移量可以包含天(D)、小时(H)、分钟(M)和秒(S)的组合。偏移量的格式遵循 ISO 8601 规范,例如:
P2D 表示 +2 天
PT10H 表示 +10 小时
PT30M 表示 +30 分钟
PT5S 表示 +5 秒
P2DT3H4M 表示+2 天 3 小时 4 分钟
PT-6H3M 或 -P6H3M 表示 - 6 小时并+ 3 分钟(注意负号的用法)
语言(可选):用于指定日期和时间的语言环境。默认情况下,使用的是默认的本地语言环境。
变量名(可选):指定一个变量名,用于存储 __timeShift 函数返回的结果。

  1. __intSum() - 计算两个或多个整数的和:
${__intSum(10,20)}

这将返回30。

  1. __Random() - 生成一个介于指定范围内的随机数:
${__Random(1,100)}

这将生成一个1到100之间的随机整数。

  1. __CSVRead() - 从CSV文件中读取值: --建议用csv数据文件设置元件来配置,功能一样
    假设你有一个名为data.csv的文件,内容如下:
username,password
user1,pwd1
user2,pwd2

在JMeter中,你可以这样引用这些值:

${__CSVRead(data.csv,0)} // 返回第一列的第一个值,即"user1"
${__CSVRead(data.csv,1)} // 返回第二列的第一个值,即"pwd1"

注意,列索引从0开始。

  1. __property() - 读取JMeter属性值:
${__property(user.timezone)}

这将返回JMeter属性user.timezone的值。

  1. __V() - 引用JMeter变量:
    假设你有一个名为myVar的JMeter变量,你可以这样引用它:
${__V(myVar)}
  1. __BeanShell() - 运行BeanShell脚本:
${__BeanShell(2+3)}

这将执行脚本2+3并返回结果5。

  1. __split() - 分割字符串:
${__split(MyString,, )}

这将分割变量MyString中的值,并存储在新的变量中。

  1. __eval() - 计算表达式的值:
${__eval(1+2*3)}

这将计算表达式1+2*3的值,并返回结果7。

  1. __digest() - 计算摘要:
${__digest(MD5,mySecretKey)}

这将计算字符串mySecretKey的MD5摘要。

  1. __char() - 返回与指定整数对应的unicode字符:
${__char(65)}

这将返回字符’A’,因为65是’A’的ASCII码。

  1. __unescape() - 对字符串进行URL解码:
${__unescape(%20Hello%20World)}

这将返回解码后的字符串Hello World

  1. __urlencode() - 对字符串进行URL编码:
${__urlencode(Hello World)}

这将返回编码后的字符串Hello%20World

  1. __UUID() - 生成一个UUID:
${__UUID()}

这将生成一个UUID字符串。

  1. __machineName() - 获取执行JMeter的机器名:
${__machineName()}

这将返回执行JMeter的机器名。

  1. __stringFromFile() - 从文件中读取字符串:
${__stringFromFile(myFile.txt)}

这将读取名为myFile.txt的文件内容。

  1. __P() - 读取JMeter属性值,如果属性不存在,则返回默认值:
${__P(myProperty,default)}

这将返回属性myProperty的值,如果该属性不存在,则返回字符串default
请注意,函数的使用可能需要根据上下文进行适当的修改,以确保它们在JMeter测试计划中正确地执行。

12、HTTP Cookie管理器

模拟浏览器的缓存信息
场景:在界面上测试时,如果登录成功(回话id会返回来放在cookie里,而cookie在浏览器缓存里存放),当你需要去查bug时,会在浏览器里找到鉴权信息,就可以直接去查看bug了但是 做接口测试时,每一个接口都是独立的,你调用一个登录接口,再调用一个查看bug的接口,如果不进行特殊处理,它们之间是没有任何关联的,后续操作就没法做
添加路径:线程组 -> 右键 -> 添加 -> 配置元件 -> HTTP Cookie管理器
image.png
使用:直接添加进来即可,一般放到线程组下方

作用:像Web浏览器一样存储和发送Cookie。如果您有HTTP请求并且响应包含cookie,则Cookie管理器会自动存储该cookie,并将其用于将来对该特定网站的所有请求。每个JMeter线程都有自己的“cookie存储区”

13、用户定义的变量

添加方法:线程组 -> 右键 -> 添加 -> 配置元件 -> 用户定义的变量
image.png
作用:用户自定义的变量,用于替换一些重复数据(如:登陆账号,密码等),便于后期维护

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值