首页 > 其他分享 >jmeter常用操作

jmeter常用操作

时间:2022-11-24 10:13:28浏览次数:39  
标签:文件 常用 提取 token 添加 操作 jmeter networks

  jmeter常用操作

  1. jmeter文件

 
  1. jmeter数据库驱动配置

暂时无法在文档外展示此内容
  1. 需要下载mysql驱动:mysql-connector-java-8.0.11.jar,(注意要与数据库mysql版本对应)
  2. 解压,把mysql-connector-java-8.0.11.jar包放到jmeter,bin目录下
  3. 创建测试计划,选择mysql数据库驱动,如图
  1. 添加线程组,根据业务场景添加不同线程组,需要先添加JDBC Connection Configuration,在配置元件中,添加驱动下载数据库驱动插件放到lib\ext目录下
    1. 暂时无法在文档外展示此内容
    2. 添加后重启查看如图:
  1. JDBC Connection Configuration中配置内容如图:
  1. 添加JDBC Request
  1. 配置JDBC Request
  1. 添加监听器,注意:执行sql语句时报错时(这是兼容性,如果不报错可以不加下面这句)
    1. 需要在JDBC Connection Configuration,中的Database URL,数据库连接后增加?serverTimezone=UTC
  1. 解决查询字段不显示问题,添加“?useUnicode=true&characterEncoding=UTF-8”
  1. 压测配置

    1. 添加插件到lib\ext目录下(阶梯性负载增压)暂时无法在文档外展示此内容
    2. 添加测试计划,添加线程组jp@gc - Stepping Thread Group
  1. 线程组配置说明
  1. 增加监听器
jp@gc - Transactions per Second jp@gc - Hits per Second jp@gc - Response Times Over Time
  1. 常见问题
    1. 压测上不去,接口报Address already in use:connect
  1. 需要执行机regedit中添加注册表项MaxUserPort
  2. 打开注册表:win+r 输入regedit
  3. 进入注册表,路径为:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  4. 新建DWORD值,(十进制)设置为30秒。名称:TcpTimedWaitDe,值:30
  5. 新建DWORD值,(十进制)最大连接数65534。名称:MaxUserPort,值:65534
  6. 然后重启电脑
  1. 参数提取及使用方式

    1. 使用用户定义变量
      1. 该方式为固定传参,统一将变量放到用户定义变量中好进行维护,在登录或者固定操作某条数据时
      2. 添加,线程组或者计划上(作用域不同),配置元件,用户自定义变量
  1. 添加变量名称和变量值,变量名称自定义,在之后接口通过${变量名}进行调用变量创建
  1. 变量使用
  1. 正则提取接口返回值
    1. 正则提取接口返回值存入到变量,之后的接口调用使用该变量
    2. 添加,在取样器HTTP请求上进行右键添加后置处理器,选择正则表达式提取器
  1. 添加提取器名称(随意,自己看明白就行),选择Main sample only,选择要提取的哪里的内容,是响应体还是响应信息头里的
  2. 例如登录要提取响应信息头的token,就选择信息头,引用名称(变量名称,自己定义)
  3. 响应信息头
  1. 响应体
  1. 正则表达式:token=(.+?);
    1. (.+?)这个代表我要获取的值,前后是我要获取的值在哪个位置
    2. 举例:要取响应信息头里的token值,我们查看响应数据.token=a413e2ec2ad0413483c56f550ff03945;
    3. 我们想要a413e2ec2ad0413483c56f550ff03945这个,它的前面显示为token= 后面显示为;
    4. 我们要获取它俩中间的token值,正则就写成:token=(.+?);
  1. 模板默认填写:$1$
    1. 多个返回值时匹配哪一个:1(0是随机)
    2. 缺省值(如果没有传什么,可以是null可以选择使用空为默认值,随意)
    3. 使用依然是${引用名称}
  1. json提取器
    1. 添加
  1. 添加,同样变量名、json提取路径、匹配第几个、缺省值
  1. 例如jsonp提取路径:.result[0].productionTeam[0].orderDemandId
  2. 初始路径下第一个result下的第一个productionTeam下的orderDemandId值
  3. .当前路径的意思
 
  1. 使用方法一样${}
  2. jsonpath可以通过察看结果树里,返回值显示方式json path tester进行提取测试, 建议使用正则提取,比较方便
 
  1. 断言使用

    1. json断言
      1. 主要是json提取表达式填写内容要正确,要做对比的内容用[]括起来
      2. Expected value 是填写断言内容,要注意冒号之间不要有空格
  1. jmeter下载上传接口调用方式

暂时无法在文档外展示此内容 因为jmeter下载文件接口不会保存文件,需要用beansheel取样器
  • 下载文件接口
因为php有个下载文件有个文件防盗链代码,调用下载接口时不会下载,需要将返回值再调用一下
  • 提取返回值
  • 再次调用
  • 通过beanshell取样器保存文件
  • beanshell代码
import java.io.*;
//获取上个请求的返回数据
byte[] result = prev.getResponseData();
//要下载到什么地方
String file_name = "D:\\file\\1.xlsx";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
  • 修改下载的excel文件
保存完文件,需要更改文件,通过python脚本进行更改 python脚本文件:注意修改文件位置,workbook对应的文件位置为刚才下载的文件位置, workbook.save对应的文件位置为修改excel后重新生成文件保存的位置 暂时无法在文档外展示此内容 jmeter执行python脚本,通过beanshell取样器调用python脚本 beanshell代码如下:
import java.io.BufferedReader; import java.io.InputStreamReader;   // 1. 命令里的路径改成自己脚本的路径 String command = "cmd /c python D://pythonProject//pythonProject//pytestone//updatefile.py ";   String var; Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(command);   pr.waitFor();   BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line = ""; StringBuilder response = new StringBuilder(); while ((line = b.readLine()) != null) { response.append(line);   } String response_data = response.toString();   System.out.println(response_data); b.close();   var = response.toString();
jemter上传文件  
  1. beanshell转换数据类型

json提取列表的所有值,转换为[string]类型 BeanShell 后置处理程序,传参为json提取的的名称 log.info("all_networks数量为" + ${all_networks_matchNr}); int num = ${all_networks_matchNr}; log.info("num:" + num); String all_networks = ""; //循环添加字符串 for(i=1;i<=num;i++){ String gift_all_networks = vars.get("all_networks_" + i); // log.info("all_networks为:" + vars.get("all_networks_" + i)); log.info(all_networks += "'"); log.info(all_networks += gift_all_networks + "',"); } //去掉字符串最后一个逗号 all_networks = all_networks.substring(0, all_networks.length() - 1); log.info("all_networks为:" + all_networks); //将id保存为参数 vars.put("all_networks", all_networks );  

标签:文件,常用,提取,token,添加,操作,jmeter,networks
From: https://www.cnblogs.com/nishengqin/p/16920958.html

相关文章

  • Go 的位操作
    在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑客范的位运算方式去处理信息是首选方式(某些情况下只能如此)。时至今日,直接使用位运算仍然是很多计算领域中不可或缺的......
  • python 操作Oracle 自关联表进行树结构复制算法
     最近一个项目中,用关系型表来存储树型结构,其中有一段树节点复制的算法,典型的递归运用,可作为递归算法参考练习。defCheckItem_GET_ById(self,dataid):"""......
  • Mongo 常用命令
    1.登入dockerexec-it mongomongo 数据库db.auth("账号","密码")dockerexec-it mongo mongo ip:port -u账号-p密码--authenticationDatabase......
  • 基础-字符串操作
    “理论上,理论和实践没有区别。但实践上,是有区别的。”       ——简.范德斯乃普特1、三引号字符串:如果字符串跨行,可以使用三引号。2、索引:字符串是可以迭......
  • redis通过lua脚本------实现原子性操作(PHP代码实现)
    背景一直都知道redis里可以执行lua脚本,但是以前一直搞不懂redis为啥要这么搞,今天看了人家一篇博文,说秒杀场景出现商品超卖,解决方案是利用lua脚本来保证操作的原子性自己......
  • js013-js分离的DOM操作
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><tableborder="1"><thead><tr>......
  • C++ 嵌入式实时操作系统调试心得
    1、如果设置了全局vector变量,然后在程序中一直pushback,如果是系统内存较小,运行一段时间后可能会崩溃;2、如果使用C语言编程采用动态内存,一定要在变量生存周期结束时对内存......
  • Java工具库Guava的数学运算常用方法示例代码
    场景Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127683387为什么使用Gu......
  • git 操作(自用)
    git操作gitinitgitremoteaddoriginhttps://#.gitgitpulloriginfillcourse--allow-unrelated-historiesgitadd-Agitcommit-m"init"gitbr......
  • 【转载】Java List对象集合按对象属性分组、分组汇总、过滤等操作示例
    importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors; publicclassTest{   publicstaticvoidmain(St......