jmeter——上

元件组件

  元件**:多个类似功能组件的容器(类似于类**)

  组件**:容器中实现独立的某个功能(类似于方法**)

作用域的原则:

  取样器:核心,没有作用域

  逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用

  其他元件:

    ·如果是某个取样器的子节点,则该元件只对其父节点起作用

    ·如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

元件执行顺序:

  同一作用域下不同元件:

    配置元件–前置处理程序–定时器–取样器–后置处理程序–断言–监听器

  同一作用域下相同元件:

    从上到下的顺序依次执行

Jmeter三个重要组件:

  线程组的介绍:    特点:

      模拟用户,支持多用户操作

      多个线程组可以串行执行,也可以并行执行

    线程组的分类:

      setup线程组:前置处理,初始化

      普通线程组:编写脚本

      teardown线程组:后置处理,环境恢复等

  线程组的属性:

    参数介绍:

    案例分析:      使用1个线程组,添加HTTP请求(百度)

        配置线程数为2,循环次数为3时,运行观察结果

        配置线程数为3,循环次数为2时,运行观察结果,对比是否有不同

      相同点:从请求数量来说,是完全相同的

      不同点:场景不同

        线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)

        循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长)

  HTTP请求:

    参数介绍:

    作用:向服务器发送http及https请求

    参数:

  查看结果树:

     案例1: 查看结果树中的HTTP请求中,有多个子的HTTP请求

    原因分析: 第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径

    JMeter会自动发送第二个HTTP请求(使用第一个HTTP请求中返回的URL路径)

    点击最外层HTTP请求时,显示的内容与最后一个HTTP请求的请求和响应数据一致

    案例2:HTTP响应数据中存在乱码,需要修改取样器结果的编码格式

Jmeter参数化:

  本质:使用参数的方式来替代脚本中的固定的测试数据

  实现方式:

    定义变量(最基础)

    文件定义的方式(所有测试数据都是固定的情况下)

    数据库的方式(灵活,业务测试常用)

    函数的方式(灵活,业务测试常用)

  用户定义的变量:

    (1)什么时候使用用户定义的变量?

    定义全局变量

    (2)使用"用户定义的变量"进行参数化的步骤?

    1.添加线程组

    2.添加用户定义的变量。格式:变量名–变量值

    3.添加HTTP请求,引用定义的变量名。格式:${变量名}

    4.添加查看结果树

    参数:

  用户定义的变量引用格式${变量名}

  用户参数:

    (1)什么时候使用用户参数?

    针对同一组参数,当不同的用户来访问时,可以获取到不同的值

    (2)使用"用户参数"进行参数化的步骤?

    1.添加线程组,设置线程数为n(表示模拟的用户数)

    2.添加用户参数

    ·第一列添加多个变量名

    ·后续每一列为一组用户的数据

    3.添加HTTP请求,引用定义的变量名。格式:${变量名}

    4.添加查看结果树

CSV数据文件设置:

  将数据保存在.csv文件中,在发送的时候读取文件中对应的数据保证每次post的数据不同

    创建.csv文件添加数据

  例

  和线程组中线程数相关联

  (1)什么时候使用csv数据文件设置?

  当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值

  (2)使用"csv数据文件设置"讲行参数化的步骤?

  1.创建定义csv数据文件

  2.添加线程组

  3.添加csv数据文件设置

  4.添加HTTP请求,引用定义的变量名。格式:${变量名}

  5.添加查看结果树

函数:

  (1)什么时候使用_counter函数?

  自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义

  (2)使用"counter函数"进行参数化的步骤?

  1.添加线程组,设置虚拟用户数和循环次数

  2.生成_counter函数

  3.添加HTTP请求,使用_counter函数。格式:${_counter(FALSE,) }

  4.添加查看结果树

Jmeter断言:

  定义:检查实际的返回结果是否与预期结果保持一致

  自动校验机制:自动判断响应状态码(2xx:成功,4xx/5xx:失败)

  常用

    响应断言:对任意格式的响应数据进行断言

    json断言:对json格式的响应数据进行断言

    持续时间断言:对响应时间进行断言

  响应断言:

    (1)什么时候可以使用响应断言?

    任意HTTP请求的响应结果,都可以使用响应断言

    (2)使用"响应断言"的操作步骤?

    1.添加线程组

    2.添加HTTP请求

    3.添加响应断言

    测试字段:要检查的项(实际结果)

    模式匹配规则:比较方式

    测试模式:预期结果

    4.添加查看结果树

    参数:

  JSON断言:

    (1)什么时候可以使用JSON断言?

    对HTTP请求的响应结果为JSON格式时,可以使用JSON断言

    (2)使用"JSON断言”的操作步骤?

    1.添加线程组

    2.添加HTTP请求

    3.添加JSON断言

      填写Assert JSON Path exists(实际结果-json路径)·勾选Additionally assert value

      填写Expected value(期望结果)

    JSON path语法$.errcode -> $..errcode

    4.添加查看结果树

    参数:

  断言持续时间:

    (1)什么时候可以使用断言持续时间?

    测试HTTP请求的响应时间是否满足要求时,可以使用断言持续时间

    (2)使用"断言持续时间”的操作步骤?

    1.添加线程组

    2.添加HTTP请求

    3.添加断言持续时间

     填写持续时间(允许的最大响应时间,单位: ms)

    4.添加查看结果树

  大小断言:

    用于判断返回内容的大小;作用对象:返回信息,响应报文; Size to Assert:断言字节范围,字节大小单位为:字节。

Jmeter关联——提取器:

  定义:请求之间有依赖关系,一个请求的响应数据作为另一个的请求参数来传递     JMeter关联:

      正则表达式提取器:提取任意格式的响应数据

      Xpath提取器:提取HTML格式的响应数据

      JSON提取器: 提取JSON格式的响应数据

    正则表达式提取器:      正则表达式介绍:

        正则表达式:就是一个公式,或者说一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容

        公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容

          .:是通配符,可以代表任意字符(除换行回车)

          *: 代表前面的字符出现0次或者多次

          .*匹配规则:找到左边界值后,往右查找有边界,找到最后面的右边界,中间的所有数据都被记录下来

          ?: 代表非贪婪匹配,找到左边界后,往右查找匹配右边界,只要有匹配的右边界就停止继续查找;再次查找左边界和右边界

          公式格式:左边界(.*?)右边界

          <title>(.*?)</title>

          <title>百度一下,你就知道</title><title>百度一下,你就知道</title>

        通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可 每一组数据都可以有一个或者多个值

      (1)什么时候可以使用正则表达式提取器?

      任意格式的响应数据,都可以使用正则表达式提取器进行提取

      (2)使用"正则表达式提取器"的操作步骤?

      1.添加线程组

      2.添加HTTP请求

      3.添加正则表达式提取器

      引用名称:存放提取出的值的参数名称,如填写title.

      正则表达式:左边界(.*?)右边界

      模板:用$$引用起来,表示解析出第几个()的值

      匹配数字:1表示第1个值,-1表示所有取值

      4.添加HTTP请求-百度

      引用正则表达式中的引用名称。如:用$ {title}引用它

      5.添加查看结果树

    xpath提取器:

      //a : 找出所有的a标签

      //a[@id='kw']: 在HTML页面中,找出a标签(有一个属性为id,且id的值为kw)

       //b[@name='kw']: 在HTML页面中,找出b标签(有一个属性为name,且name的值为kw)

    json提取器:

      JSON提取器——${变量名}

      参数:

监控元件——聚合报告

lable:sampler的名称

Samples(样本):一共发出去多少请求,例如10个用户,循环10次,则是 100

Average(平均值):平均响应时间

Median(中位数):中位数,也就是 50% 用户的响应时间

90% Line(90%百分位):90% 用户的响应不会超过该时间

95% Line(95%百分位):95% 用户的响应不会超过该时间

99% Line(99%百分位):99% 用户的响应不会超过该时间

min(最小值):最小响应时间

max(最大值):最大响应时间

Error%(异常占比):错误的请求的数量/请求的总数

Throughput(吞吐量):吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps

Received KB/Sec:每秒接收数据量

Sent KB/Sec:每秒发送数据量

补充:

  正常情况下,响应时间的结果取平均值

  当响应时间最大值特别高(超出平均水平特别多),导致平均值不能代表正常/大部分水平时,可 以使用百分比时间

公共参数提取

定时器组件

固定定时器——模拟用户点击思考时间

  案例:

  (1)系统登录错误3次后,锁定1分钟,等待1分钟后重新输入正确的用户名密码登录成功

  步骤:

    添加线程组

    添加HTTP请求1 - 错误1次

    添加HTTP请求2 - 错误2次

    添加HTTP请求3 - 错误3次

    添加HTTP请求4 - 正确用户名密码

    在HTTP请求4下,添加固定定时器

    添加查看结果树

    固定定时器,必须添加在需要等待的HTTP请求的子节点下

统一随机定时器——在规定时间内随机执行

同步定时器(集合点)

  同步定时器:阻塞线程(累积一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力。

  使用同步定时器的操作步骤

    1.添加线程组,设置线程数为n

    2.添加HTTP请求

    3.添加同步定时器

      •设置并发线程数:同时发送请求的虚拟用户数

      •设置超时时间:

        Ø建议设置:不设置的话,若没有达到设置的线程数会一直死等

        Ø不能设置太小:等待时间后还没达到设置的线程数,会释放已到达的线程

    4.添加查看结果树

    5.添加监听器-聚合报告

常数吞吐量定时器:

  负载测试(按需求,单位时间发送指定数量的接口请求-吞吐量)

  案例:

   (1)一个用户以 20QPS (20 次/s) 的频率访问百度首页,持续一段时间,统计运行情况

   (2)2个用户针对(服务器的QPS要求:20QPS (20 次/s))的频率访问百度首页,持续一段时间,统计运行情况

  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值