jmeter浅使用

jmeter工具属于线程模式,loadrunner11属于进程模式,jmeter是用Java语言编写的。开源、

jmeter各个文件夹简介:

  backups目录:脚本备份,jmeter会自动将一些jmx脚本文件备份保存在这里

  bin目录:主要放置jmeter配置文件、系统文件

  docs目录:放置接口文档

  extras目录:放置jmeter的扩展插件,

  lib目录:主要放置jmeter自带的jar包,以及第三方插件

  licenses目录:放置jmeter证书

  printable_docs目录:放置jmeter说明文档

jmeter与loadrunner最大的区别:jmeter不支持ip欺骗,而LP支持

jmeter主要组件:

  测试计划是jmeter进行测试的起点,是测试元件的容器

  线程组代表一定数量的并发用户,用来模拟并发用户发送的请求

  取样器(sampler)定义实际的请求内容,被线程组包含,常用的有:HTTP请求,jdbcRequest,DEbug Sampler

  监听器:查看结果树、聚合报告、表格察看结果、图形查看结果

  逻辑控制器:

  断言:

  配置元件:

  前置处理器:

  定时器:

常用组件介绍:

  1·测试计划:测试计划是jmeter进行测试的起点,名称可以为要测试的计划取一个名字;注释:对测试项目的注释;用户定义的变量可以把反复填写的重复参数进行变量;

[变量名=url]  在用到此变量的时候直接用 ${变量名}引用即可。

  2·线程组:线程数--设置发送请求的用户数目;Ramp-Up Period(in second)--线程间的时间间隔,单位是秒,也就是说在一定时间内启动线程;循环次数--请求线程运行重复的次数,可输入数字指定循环次数,也可永远循环

  

 

 

 3·取样器(sampler):是与服务器进行交互的单元,一个取样器通常进行三部分工作;向服务器发送请求,记录服务器的响应数据和记录响应时间信息

  HTTP请求:协议、ip、端口号、请求方法、路径、Parameters(以表格的形式填写参数),Body Data(以json形式填写数据)

  Debug Sampler:调试脚本,会把我们自定义大的变量输出在Response data 中,方便我们调试使用;正式执行脚本时,需要删除Debug Sampler

  JDBC Request :可以想数据库发送一个请求(sql语句),需要 JDBC connection configuration (JDBC链接配置)配置元件一起使用

4·参数化:

  用户参数:前置处理器中 添加 用户参数

  函数助手:${__Random(,,)}

  Csv配置文件:配置元件中添加,使用前要准备好参数化的所有参数值,

  用户自定义变量:用户定义的变量可以把反复填写的重复参数进行变量,[变量名=url]  在用到此变量的时候直接用 ${变量名}引用即可。

5·监听器:负责收集结果,聚合报告、察看结果树、用表格察看结果、图形察看器

6·断言:用来判断请求响应结果是否符合用户所期望的

  1·测试字段常用的有响应文本(对响应结果进行断言)、响应头(对响应头文件进行断言)

  2·模式匹配规则常用有包括(响应结果包括断言的内容),相等(响应结果和断言结果相同)

7·逻辑控制器:

(场景如下:登录一个网站,反复进行充值,要求,在压测时,登录接口压测一次,充值接口压测数次;)

  1·仅一次控制器:

    该控制器下的子节点对每个线程只执行一次;在仅一次控制器下添加登录接口,

  2·循环控制器:可以实现循环调用指定次数的逻辑操作

    在循环控制器下添加充值请求,并设置循环次数;到此即实现了登录一次,却循环了多次充值接口的目的。

  3·简单控制器:用来指定一个执行单元,它可不改变元件执行顺序,他下面还可以嵌套其他控制器

 

8·前置处理器和后置处理器:

  前置处理器:取样器发起请求前做的工作,常用的参数化

  后置处理器:响应后做的工作,常用的正则提取器,提取响应报文中的内容(coolie、token)

  动态数据关联:

  在HTTP请求的参数中经常会遇到一些参数的值是服务器响应的动态数据,这些数据需要进行关联才能使的每一次请求都能成功,可以采用正则表达式提取器来获取这些动态的数         据。

  正则表达提取器:

    引用名称:在HTTP等请求中,引用此数据,需要用到的名称  如果填写user_id,后面的引用方式  ${user_id}

    正则表达式:用于将需要的数据提取出来  【例子:user_id:"(.+?)"】【. 表示匹配任意字符串;+ 表示一次或多次;?表示找到一个后停止匹配】

    模板:表示使用提取到的第几个值:$1$:表示取第1个 $2$:表示取第二个 以此类推:$n$:表示取第n个   【$2$】

    匹配数字:0代表随机取值;1代表全部取值      【1】

    缺省值:如果正则表达式没有找到值,则使用此缺省值

9·定时器

  定时器是在每个Sampler(采集器)之前执行的,而不是之后,当执行一个sampler之前时,所有当前作用域内的定时器都会被执行。如果希望定时器仅应用与其中一个sampler,

则把定时器作为子节点加入。

  1·固定定时器:

    可以让每个线程在请求之前按相同的指定时间停顿,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

  2·同步定时器(Synchronizing Timer):

    起作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力。

    (1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数数量
    (2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数

  为什么设置超时时间

  1·在实际运行过程中,可能出现始终无法达到集合点设置的并发要求,如果出现这种情况的话jmeter会一直卡在那里,等待满足要求,才会继续往下执行;

  2·为了避免上述情况的发生,需要设置一下集合点的超时时间

  设置规则:因为集合点超时时间的单位为ms,计算公式:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

  集合点的概念:

  简单理解就是:设置一个阈值(请求数量),当请求数达到这个阈值时,允许请求同时发出。

 

 

posted @ 2020-04-17 16:01  三牙  阅读(126)  评论(0编辑  收藏  举报