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

相关推荐
余防21 小时前
jmeter使用
jmeter
maqiang_7201 天前
jmeter做压力测试如何找到软件瓶颈
jmeter·压力测试
少云清2 天前
【软件测试】1_性能测试实战 _商城项目介绍
jmeter·性能测试
少云清2 天前
【软件测试】8_性能测试实战 _执行测试脚本
jmeter·性能测试·测试脚本执行
卓码软件测评2 天前
【第三方高校课题软件确认测试:LoadRunner与JMeter-企业级性能测试工具选型深度对比】
测试工具·jmeter·性能优化·单元测试·测试用例
AC赳赳老秦2 天前
R语言数据分析:DeepSeek辅助生成统计建模代码与可视化图表
开发语言·人工智能·jmeter·数据挖掘·数据分析·r语言·deepseek
老友@2 天前
JMeter 在 Linux 环境下进行生产级性能压测的完整实战指南
java·linux·jmeter·性能优化·系统架构·压测·性能瓶颈
老友@2 天前
JMeter 压力测试完全指南(中文界面版,超详细小白版)
jmeter·压力测试