zoukankan      html  css  js  c++  java
  • Jmeter常用控件三、Sampler

     

    标签(空格分隔): Jmeter


    Sampler是性能测试过程中向服务器发送请求,记录响应信息,记录响应时间的最小单元。 Jmeter默认支持的请求

    • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
    • SOAP / REST Webservices
    • FTP
    • Database via JDBC
    • LDAP
    • Message-oriented middleware (MOM) via JMS
    • Mail - SMTP(S), POP3(S) and IMAP(S)
    • Native commands or shell scripts
    • TCP
    • Java Objects

    Http Request Sampler (HTTP请求)

    image_1cr4j6aj8tuik9e15lr1v5e15l819.png-145.5kBHttp请求用发送,接收Http/Https请求。

    基本用法

    • web服务器信息:

    • 协议:http 或则https(大小写不明感)可以为空默认为http

    • 服务器器名称或则ip:http请求发的的目标服务器名称或者IP地址。

    • 端口:目标服务器端口,默认为 80.

    • http请求

    • 方法:发送器http请求的法。GET,POST,PUT,PATCH

    • 路径:目标url路径(不包括服务器地址和端口号)

    • 内容编码:内容编码的方式,默认为iso8859.

    • 自动重定向:如果选中该项,发送出的http请求后得到的响应是301/302时JMETER自动重定向到新页面。默认不选中

    • 跟随重定向:

    • 使用KeepAlive:当选中该选项时,Jmeter和目标之前使用keep-alive方式进行http通信,默认选中。

    • 对对psot使用mutilpart/from-data:当发送http post请求是,使用mutilpart/from-data方式发送,默认不选中

    • 与浏览器兼容的头:

    • 在请求中发送URL参数,对于带参数的URL,Jmeter提供了一个简单的对参数进行参数化的方式。用户可以将URL中的所有参数设置在表中,表中的每一行是一个参数值对(对应url中parementrel=valuel)

    • 消息体数据 http请求体中的的数据

    • 文件上传 在请求中发送文件。

    构造http 请求

    用户中心游客登录

    • URL:/uc/v1/login/guest
    • 请求方法:GET
    • 参数: |参数名称|类型|说明| |--|---|--| |appId|integer|项目appId,不是游戏服务器ID| |openId|string|自定义(注册后玩家的openId、unionId)格式要求:32位字符串| |deviceId|string| 设备类型 1:iOS,0:Android| image_1cr6go1p6h5ehse1r2mqoh1q2j1m.png-125.2kB

    游客绑定微信账号

    • URL:/uc/v1/wechat/bind
    • 请求方法:PATCH
    • 参数: |参数名称|类型|说明| |--|---|--| |appId|integer|项目appId,不是游戏服务器ID| |openId|string|自定义(注册后玩家的openId、unionId)格式要求:32位字符串| |gid|integer|玩家全局唯一标示| |unionId|string|玩家微信认证的unionid| |wechatAccessToken|string|玩家微信认证的accesstoken|

    gid需要从游客登录的返回中获取,需要在在游客登录请求中加入后置处理器,获取gid

    image_1cr6hfbgn10e2f91rf11jbu96b23.png-137.4kB

    JDBC Connection Configuration 数据库连接配置

    数据库连接配置器,用来连接数据库,是一个连接池。 界面介绍 image_1ct6tq2s8ba35sv1b65psj1olh39.png-123.1kB

    • Variable Name for created pool:数据库连接池的名称,我们可以有多个jdbc connection configuration,每个可以起个不同的名称,在jdbc request中可以通过这个名称选择合适的连接池进行使用。

    • Max Number of Connections:连接池的最大连接数,在大多数情况下,将其设置为零(0)。这意味着每个线程将获得其自己的池,其中包含单个连接,即线程之间不共享连接。如果你真的想使用共享池),那么将最大链接数设置为与线程数相同,以确保线程不会相互等待。

    • Max Wait (ms):最大超时间

    • Time Between Eviction Runs (ms) :空闲连接池清理的时间间隔。

    • Auto Commit:事务是否自动提价选项,比如Oracle执行一条更新操作,不Commit一下,数据不会更新到数据库中的,这个选项帮我们自动提交。

    • Transaction Isolation:JDBC事务控制 数据库的事务控制ADIC传送门

      • TRANSACTION_NONE:不支持的事务,TRANSACTION-NONE=0

      • TRANSACTION_READ_UNCOMMITEED:允许脏读,不可重复读和幻读

      • TRANSACTION_READ_COMMITEED:禁止脏读,允许不可重复读和幻读

      • TRANSACTION_REPEATABLE_READ:禁止脏读和不可重复读,允许幻读

      • TRANSACTION_SERILIZABLE:禁止脏读,不可重复读和幻读

      • DEFAULT:JMETER设定的。默认值是1,其实是TRANSACTION_READ_COMMITEED 禁止脏读,允许不可重复读和幻读。

      • 什么是脏读,不可重复读,幻读

        脏读:一个事务读取另外一个事务未提交的数据。
          不可重复读:一个事务再次读取之前的数据时,这个数据已经被另外一个事务修改。
          幻读:一个事务重新执行一个查询,返回的记录包含了其他事务提交的新纪录。
    • Test While Idle:测试池的空闲连接,请参阅BasicDataSource.html#getTestWhileIdle。查询验证。

    • Soft Min Evictable Idle Time(ms):

    • Validation Query:验证SQL的语法

    • Database URL:数据库地址,以下为不同数据库的连接方式

      MySQL
      Driver class
      com.mysql.jdbc.Driver
      Database URL
      jdbc:mysql://host[:port]/dbname
      
      PostgreSQL
      Driver class
      org.postgresql.Driver
      Database URL
      jdbc:postgresql:{dbname}
      
      Oracle
      Driver class
      oracle.jdbc.OracleDriver
      Database URL
      jdbc:oracle:thin:@//host:port/service OR jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
      
      Ingress (2006)
      Driver class
      ingres.jdbc.IngresDriver
      Database URL
      jdbc:ingres://host:port/db[;attr=value]
      Microsoft SQL Server (MS JDBC driver)
      Driver class
      com.microsoft.sqlserver.jdbc.SQLServerDriver
      Database URL
      jdbc:sqlserver://host:port;DatabaseName=dbname
      Apache Derby
      Driver class
      org.apache.derby.jdbc.ClientDriver
      Database URL
      jdbc:derby://server[:port]/databaseName[;URLAttributes=value[;…]]
      
    • JDBC Driver class:数据库类型,数据库的驱动包需要放到/lib目录下,使用mysql依赖mysql-connector-java-8.0.13.jar下载地址

    • Username:用户名

    • Password:密码

    JDBC Request JDBC 请求

    用来向数据库发送请求

    界面介绍 image_1ct2kqn3i1gv31hegmtii781n79m.png-42.1kB

    • Variable Name of Pool declared in JDBC Connection Configuration(必须) :连接池绑定的JMeter变量的名称。这必须与JDBC连接配置的“变量名称”字段一致。

    • Query Type:查询类型,根据语句设置查询的类型

      • Select Statement:执行查询语句的时候使用。可以使用${}引入参数,不可使用占位符进行参数化
      • Update Statement :执行更新操作的时候用到,包括插入与修改。可以使用${}引入参数,不可使用占位符进行参数化。
      • Callable Statement:对应JDBC规范中的CallableStaenent对象,它为所有的DBMS提供了一种以标准形式调用存储过程的方法,白话就是可以调用存储过程,也就是可以有入参,有占位符。可以使用${}引入参数,也可以使用占位符引入参数。
      • Prepared Select Statement:预编译查询语句,与Select Statement相比效率更好,可以使用${}引入参数,可以使用占位符引入参数。
      • Prepared Update Statement:预编译更新语句,包括查询与插入,与Update Statement 效率更好,支持占位符引入参数。 可以使用${}引入参数,可以使用占位符引入参数。
      • Commit:当前连接状态中的内容提交,查询语句中的SQL在执行完成后马上提交,使用该项时JDBC Connection Configuration 中的 Auto commint 选项为False。可以使用${}引入参数,可以使用占位符引入参数。
      • Rollback:当前连接状态中的内容可回滚。可以使用${}引入参数,可以使用占位符引入参数。
      • Autocommit(false):指明不要自动提交,如果JDBC Connection Configuration 中的 Auto commint为true 覆盖该选项。可以使用${}引入参数,可以使用占位符引入参数。
      • Autocommit(true):指明允许自动提价。可以使用${}引入参数,可以使用占位符引入参数。
      • Edit :变量应用,引用的为上述的任意一个变量
    • SQL Query SQL查询语句,不需要输入行尾的分好

    • Parameter values:参数值,多个值用,分割

    • Parameter types:参数类型,INTEGER, DATE, VARCHAR, DOUBLE

    • Variable Names:SQL的执行语句往往返回的是一个数据集,我们可以把它保存的变量中,让后面的元件调用。

    • Result variable name :上面的 Variable Names中额变量是个数与队列对应的,Result variable name创建一个数组,保存所有返回的结果。

    • Query timeout:定义查查询时间

    • Handle result set:定义如何处理由callable- statements语句返回的结果

    实例1 连接mysql数据库 ,并查询数据库的表

    • 连接mysql数据库,

      • 定义数据库连接池名称:MYSQL
      • URL:jdbc:mysql://rm-wz955w1jr2dnj6u9bo.mysql.rds.aliyuncs.com:3306/majiang
      • JDBC Driver class:com.mysql.jdbc.Driver
      • Username:
      • Password: image_1ct7bvnb31u95152hqu61oiff063m.png-69.8kB
    • 查询全部表 image_1ct7cae2l1pjomna14j11iov1qcma3.png-45.8kB

    • 查询结果 image_1ct7cbtqs9rl9aaj56190319mdaj.png-395.7kB

    实例2 对查询数据进行参数化

    • 使用${}引入参数 用户自定义的变量添加用户昵称变量nickname image_1ct7kafab1rogsu81u12k73nhscu.png-6.1kB 在查询语句中使用通过${nickanme}引入变量, 注意加括号,不然报错 image_1ct7kcm8h1ddii7p18nq1ffd15lbdb.png-5kB 查询结果 image_1ct7kfnuv1l0skvf1qrq1pvg1k2le8.png-17kB

    • 通过占位符?引入变量 Parameter values:hunan%, 9586 Parameter types:VARCHAR,INTEGER 查询语句

      select Nike, id, unionid, openid from user where Nike like ?  and openid=?
      

      image_1ct9fiibk1odv1dvt1g9utdg1pm99.png-56.3kB查询结果 image_1ct9fp5mo9q91uhu1iuv7oo93716.png-12.1kB

    实例3引用返回的的结果

    • 通过设置Variable Names来保存变量 查询语句

      select Nike, id, unionid, openid from user where Nike like ?      and openid<?
      

      我们的查询语句中指定了4个返回的值,也就是说会返回4个列。在Variable Names 设置A,B,C,DA保存第一列的数据,B保存第二列的数据以此类推。那么如下变量会被设置为。

      A_#=2 (总行数)
      A_1=1列, 1行
      A_2=1列, 2行 
      C_#=2 (总行数) 
      C_1=3列, 1行
      C_2=3列, 2

      如果返回结果为0,那么A_#C_#会被设置为0,其它变量不会设置值。如果第一次返回6行数据,第二次只返回3行数据,那么第一次那多的3行数据变量会被清除。可以使用可以使用${A_#}, ${A_1}...来获取相应的值 image_1ct9i3ma818rcip1up31lh31dna33.png-57.1kB使用Beanshell Sampler 输出结果 image_1ct9i4tfr7ov1ng11uba1aockhk3g.png-20kB 日志结果 image_1ct9i97smdofamd109s1usd3kh4d.png-137.8kB请求返回的结果 image_1ct9ia5il1dks18vg12ea1p2jefv4q.png-35kB

    • 通过Result variable name保存结果,Result variable name会将返回的结果保存为数组,通过vars.getObject("result").get(0).get("Nike")获取值 image_1ct9t3tp01rr3fkqh08v591makm.png-115.2kB输出语句 image_1ct9t1fppgme2g814eh1k4g9ft9.png-37.3kB 执行结果 image_1ct9t627d129p1uvs16jl1q061hrv13.png-122.5kB在http元件中使用结果,通过函数__jexl3()执行vars.getObject("result").get(0).get("Nike") image_1ct9ta69n12oo17v119avups12a620.png-16.2kB

    TCP Sampler Tcp控制元件

    Tcp用来与指定服务器建立TCP/IP连接,发送文本,等待服务器响应。

    界面介绍 image_1cth5qh121g0iuuh13l412nl87i29.png-46.2kB

    • TCPClient classname 需要使用的Tcp客户端,Jmeter提供了三个TCPClient,但是因为不同的传输编码方式,所以测试TCP的时候大部分情况需要自己编写TCPClinet。
      • TCPClientImpl
      • BinaryTCPClientImpl
      • LengthPrefixedBinaryTCPClientImpl
    • ServerName or IP:服务器名称或则TCP服务器地址
    • Port Number:服务的端口号
    • Re-use connection:复用连接,勾选后将保持连接,不勾选将在读取数据后关闭连接
    • Close connection:关闭连接,勾选后,在Tcp Sampler运行结束后关闭连接
    • Set NoDelay:勾选后使用纳格算法(Nagle's algorithm)
    • SO_LINGER:创建套接字的时候指定延迟时间啊(已秒为单位),如果设置为0,可以防止大量套接字处于TIME_WAIT状态。
    • End of line(EOL) byte value:行尾的字节值,将值设置为-128~+127之外的值可以跳过检查。可以在jmeter.properties中设置eolByte的属性,如果在TCP Sampler Config和jmeter.properties同时设置该了该属性,会使用TCP Sampler Config中的设置
    • Connect Timeout:连接超时
    • Response Timeout:响应超时
    • Text to Send:需要发送的文本
    • Login User:用户名,默认不使用
    • Password:密码,默认不使用

    实例1,发送简单的文本信息 Classname:TCPClientImp

    image_1cthmvji5sjd16aqi75ejbv736.png-97.5kB返回的信息 image_1cthn1sjl1fnbm2e1g3o16uq3od40.png-41kB

  • 相关阅读:
    Matlab画图-非常具体,非常全面
    PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
    Windows内核
    [WebGL入门]十,矩阵计算和外部库
    HOG特征-理解篇
    hdu 5035 概率论
    Hibernate对象持久化框架
    Thinkpad X200 屏幕备案
    64地点 Windows 8/7 根据系统 32地点PLSQL 耦合 64 地点 Oracle 11g
    阐述php(四) 流量控制
  • 原文地址:https://www.cnblogs.com/summerxye/p/11004507.html
Copyright © 2011-2022 走看看