性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化

目录

一、JMeter元件作用域和执行顺序

1. 元件的基本介绍

2. 元件作用域

3. 元件执行顺序

二、JMeter使用示例

1. JMeter第一个案例

2. 重点组件

2.1 线程组

2.2 HTTP请求

2.3 查看结果树

三、JMeter参数化

1. JMeter参数化常用方式

2. 用户定义的变量

2.1 场景

2.2 操作步骤

3. 用户参数

3.1 场景

3.2 操作步骤

4. CSV 数据文件设置

4.1 场景

4.2 参数详解(CSV 数据文件设置)

5. 函数(counter)

5.1 函数助手

5.2 参数化调用

5.3 运行结果

6. CSV和用户定义的变量作用域问题


一、JMeter元件作用域和执行顺序

1. 元件的基本介绍

元件: 多个类似功能组件的容器(类似于类) 。
常见的元件类型有:
1. 取样器
2. 逻辑控制器
3. 前置处理器
4. 后置处理器
5. 断言
6. 定时器
7. 测试片段
8. 配置元件
9. 监听器
组件: 实现独立的某个功能(类似于方法)

2. 元件作用域

在JMeter中, 元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。
提示: 核心是取样器, 其他组件都是以取样器为核心运行的, 组件添加的位置不同, 生效的取样器也不同。


作用域的原则

1. 取样器: 元件不和其他元件相互作用, 因此不存在作用域的问题;
2. 逻辑控制器: 元件只对其子节点中的取样器和逻辑控制器作用;
3. 其他六大元件: 除取样器和逻辑控制器元件外, 如果是某个取样器的子节点, 则该元件对其父子节点起作用;
4. 如果其父节点不是取样器, 则其作用域是该元件父节点下的其他所有后代节点(包括子节点, 子节点的子节点等) ;

3. 元件执行顺序

1. 配置元件(config elements)
2. 前置处理程序(Per-processors)
3. 定时器(timers)
4. 取样器(Sampler)
5. 后置处理程序(Post-processors)
6. 断言(Assertions)
7. 监听器(Listeners)


提示:
        1. 前置处理器、 后置处理器、 断言等元件功能对取样器起作用(如果在它们的作用域内没有任何取样器, 则不会被执行)
        2. 如果在同一作用域范围内有多个同一类型的元件, 则这些元件按照它们在测试计划中的上下顺序依次执行

二、JMeter使用示例

1. JMeter第一个案例

需求: 使用JMeter访问百度首页接口, 并查看请求和响应信息


操作步骤
1. 启动JMeter
2. 在‘测试计划’下添加‘线程组’
3. 在‘线程组’下添加‘HTTP请求’取样器
4. 填写‘HTTP请求’的相关请求数据
5. 在‘线程组’下添加‘察看结果树’监听器
6. 点击‘启动’按钮运行, 并查看结果   

2. 重点组件

  • 线程组
  • HTTP取样器
  • 察看结果树

提示: 无论哪个案例基本都需要以上三个组件

2.1 线程组

说明: 线程组是控制JMeter将用于执行测试的线程数, 也可以把一个线程理解为一个测试用户。 

位置: 右键点击‘测试计划’ --> 添加 --> 线程(用户) --> 线程组 

特点

  • 模拟多人操作
  • 线程组可以添加多个, 多个线程组可以并行或串行
  • 取样器(请求) 和逻辑控制器必须依赖线程组才能使用
  • 线程组下可以添加其他元件下组件 

分类

  • 线程组
    • 普通的、 常用的线程组, 可以看做一个虚拟用户组, 线程组中的每一个线程都可以理解为一个虚拟用户
  • setUp线程组
    • 一种特殊类型的线程组, 可用于执行预测试操作
  • tearDown线程组
    • 一种特殊类型的线程组, 可用于执行测试后工作

参数

取样器错误后要执行的动作

  • 继续: 如果取样器里的执行出现错误失败的时候, 请求不会停止, 继续执行。
  • 启动下一进程循环: 忽略错误, 线程当前循环错误, 执行下一个循环。
  • 停止线程: 只限当前线程停止, 不影响其他线程执行
  • 停止测试: 当前执行的线程全部执行完毕后结束
  • 立即停止测试: 立刻停止 

线程属性:
线程数: 虚拟用户数
Ramp-Up时间(秒): 启动全部虚拟用户数所需要的时间
循环次数: 指定次数或勾选永远
延迟创建线程直到需要: 测试开始的时候, 所有线程就被创建完。 勾选了此选项, 那么线程只会在合适的需要用到的时候创建.
调度器: 勾选后, 调度器配置才能使用;

2.2 HTTP请求

位置: 选中线程组->右键->添加->取样器->HTTP请求

 

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

参数详解:

  • 协议: 向目标服务器发送HTTP请求时的协议, 可以是http或者是https , 默认值为http 。
  • 服务器名称或IP : HTTP请求发送的目标服务器名称或IP地址。
  • 端口号: 目标服务器的端口号, 默认值为80 。
  • 方法: 发送HTTP请求的方法, 可用方法包括GET、 POST、 HEAD、 PUT、 OPTIONS、 TRACE、 DELETE等。
  • 路径: 目标URL路径(不包括服务器地址和端口)
  • Content encoding : 内容的编码方式, 默认值为iso8859
  • 同请求一起发送参数: GET请求时url中附带参数可以通过此方式添加
  • 消息体数据: POST/PUT请求JSON数据存放地

2.3 查看结果树

位置: 选中测试计划/线程组->右键->添加->监听器->察看结果树

作用: 查看请求请求和响应结果
参数详解:

  • 取样结果: 查看响应信息头信息、 响应状态码
  • 请求: 查看请求相关信息(url、 方法、 参数)
  • 响应: 查看响应信息 

三、JMeter参数化

思考: 如果循环访问某一请求10次, 要求每次请求发送不同的参数值, 该怎么做? 

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

1. JMeter参数化常用方式

  • 用户定义的变量(最基础)
  • 用户参数 (所有测试数据都是固定的情况下)
  • CSV Data Set Config (灵活,业务测试常用)
  • 函数 (灵活,业务测试常用)

2. 用户定义的变量

添加方式: 测试计划 --> 线程组--> 配置元件 --> 用户定义的变量

什么时候使用?

定义全局变量

2.1 场景

  • 请求: https://www.baidu.com:443
  • 要求: 使用用户定义的变量配置被测系统的协议、 域名和端口 

2.2 操作步骤

1.添加线程组
2.添加用户定义的变量
3.添加HTTP请求
4.添加查看结果树 

用户定义的变量

 HTTP请求设置

3. 用户参数

添加方式: 测试计划 --> 线程组--> 前置处理器 --> 用户参数 

什么时候使用?

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

3.1 场景

  • 请求: https://www.baidu.com
  • 要求: 第一次请求附带参数: name="张三"&age=28;第二次请求附带参数: name="李四"&age=30 

3.2 操作步骤

1.添加线程组
2.添加用户参数
3.添加HTTP请求
4.添加查看结果树


线程组设置
线程数设置: 2
 用户参数设置
HTTP请求设置
参数化格式: ${参数名}

运行结果

4. CSV 数据文件设置

添加方式: 测试计划 --> 线程组--> 配置元件 --> CSV 数据文件设置 

什么时候使用?

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

4.1 场景

  • 请求: https://www.baidu.com
  • 要求: 循环3次,每次请求时附带参数username,password,code的值不相同 

操作步骤
1.定义CSV数据文件
2.添加线程组
3.添加CSV 数据文件设置
4.添加HTTP请求
5.添加查看结果树


定义CSV数据文件

 

线程组设置

CSV 数据文件设置
HTTP请求设置

4.2 参数详解(CSV 数据文件设置)

  • 文件名: CSV文件路径
  • 文件编码: 文件编译字符编码, 一般设置UTF-8
  • 变量名称: 多个变量时, 使用英文逗号分隔
  • 忽略首行: True为忽略, False为不忽略, 默认值: False
  • 分隔符: 如文件中使用的是逗号分隔, 则填写逗号; 如使用的是制表符, 则填写\t;
  • 是否允许带引号: CSV文件中的内容是否允许带引号
  • 遇到文件结束符再次循环: 当读取文件到结尾时, 是否再从头读取文件, False=当读取文件到结尾时, 停止读取文件
  • 遇到文件结束符停止线程: 当“遇到文件结束符再次循环”一项为False时起效; True:当读取文件到结尾时, 停止进程
  • 线程共享模式: 共享模式一般默认即可
    • 所有线程: 该文件在所有线程之间共享, 所有线程循环取值, 线程一取第一行, 线程二取下一行
    • 当前线程组: 各个线程组分别循环取值
    • 当前线程: 每个文件分别为每个线程打开

5. 函数(counter)

计数函数, 一般做执行次数统计使用;
位置: 在菜单中选择--> 工具--> 函数助手对话框

什么时候使用?

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

5.1 函数助手

参数设置

 

  • TRUE, 每个用户有自己的计数器; FALSE, 使用全局计数器
  • Name of variable in which to store the result (optional):用于存储结果的变量名(可选)
  • 生成-复制

5.2 参数化调用

5.3 运行结果

6. CSV和用户定义的变量作用域问题

CSV的作用域是针对线程的, 只有两种情况:

  • 对所有线程组中的线程生效
    • 父节点是测试计划, 并且线程共享模式是“所有线程”时, 对所有线程组中的线程生效
  • 对当前线程组中的线程生效
    • 父节点是某个线程组时, 只会对当前线程组生效

用户定义的变量作用域针对的是测试计划
无论用户定义的变量组件放在哪里, 他都会针对整个测试计划生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254461.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java性能权威指南-总结2

Java性能权威指南-总结2 性能测试方法原则2:理解批处理流逝时间、吞吐量和响应时间批处理流逝时间吞吐量测试 原则3:用统计方法应对性能的变化 性能测试方法 原则2:理解批处理流逝时间、吞吐量和响应时间 性能测试的第2条原则是多角度审视应用性能。应该测量哪个指标取决于对…

springboot整合kafka入门

kafka基本概念 producer: 生产者,负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等。 consumer: 消费者,每个consumer属于一个特定的c…

Linux系统下imx6ull QT编程—— C++类和对象(三)

Linux QT编程 文章目录 Linux QT编程一、类和对象 一、类和对象 C 在 C 语言的基础上增加了面向对象编程,C 支持面向对象程序设计。类是 C 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方…

PHP + 小程序开发过程

前言 在此之前,我也曾经写过一篇用Go语言开发的过程总结!当然这次也不例外,同样记录下过程,方便后续再次接触时,重新拾起会轻松点。 我特意地看了一下博客文章的记录,从项目的启动时间(2017-1…

php开发微信小程序教程,从零开始开发微信小程序步骤(三)

前面我们和大家分享了如何创建一个新的页面和设置页面的标题,这一章我们来聊聊底部导航栏是如何实现的。即点击底部的导航,会实现不同对应页面之间的切换。我们先来看个我们要实现的底部导航栏的效果图:(三个导航图标示例,微信小程序最多能加5个)。 1. 图标准备 阿里图标库…

小程序中商家入驻提醒、新订单提醒

1. 应用场景 ThinkPHP技术QQ群: 828567087 用户在小程序商城购买下单之后,商家如何能及时收到新订单提醒,进行发货处理呢? 用户在小程序中申请入驻商家后,平台管理员如何能及时收到入驻申请通知,进行及时审核处理呢&…

微信小程序与PHP数据交互

微信js源码 Page({onLoad: function () {var that thiswx.request({//要交互页面的地址url: http://localhost/php/index.php/Wxwater/Test/test,data:{pid:1 //data里边使我们要传递给PHP的数据},method: GET,headers: {Content-Type: application/json},success(res) {cons…

PHP后台-微信小程序发送订阅消息(详细)

微信小程序订阅消息文档 步骤一:获取订阅消息模板 ID 在微信公众平台手动配置获取模板 ID: 登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。 在公告模板库找到要…

微擎小程序PHP,微擎配置小程序教程

微擎小程序通用配置图文教程,教会你怎么配置微擎小程序! 1、去源码下载微擎小程序,这里以官网小程序为列,教大家如何配置微擎小程序。 2、将对应的官网小程序后端文件夹hc_step上传到微擎的addons目录下 3、在微擎安装好官网小程序…

php小程序二维码获取生成图片分享

第一步:获取小程序二维码 代码如下(采用tp5框架): namespace app\api\controller; use think\Controller; use think\Db; use think\Config; use app\api\controller\Common;class Code extends Common{/*** [getXcxCode 获取微信小程序二维…

微信小程序后台php实现数据get传递

1:利用phpstudy搭建本地服务器,端口设置为88 2:访问http://localhost:88/phpmyadmin/,在test数据库中新建一个表li,表中添加一个字段name,增加两行数据来进行测试 3:网站www根目录下新建一个wxa…

PHP 管理小程序审核发布

目录 前言一、申请小程序、开发平台账号二、使用步骤 1.获取token2.发布小程序总结 前言 随着微信文档功能越来越多 ,大多数数据越来越容易便捷,本文就介绍小程序在后台的操作管理 提示:以下是本篇文章正文内容,下面案例可供参考…

php实现微信小程序消息通知

接入消息通知指引地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html 文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#%E6%A8%A1%E7%89%88%E6%B6%88%E6%81%AF%E7%AE%A1%E7%90%86 看完这两个地址…

crmeb 多商户小程序配置

一、小程序下载并提交审核 下载微信小程序代码 位置:平台后台>应用>小程序 1 首先需要填写这里的小程序信息 然后在这里就可以下载,如果未开启直播要选择,否则会无法使用 2、下载编译后的小程序代码 没有配置小程序的需要先配置小程序…

微信小程序中国标准时间注册错误

在运行微信小程序的时候出现下图错误: 解决办法,在控制台当中输入openVendor() 会打开文件。如下图:删除圈中的文件,重启工具即可:

微信公众号支付报错:当前页面的url未注册

问题描述 公众号支付报错:“当前页面的URL未注册” 原因分析 用户实际的支付目录必须和在微信支付商户平台设置的一致,否则会报错"当前页面的URL未注册" 支付授权目录: 商户最后请求拉起微信支付收银台的页面地址 解决方案: 登…

基于原生微信小程序的时间组件

作者的絮叨 在开发原生微信小程序的时候,发现很少有基于原生微信小程序开发的相关插件或组件,不知道是不是我的孤陋寡闻,还是真的很少,暂且不管~下面我介绍一下我当时开发的一个时间组件,比较简陋,希望可以…

java后端微信小程序登录与注册

java后端微信小程序登录与注册&微信登录授权 分析: 微信小程序用户表 的字段来源于微信服务器 , 必须想办法去获取到对应的用户信息 找到微信开放平台: 微信开放平台 以下是微信开放平台给出的登录流程图: 微信给出的字段值: {"nickName": "Band",&…

微信OAuth2.0授权登录

微信OAuth2.0授权登录 OAuth2.0简介OAuth2的应用微服务安全社交登录 网页微信登录前期准备授权流程 服务器端开发需求网页显示二维码返回微信登录参数添加配置添加配置类controller 前端显示登录二维码封装api请求 处理微信回调添加httpclient工具类添加回调接口获取access_tok…

springboot微信登陆

微信登录的优势 目前微信用户数量巨大,用户更希望通过更快更便捷的方式进行登录,而不是传统的账号密码登录。 springboot 接入微信登陆 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登…