jmeter使用教程

一、下载安装jmeter

参考:jmeter下载安装

二、线程组

image

image

  1. 第一部分
    在取样器错误后要执行的动作
    取样器就相当于是postman发送请求接口,当接口请求失败时,要执行的动作:
  • 继续:继续执行接下来的操作
  • 启动下一进程循环:忽略错误,执行下一个循环
  • 停止线程:退出当前线程,不再执行此线程的任务操作
  • 停止测试:等待当前执行的采样器结束,接着结束整个测试
  • 立即停止测试:直接停止整个测试
  1. 第二部分
  • 线程数:即模拟用户数量
  • Ramp-Up时间(秒):达到指定线程数所需要的时间。比如线程数为100,此处为5秒,100/5=20,那么相当于每秒启动20个线程,用时5秒达到100
  • 循环次数:要循环的次数,如果勾选“永远”,会一直循环下去
  • Same user on each iteration:表示每个迭代都用相同的线程。比如线程数为1,循环次数为5,那么创建好1个线程后,每次循环迭代都用这个线程,直到测试结束。如果不勾选,那么每次循环会销毁之前的线程,再创建1个新的线程,测试结束总共会经过5次创建销毁线程,浪费了计算机资源,线程多了甚至可能会影响性能测试结果,所以默认是勾选的。再比如这1个线程中有登录操作,加入cookie后,这个线程5次迭代下来用的都是这一个cookie
  1. 第三部分
  • 延迟创建线程直到需要:勾选,当线程需要执行的时候才会被创建,如果不勾选,在计划开始的时候,所有的线程就都创建好了
  • 调度器
    持续时间(秒),表示多少秒后,结束测试
    启动延迟(秒):表示点击开始执行计划后,延迟多少秒,才真正开始执行

三、线程组添加组件介绍

image

  • 取样器
    发送接口请求,类似于代码中requests封装的请求接口方法。
  • 逻辑控制器
    控制语句的执行顺序。
  • 前置处理器
    在取样器发送接口请求之前,需要执行的操作,比如删除数据,恢复数据,生成数据等。
  • 后置处理器
    在取样器发送接口请求之后,需要执行的操作,比如恢复数据,或处理响应数据,提取需要的值等。
  • 断言
    判断是否返回了预期的结果。
  • 定时器
    一般用来延时发送接口请求,类似于代码中的强制等待sleep。
  • 测试片段
    相当于封装一段代码,供其他脚本使用。
  • 配置元件
    用于初始化变量,以便采样器使用。类似于自动化框架中的配置文件。
  • 监听器
    展示执行结果,打印日志信息等。

四、线程组组件的执行顺序与接口自动化对比

jmeter组件 接口自动化
配置元件 读取配置文件
前置处理器 setup等前置操作
取样器 发送接口请求
后置处理器 提取接口响应信息
断言 断言
监听器 控制台或日志查看

五、jmeter脚本录制

  • 录制原理:浏览器本来是直接和web服务器建立连接的,jmeter录制时,是在浏览器和web服务器之间建立jmeter代理服务器,并生成本地CA证书,来欺骗浏览器,让浏览器将jmeter代理服务器认为是web服务器,从而发送请求。然后jmeter拦截并本地记录来自浏览器的请求,再发送给web浏览器,接收过程同理。

  • 测试计划->添加->非测试元件->HTTP代理服务器
    image

  • 配置HTTP代理服务器
    端口号随意,不冲突即可
    目标控制器,即抓取的接口保存的位置
    image

  • 配置接口过滤,正则表达式
    以访问百度为例
    接口中需要包含的内容:.*www\.baidu\.com.*
    接口中需要排除的内容:.*\.(js|css|PNG|jpg|ico|png|gif|jpeg|JPEG).*
    image

  • 打开浏览器配置,以火狐浏览器为例
    在设置中找到代理

    手动配置代理,和jmeter设置的一样

  • 启动
    点击启动后,会提示创建了CA证书,这个证书在bin目录下,文件名是ApacheJMeterTemporaryRootCA.crt
    这个证书被用来转发HTTPS请求。同时还生成了jmeter的根证书,文件名是proxyserver.jks
    image

  • 在火狐浏览器上访问百度
    会弹出如下安全提示,所以应该在浏览器中安装刚才jmeter生成的证书

    添加证书


    信任证书,确定即可

  • 访问百度,停止脚本录制,查看jmeter线程组中录制的接口
    可以看到,jmeter记录了7个通过正则表达式筛选的接口
    image
    我们可以在网页上F12对比下,可以看到,刷新百度,产生了65个请求

    再来找一找jmeter记录了7个请求在哪里

    最上面的两个接口之正则匹配到了消息头中有www.baidu.com,所以也被筛选到

六、jmeter脚本执行

  • 准备执行接口
    上面录制了7个接口,留下几个测试用,可以重命名一下
    image

  • 添加监听器,查看结果树
    image
    线程组选择3,点击启动,启动之前先保存脚本文件
    image
    查看结果树,3个接口被循环请求了3次
    image
    可以查看每个接口的详细信息,所以结果树常用于调试接口

  • 添加监听器,聚合报告
    image
    leabel:接口的名称
    样本:请求数量
    平均值:请求的平均响应时间,单位是毫秒
    中位数:按大小顺序排列起来,形成一个数列,处于数列中间位置的值
    90%百分位:90%的请求其响应时间不超过这个值
    95%百分位:95%的请求其响应时间不超过这个值
    99%百分位: 99%的请求其响应时间不超过这个值
    最小值:请求的最小响应时间
    最大值:请求的最大响应时间
    异常%:接口异常百分比
    吞吐量:每秒取样器执行的数量,相当于 TPS
    接收KB/sec:每秒接收的KB
    发送KB/sec:每秒发送的KB

  • 脚本分组
    在HTTP代理服务器里,有分组选择,默认为不分组。
    image

选项 描述
不对样本分组 每个请求都会单独统计 TPS 和响应时间信息
在组间添加分隔 作用只有一个:为了好看
每个组放一个新的控制器 作用只有一个:为了好看
只存储每个组的第一个样本 只存储每次录制请求的第一个接口
将每个组放入一个新的事物控制器中
  1. 在组间添加分隔
    image
  2. 每个组放一个新的控制器
    image
    这两种分组方法都是插入的简单控制器
    image
  3. 只存储每个组的第一个样本
    只存储每次录制请求的第一个接口
    image
  4. 将每个组放入一个新的事物控制器中
    image
posted @ 2023-12-29 12:04  努力工作,早日退休  阅读(13318)  评论(0编辑  收藏  举报