首页 > 其他分享 >Jmeter使用文档(循环怎么用)

Jmeter使用文档(循环怎么用)

时间:2023-03-03 22:23:24浏览次数:41  
标签:控制器 CSV jmeter 定时器 循环 取样器 文档 Jmeter

Jmeter使用文档(循环怎么用)

基础用法

  • 修改语言
  • 打开日志
    • 启动后,右上角有个黄色的感叹号图标,点击即可打开即时日志
    • 如果没有看到重启下jmeter,部分操作(如临时修改语言)可能导致图标消失

界面模式

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
  • GUI模式:打开jmeter时,可以看到控制台打印了上面这段文字
    • GUI指客户端界面
    • 可以看到里面提示不要使用GUI进行测试
    • 只有在创建和调试的时候使用
  • CLI模式:即非GUI模式
    • jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
    • 新建一个文件夹,按住"shift",点击右键,可以看到"在此处打开Powershell窗口"
      • 将jmeter执行命令行输入窗口即可运行
      • 运行日志会在当前文件夹下自动生产一个jmeter.log,用于记录详细日志
参数 示例 说明
jmeter D:\apache-jmeter-5.5\bin\jmeter jmeter启动路径
-n -n 用CLI模式运行
-t -t D:\demo\abc.jmx 测试文件路径
-l -l D:\demo\adb.csv 执行结果记录,每一行是每个步骤执行汇总信息
-e -e -o的固定搭配
-o -o D:\demo\report\ 汇总报告目录,测试结束后会生成html报告,会自动创建目录
  • 示例
  • D:\apache-jmeter-5.5\bin\jmeter -n -t D:\demo\abc.jmx -l -l D:\demo\adb.csv -e -o D:\demo\report\

起步

创建的结构如下

* 测试计划
    * 线程组
        * 查看结果树
        * 汇总报告
        * 用户定义的变量
        * 循环控制器
            * 调试取样器
  • 打开Jmeter界面,按上面的结构创建流程
  • 创建线程组
    • 右键"测试计划" > "添加" > "线程(用户)" > "线程组"
  • 右键"线程组"可以看到菜单,下方列举一些通用的内容说明
  • 增加"查看结果树"
  • 增加"汇总报告"
  • 增加"用户定义的变量"
    • 界面里随意添加一些参数名称和值(如:name,LaoXu;age,30;)
  • 增加"循环控制器"
    • 循环次数设置为"3"
  • 右键"循环控制器",增加"调试取样器(Debug Sampler)"
  • 保存
  • 点击"查看结果树",打开结果界面
  • 点击菜单的绿色"播放"键
    • "查看结果树"界面中就能看到有3项记录了
    • 点击其中一项
      • 点击 "响应数据" > "Response Body"
      • 可以看到打印着刚刚设置在"用户定义变量"里的参数名称和值
// 右键"线程组"显示的菜单(节选)

* 添加
    * 取样器
        * HTTP请求                      // http测试
        * 调试取样器(Debug Sampler)      // 用于查看用户变量,调试循环控制器时很有用
        * BeanShell取样器               // BeanShell脚本,可以用于清理参数,复制等
        * ...其他插件取样器              // 其他插件可提供丰富的取样器
    * 逻辑控制器
        * IF控制器                      // 判断控制,如有未登录用户先调用登录接口进行登录
        * 事务控制器                    // 步骤比较多的情况下,可以分别放入事务控制器,这样就能展开缩放便于管理
        * 循环控制器                    // 循环
        * While控制器                  // 循环的一种,可以搭配"CSV文件"
        * ForEach控制器                // 循环的一种,可以搭配"用户定义变量"
    * 定时器
        * 固定定时器                     // 等待时长
    * 配置原件
        * 用户定义的变量                  // 用户自己设置的变量,在取样器中可以使用${xxx}方式替换(取样器需要支持,不是所有取样器都能用)
        * CSV Data Config              // CSV数据文件设置,可以与"While控制器"搭配使用
    * 监听器
        * 查看结果树                     // 查看取样器执行结果
        * 汇总报告                       // 汇总结果,如成功率、平均时长等

循环控制

  • 取样器"HTTP请求"中,很多地方可以使用${xxx}的方式替换参数
  • 下面讲解如何使用使用配置进行循环

用户定义变量 + ForEach控制器

创建的结构如下

* 测试计划
    * 线程组
        * 查看结果树
        * 汇总报告
        * 用户定义的变量
        * ForEach控制器
            * 调试取样器
  • 用户定义的变量
    • 添加几个变量,以"_x"结尾(从1开始,且需要连续)
    • 举例
      • user_id_1 , 10
      • user_id_2 , 20
  • ForEach控制器
    • 输入变量前缀:"user_id"
    • 输出变量名: "user"
  • 运行后可以结果如下方
    • 可以看出,取样器中取到了用户定义里的参数
    • 然后按顺序,获取到对应前缀的值,并复制到新的变量
* 调试取样器
    * user=10
    * user_id_1=10
    * user_id_2=20
* 调试取样器
    * user=20
    * user_id_1=10
    * user_id_2=20

CSV文件 + While循环

  • CSV设置较复杂,除非万不得已建议使用 [ 用户定义变量 + ForEach控制器 ] 的组合
  • 使用CSV会遇到几个问题
    • CSV读取由其他控制器控制
      • 网上大部分文章是将线程组循环次数设置得和CSV行数相同,这样就做不到再控制循环
      • 将CSV放在While控制器内部,这样就可以在While控制器外再套上其他循环
    • 文件结束符为"< EOF >"
      • 当"遇到文件结束符再次循环?"设置为"True"
        • 读取不到EOF,数据会一直循环
        • 在While控制器的条件中不能使用EOF作为判断条件
      • 当"遇到文件结束符再次循环?"设置为"False"
        • 同个线程同个CSV只能读取一次,只有无论怎么设置,读取到的都是EOF
      • 当"遇到文件结束符停止线程?"设置为"True"
        • 循环一次读取到结束符时,程序就停止了,后面的步骤就不能执行了
      • 循环结束后,循环的参数值不会自动清除
一个CSV读取单元结构如下

* BeanShell取样器
* While控制器
    * CSV数据文件设置
    * IF控制器
        * 调试取样器
  • BeanShell取样器
    • 清理使用到的参数值,避免参数被其他步骤设置过,影响进入While控制器
    • 参数值见下方CSV文件
vars.remove("id");
vars.remove("name");
vars.remove("age");
  • While控制器
    • 将添加在csv末尾的"end"作为自定义的结束符,作为判断条件
${__groovy("${id}"!="end")}
  • CSV数据文件设置
    • 文件名:文件路径,点击后面的"浏览..."选择csv文件
    • 文件编码:UTF-8
    • 变量名称:id,name,age
    • 忽略首行:True
      • 即忽略"id,name,age"这行,建议CSV文件里加上头,避免时间久了遗忘
    • 遇到文件结束符再次循环?:True
      • 这样就能嵌套其他循环,或者CSV反复读取
    • 遇到文件结束符停止线程?:False
id,name,age
1,张三,18
3,李四,33
5,王八,8
end
  • IF控制器
    • While循环器类似do...while循环,即先执行后判断
    • 最后一次循环时三个参数读取到的分别是end,EOF,EOF
    • 所以加上这个条件过滤,避免报错
${__groovy("${id}"!="end")}
  • 调试取样器

    • 进行打印,查看参数值
  • 这样就是一个完整的单元

    • 可以反复执行,或嵌套循环,如下所示
* 测试计划
    * 线程组
        * 查看结果树
        * 汇总报告
        * <CSV单元>     // 执行CSV
        * <CSV单元>     // 再次执行CSV不受影响
        * 循环控制器     // 循环n次依然可行
            * <csv单元>

经验

定时器

  • 定时器与顺序无关,同层级一定是定时器先执行
// 以下两种顺序,都是先执行定时,再执行取样器
* 固定定时器
* 调试取样器
---
* 调试取样器
* 固定定时器
  • 定时器会传播到下面的层级
// 所有调试取样器都要等待3秒后执行,因为定时器会传播

* 固定定时器(3秒)
* While控制器
    * 调试取样器
  • 多个定时器会叠加
// 等待6秒执行第1个,等待6秒执行第2个

* 固定定时器(3秒)
* 调试取样器
* 固定定时器(3秒)
* 调试取样器
  • 解决方案
    • 在定时器上层增加事务福安里奇
    • 在增加一个取样器,因为定时器不能单独存在,如果没有取样器会直接跳过
* 事务管理器
    * 固定定时器
    * 调试取样器    // 可替换成任意取样器,作用是使定时器生效

标签:控制器,CSV,jmeter,定时器,循环,取样器,文档,Jmeter
From: https://www.cnblogs.com/XuXiaoCong/p/17177217.html

相关文章

  • fileReader-注意循环返回的值-1-2023-3-3
    packageJavaSE.Lesson18;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;publicclassReaderDemo{publi......
  • fileReader-注意循环返回的值-2-2023-3-3
    packageJavaSE.Lesson18;importjava.io.FileReader;importjava.io.IOException;publicclassReaderDemo02{publicstaticvoidmain(String[]args){......
  • 05for循环
    for循环循环的作用与分类作用:让代码更加高效的重复运行分类:for循环和while循环for循环结构for临时变量in可迭代对象:重复执行的代码1重复执行的代码2...可......
  • kmp 与最小循环节
    题目:一个字符串的前缀是从第一个字符开始的连续若干个字符,例如abaab共有5个前缀,分别是a,ab,aba,abaa,abaab。我们希望知道一个N位字符串S的前缀是否具有循环节。......
  • 易优cms api中apiArclist 自由文档列表列表使用方法
    apiArclist自由文档列表 [基础用法]名称:apiArclist功能:获取系统主从表模型(如:文章、软件、图集、产品等)的一列文档,也称自由列表块标记。语法:参数:typeid=''栏目ID,在列表模......
  • jmeter与数据库的操作
    在进行接口测试时,数据库查询是常用的一种判断方式,用来确定数据操作是否成功。除了这种场景,数据库里面的数据也是非常好的测试数据,比如作为请求的测试数据输入,那使用jmeter......
  • jmeter工具常见问题
    ​问题一:jmeterTCP请求报文中中文乱码显示解决方法:修改jmeter的bin目录下的jmeter.properties文件中的sampleresult.default.encoding=UTF-8,然后把#去掉,重启jmeter就可以了......
  • 重要内置函数、常见内置函数(了解)、可迭代对象、迭代器对象、for循环原理、异常捕获
    目录一、重要内置函数二、常见内置函数(了解)三、可迭代对象四、迭代器对象五、for循环内部原理六、捕捉异常一、重要内置函数1.zip说白了就是压缩几组数据值,说细了......
  • # shader——无限循环背景的制作
    制作前准备需求要求UI中的一张图片需要无限制的斜向移动。图片设置准备开始制作首先我们需要一个mainTexture的参数和调节速度的参数,所以我们在Properties块中......
  • 如何通过Java 代码设置 Word 文档页边距
    页边距是指页面的边线到文字的距离。通常可在页边距内部的可打印区域中插入文字和图形,也可以将某些项目放置在页边距区域中(如页眉、页脚和页码等)。在我们用的Word文档中,都会......