一、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.1\lib\ext和E:\apache-jmeter-5.1.1\lib目录下;

  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中lib\ext\下,重启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 :服务端性能实时监控插件

 

性能测试学习第六天-----JMeter拓展应用的更多相关文章

  1. 性能测试学习第六天_loadrunner录制的一些问题

    1.录制脚本的两种查看方式(脚本查看和树查看) 2.录制选项 在vugen界面点击开始录制,如下图,点击选项,即进入录制选项界面 重点讨论录制选项下 基于HTML的脚本和基于URL的脚本 注:菜单栏图 ...

  2. 性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)

    性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 1 性能测试技能树 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质 ...

  3. 性能测试分享:Jmeter的api监控工具解决方案

    性能测试分享:Jmeter的api监控工具解决方案 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...

  4. 性能测试分享:jmeter性能监控(一)

    性能测试分享:jmeter性能监控(一) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908 ...

  5. 性能测试分享: Jmeter的源码分析main函数参数

    性能测试分享: Jmeter的源码分析main函数参数   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大 ...

  6. 性能测试分享:Jmeter多机协作原理

    性能测试分享:Jmeter多机协作原理   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...

  7. 学习使用Jmeter做压力测试(一)--压力测试基本概念

    学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...

  8. (转)学习使用Jmeter做压力测试(一)--压力测试基本概念

    一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测试,两者可以结合进行. 通过负载测试,确定在各种工作负载下 ...

  9. 性能测试学习之三—— PV->TPS转换模型&TPS波动模型

    PV->TPS转换模型 由上一篇“性能测试学习之二 ——性能测试模型(PV计算模型)“ 得知 TPS = ( (80%*总PV)/(24*60*60*(T/24)))/服务器数量 转换需要注意: ...

随机推荐

  1. 使用MyBatis在控制台动态打印执行的sql语句

    使用MyBatis进行数据库操作的时候,sql语句都是写在相应的mapper文件中,参数也是使用占位符取值表示的,mapper文件中看不到实时执行的完整sql,有时候sql语句错误或者参数类型不对的时 ...

  2. 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息

    电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...

  3. Codeforces比赛注意事项(英语比较好,能翻译题目的可以跳过此文章)

    由题目可知,这篇文章是讲翻译文章的. 当然不是教英语啦 其实cf的比赛对于本蒟蒻最大的挑战就是翻译题目啦 所以我比赛时只能靠各种翻译器去无耻地翻译,然后读中文. 目前较好的翻译器有:百度,谷歌,有道. ...

  4. PHP Composer安装使用

    1.安装composer curl -sS https:\\getcomposer.org/install | php 如果出现这样的提示,打开php.ini检查是否开启openssl扩展 2.下载成 ...

  5. 0 MapReduce实现Reduce Side Join操作

    一.准备两张表以及对应的数据 (1)m_ys_lab_jointest_a(以下简称表A) 建表语句: create table if not exists m_ys_lab_jointest_a ( ...

  6. HelloDjango 系列教程:创建 Django 博客的数据库模型

    文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个 ...

  7. JavaScript数据结构——集合的实现与应用

    与数学中的集合概念类似,集合由一组无序的元素组成,且集合中的每个元素都是唯一存在的.可以回顾一下中学数学中集合的概念,我们这里所要定义的集合也具有空集(即集合的内容为空).交集.并集.差集.子集的特性 ...

  8. 动态开内存(malloc与calloc)

    malloc与calloc 1.函数原型 #include<stdlib.h> void *malloc(unsigned int size);     //申请size字节的内存 voi ...

  9. 林大妈的JavaScript基础知识(三):JavaScript编程(4)数组

    数组,是一段线性分配的,具有非常高性能的数据结构.简单地说,数组以连续的空间存储,通过整数地计算偏移量访问其中的元素,将读取修改的时间复杂度降低至O(1),我们称之为猝发式存取.是不是非常期待?没错, ...

  10. 一份新的lilypond谱子,能设置页边距和设置换页符了

    给学生做的一份乐谱,这回能设置页边距了,以及设置换页符了. 顺带能设置一些代码片段(snippet),可以用热键代替使用 设置页边距的snippet: \paper { %双引号里面填页面大小 #(s ...