zoukankan      html  css  js  c++  java
  • 性能测试学习第六天-----JMeter拓展应用

    一、TCP取样器

      服务器名称或IP:填写socket接口的ip
      端口号:写socket接口的端口号
      Re-use connection:是否重用链接,如果选择,同一个线程执行的所有请求都会使用一个tcp连接
      Re-use connection+close connection:每个请求结束后关闭连接
      End of line byte value:socket接口返回的数据结尾标识符的ascii码
      要发送的文本:发送的数据

       

    二、定时器

         Jmeter中的定时器类似于loadrunner中的pacing值和think_time

      1)定时器是在每个sampler(采样器)之前执行的,而不是之后
      2)定时器是有作用域的;当执行一个sampler之前时,所有当前作用域内的定时器都会被执行。且所有的sampler执行前都会执行定时器
      3)如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入
      常用的定时器
      1,固定定时器:设置一个固定的延迟时间,单位ms
      2,同步定时器(synchronizing timer):在该定时器处,使线程等待,一直到指定的线程个数达到后,再一起释放。可以在瞬间制造出很大的压力。它和loadrunner的集合点差不多的功能
      3、常量控制器:可以控制每分钟tps的总量,限制最高

    三、Jmeter常用的BeanShell:   https://www.cnblogs.com/qmfsun/p/5945302.html

      ◼ 前置处理器:BeanShell PreProcesser   预处理请求参数,例如参数之间有关联,参数a为奇数时,b=5;参数a为偶数时,b=10,如图。又例如:提前生成测试账号

      ◼ 采样器:BeanShell Sampler

      ◼ 后置处理器:BeanShell PostProcesser

      ◼ 断言:BeanShell断言

           1.获取内置变量---beanshell脚本中不用定义,可以直接使用的变量,常用的内置变量和方法如下 添加

        log:写日志到控制台和jmeter.log,如log.info(“xxxxx”);

        vars:操作jmeter变量

          vars.get(“ip”);             从jmeter中获取${skuId}变量的值

          vars.put(“name”,”test”);       将”test”保存到${name}变量中,可以用于新增变量,修改变量

        prev:获取前面sampler返回的信息

          getResponseDataAsString():       获取响应信息

          getResponseCode():          获取响应code

                    

      但是不能在脚本中直接引用自定义变量,例如 String i=“1”; String sku=“${__Random(i,100,mysku)}”   ,直接引用脚本中自定义的 i 会报错。 

      2.打印日志、新增或修改参数

           

      3. 引用外部java文件,步骤:  

        //引用外部java文件
        source("D:/md5/Md5Util.java");
        //获取出原来的p_opt参数
        String str_opt = vars.get("p_opt");
        //调用Md5Util类中的getMd5Hex方法,将str_opt加密
        String md5_opt = Md5Util.getMd5Hex(str_opt);
        //将加密后的参数重新保存为一个mdt_opt参数,并放到vars中
        vars.put("md5_opt",md5_opt);

                

      4.引入外部jar包,步骤:

        1.“测试计划”里,Add directory or jar to classpath
        2.import 所需要的类名
        //导入类名
        import com.lee.util.Md5Util;
        //获取出原来的p_opt参数
        String str_opt = vars.get("p_opt");
        //调用Md5Util类中的getMd5Hex方法,将str_opt加密
        String md5_opt = Md5Util.getMd5Hex(str_opt);
        //将加密后的参数重新保存为一个mdt_opt参数,并放到vars中
        vars.put("md5_opt",md5_opt);

      5.bealshell断言 

        内置变量
        Failure:是否失败,boolean类型
        FailureMessage:失败日志,在断言失败时显示
        例:
        int stock = Integer.parseInt(vars.get("p_stock"));
        if (stock > 1500){
          Failure = true;
          FailureMessage = "库存数量超过了1500";
          // ResponseData是服务器返回的byte[]类型的数据,如果想打印,必须转换为String类型的,用new String(ResponseData)
          log.info(new String(ResponseData));
          //打印当前请求的url, SamplerData是String类型的数据
          log.info(SamplerData);
          }

                       

    四、java请求,例如jdbc连接数据库批量插入数据,步骤:

      1.先使用eclipse新建java工程;

      2.新建文件夹lib,拖入jmeter中的四个jar包:ApacheJMeter_core.jar、ApacheJMeter_java.jar、slf4j-api-1.7.25.jar、jorphan.jar,分别在E:apache-jmeter-5.1.1libext和E:apache-jmeter-5.1.1lib目录下;

      3.将mysql-connector-java-5.1.22-bin.jar也一并粘贴至lib文件夹下,选中这五个jar包,右键build in path;

      4.新建package,在package下新建类,注意新建类时需添加interface,搜索输入JavaSamplerClient,添加后,点击完成,即可看到类文件下已经生成了格式代码;

             

      5. 编写脚本,从之前为loadrunner写的jdbc连接数据库执行脚本中复制内容:setup中粘贴数据库连接等操作,teardown中粘贴关闭数据库连接操作,runtest中粘贴字符串替换 以及sql执行操作;导包和全局变量一并粘贴到前面,根据错误提示,增加try{}catch{}异常处理机制,增加main中传参。运行调试无误后,在public Arguments getDefaultParameters() 中增加与jmeter可识别交互的参数名称 并返回。

      6.脚本完成后,在eclipse中选中工程名称,右键,选择export-runnable java file, jar包和依赖包文件,注意下面选项:

           

      7.将导出的jar包和依赖包文件移动到 jmeter中libext下,重启jmeter;

      8.新建java请求,在类名称处就可以看到自己写的类名了,选择后,设置在getDefaultParameters() 中的变量就会识别出来,可以再当作Jmeter参数进行处理了。

          

     五、JMeter图形化可视报告插件应用

      使用Jmeter插件可以扩展Jmeter的功能

      插件官网: http://jmeter-plugins.org/downloads/all

      使用Jmeter插件管理器,可以自动下载并安装插件,更加方便简单

      使用方法:

      1,下载插件管理器对应的jar包,然后放在Jmeter的lib/ext目录下

      2,打开Jmeter,选项-插件管理器

      3,勾选对应的插件,等待下载完成,点击apply,等待重启Jmeter,即可使用

      4,添加tps监听器:事务控制器→添加→监听器 →jp@gc – Transaction per Second;

      5,添加tps监听器:事务控制器→添加→监听器 →jp@gc – Transaction per Second

      几个好用的插件:

        1> 3 Basic Graph:windows下可用的实时tps和响应时间的插件

        2> Custom JMeter Functions

        3> Random CSV Data Set Config

        4> PerfMon :服务端性能实时监控插件

     

  • 相关阅读:
    k8s学习
    k8s学习
    k8s学习
    Linux 常用命令(持续补充)
    通过一个小故事,理解 HTTPS 工作原理
    Spring Cloud 微服务架构全链路实践
    Spring Cloud Eureka 使用 IP 地址进行服务注册
    RabbitMQ 消息顺序、消息幂等、消息重复、消息事务、集群
    Spring Boot 实现 RabbitMQ 延迟消费和延迟重试队列
    RabbitMQ 集群原理和完善
  • 原文地址:https://www.cnblogs.com/qingyuu/p/11364610.html
Copyright © 2011-2022 走看看