Jmeter的基本使用

1. Jemter的下载和启动

下载网址: https://jmeter.apache.org/download_jmeter.cgi

解压使用:

  1. 打开bin下面的jmeter.properties中配置。修改sampleresult.default.encoding的值为UTF-8

sampleresult.default.encoding=UTF-8

  1. 双击 jmeter.bat 启动
  1. 如果界面是英文,可以调整成中文

2. 开始使用

  1. 测试计划--右键--线程--添加线程组
  1. 线程组--右键--取样器--http请求

这里以请求百度为例,内容根据需要填上对应的值

  1. 点中测试计划--右键--添加监听器--查看结果树
  1. 点中查看结果树,运行。

如果接口返回json格式化结果那里可以选择json

  1. 将测试计划保存下来,方便下次使用

3. 相关概念理解

  1. 测试计划 测试计划可以看做一个项目
  2. **线程组:**项目下面有多个模块(线程组)
  3. **http请求:**模块下面有好多接口(http请求)
  4. **查看结果树:**查看结果树就是接口返回的结果

4. 查看结果树的额外说明

  1. 点中Http请求,ctrl+c。 再点中线程组 ctrl+v,复制一个Http请求(改个名字改成Http请求2)
  1. 点中线程组,ctrl+c 。再点中执行计划 ctrl+v,复制出一个线程组2
  1. 现在 查看结果树,线程组,线程组2平级。都是在测试计划下面。

选中查看结果树点击运行按钮。我们可以看到四个请求全部发送

  1. 把查看结果数拖到线程组内,再次点击运行,只会查看当前线程组内的请求结果

5. 并发和顺序执行

并发执行:多个线程组同时执行(默认情况)

可以看出不同线程组下面是没有顺序的。

顺序执行: 多个线程组顺序执行

在测试计划下勾上独立运行每个线程组

再次运行就能看到请求是有顺序的

5. 优先和最后执行的线程组

点击测试计划新增两个线程组

然后执行

可以看出setUp 线程组的优先级比较高会先执行。

tearDown 线程组的优先级比较低会最后执行。

疑问:如果有两个setUp或者两个tearDown哪个优先级高?

结论:哪个线程组在上面,哪个就是爸爸。优先级高

6. 线程组常用的属性

7. HTTP请求默认值

对于多个接口url而言,可能就是请求路径部分不同。而请求协议,请求的服务器名或ip,端口都一样。这样我就可以吧共同的部分抽取出来。在jmeter中http请求默认值可能做到这一点。

  1. 新增一个Http请求默认值
  1. 把共同的部分抽取出来
  1. http请求中只要写路径

8. HTTP信息头管理器

对于一些新增或者修改接口。我们需要提交一些json数据,如果没添加请求头可能会报一些错误。

如下:新增一个用户,接口报错

这时我们需要用http信息头管理器添加请求头解决

9. 参数化

1. 用户定义的变量

新增一个addUser的变量。值为接口路径(/user)

在请求中引用变量即可

2. csv批量操作

假设我想新增多个user,我们可以用csv进行批量添加。

  1. 我们先用Excel写好三个用户并另存为csv文件。
  1. 新增csv数据文件设置
  1. 我们的csv中有两列。我们在变量名称那一行定义好变量名用英文逗号分割

变量名name,age对应csv中的姓名和年龄

  1. 在请求中引用name和age变量
  1. 选中查看结果树,点击运行

我们发现只是新增了一个。还有的数据没有新增。是因为我们还需要做一项设置,把线程组的永远勾上。就会循环添加所有用户了。

  1. 再次运行

3. 用户参数

  1. 在请求上添加用户参数
  1. 添加两个用户
  1. 点击线程组,把线程数调整为2,因为我们这里模拟的是两个用户操作
  1. 点击查看结果树,运行

4. 计数器函数

  1. 我们定义一个请求百度的http请求,并给线程组设置如下
  1. 执行后我们可以看到发送了6次请求 (2 * 3 )
  1. 这时我们想统计总共发了几次请求。就需要加一个计数器函数
  1. 使用复制的变量
  1. 可以看到有2个用户。每个用户单独统计
  1. 如果把变量中的true改成false 则每个请求都会计数一次,可以看到一共发送了6个请求

5. 随机数函数

  1. 复制出一个请求。然后将禁用上一个计数器函数的请求
  1. 选择随机数函数
  1. 在参数位置使用随机函数可以生成随机数
  1. 运行结果

6. 时间函数

  1. 再复制一个请求,禁用调其他两个
  1. 选择time函数
  1. 运行可以看到每个请求后面都带了时间,
  1. 当然我们也可以用这个放在请求参数的位置,来作为请求参数,这里就不演示了

10.JDBC请求

我们可以创建一个jdbc请求来查询数据库

  1. 在测试计划里面设置我们的mysql驱动包
  1. 添加jdbc配置元件
  1. 配置如下:起个名字和配置一下连接信息
  1. 在线程组下面添加一个Jdbc请求
  1. 执行可以看到结果
  1. 再新建一个调式取样器
  1. 再次执行,我们就能看到之前的userName变量的用处了
  1. 我们可以拿到上一步的userName_xxx变量,请求百度搜索

11. 断言

1. 响应断言

用来判断响应内容和响应状态码

  1. 对请求添加一个响应断言
  1. 对断言进行设置
  1. 由于响应体里面包含张三所有没有报错
  1. 我们改一下条件让响应体里面包含李四,再次执行,可以看到断言失败

对于其他的响应类型可以自行尝试

2. 大小断言

判断响应内容的字节长度

  1. 新增一个大小断言

3. 断言持续时间

判断响应时间

  1. 新增断言持续时间
  1. 执行报错,因为接口超过了1ms

12.参考

参考视频:https://www.bilibili.com/video/BV1ty4y1q72g

相关推荐
装不满的克莱因瓶2 天前
Java高并发异步请求实战,Jmeter暴力压测下的解决方案
jmeter·线程池·多线程·并发·resttemplate·qps·压测
在坚持一下我可没意见8 天前
ideaPool论坛系统测试报告
java·spring boot·功能测试·selenium·jmeter·mybatis·压力测试
linweidong10 天前
别让老板等:千人并发下的实时大屏极致性能优化实录
jmeter·clickhouse·性能优化·sentinel·doris·物化视图·离线数仓
CesareCheung11 天前
JMeter核心组件使用方法及场景大全
jmeter
我会一直在的12 天前
Jmeter的基础使用
功能测试·jmeter·压力测试
choke23312 天前
软件性能测试实战:从基础概念到 JMeter 全组件使用
jmeter
网络安全-杰克13 天前
Jmeter压力测试工具安装与使用
自动化测试·软件测试·测试工具·jmeter·职场和发展
少云清15 天前
【金融项目实战】6_接口测试 _Jmeter自动化脚本实现(重点)
jmeter·自动化·金融项目实战
少云清15 天前
【金融项目实战】5_接口测试 _Jmeter功能脚本实现
jmeter·金融项目实战
卖个几把萌16 天前
【11】JMeter在GUI页面修改语言后右上角不显示线程数和持续时间问题解决
测试工具·jmeter