目录

一、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的作用域是针对线程的, 只有两种情况:

  • 对所有线程组中的线程生效

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

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

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

  1. JMeter元件作用域和执行顺序

    目标: 1.熟悉元件之间的作用域 2.掌握元件执行顺序 名词解析: 元件:多个类似功能组件的容器统称 组件:实现独立某个功能的统称(类似于函数) 线程组:模拟用户的 配置元件:在测试之前,对测试环境或 ...

  2. 从零开始学前端:作用域、执行顺序 --- 今天你学习了吗?(JS:Day9)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:函数 - 今天你学习了吗?(JS:Day8) 文章目录 从零开始学前端:程序猿小白也可以完全掌握!-今天你学 ...

  3. 【虫师--系列】JMeter基础之--元件的作用域与执行顺序

    来自: http://www.cnblogs.com/fnng/archive/2012/12/27/2836506.html    作者:虫师 前面有介绍过jmeter的元件类别,对于新手来说,jm ...

  4. JMeter基础之组件的作用域与执行顺序

    对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低性能测试学习的热情,算我们熟悉了所有元件以及元件上的参数了,我们也不知道如何将其组合成我们想要描 ...

  5. jmeter接口顺序执行_【接口测试】JMeter中各组件执行顺序详解

    JMeter是我们测试人员使用越来越多的一种测试工具.本文就详细说明一下在JMeter的一个项目内,各个模块和组件的执行顺序是怎么样的. 执行顺序 JMeter常用的各个组件的执行顺序是:配置原件 前 ...

  6. 【异步系列二】Promise原理及执行顺序详解

    前言 Promise 是 javascript 中非常重要的一环,熟悉它是必须的,而且在面试中也常常会问到相关面试题. 在了解 Promise 之前,需要了解什么是异步编程,可以参考我的一篇文章:Ja ...

  7. Jmeter组件执行顺序与作用域

    一.Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用.配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同 ...

  8. JMETER 各组件执行顺序与作用域

    JMETER 各组件执行顺序与作用域 配置元件: 配置元件的作用主要为了初始化默认值和变量,以便后续采样器引用.相对于JAVA 语言中间定义一些常量和静态变量.配置元件作用域是最初始阶段处理,配置元件 ...

  9. 6.2 jmeter基础—元件执行顺序

    4.3.元素的执行顺序 1 配置元件 Configuration elements 2 前置处理器Pre-Processors 3 定时器Timers 4 取样器Sampler 5 后置处理器Post ...

最新文章

  1. 架构师之路 — 分布式系统 — CAP 定理
  2. ueditor百度编辑器中,多图上传后,图片顺序乱掉的处理方法
  3. 王琦:5G新视频应用的机会窗口将在2-3年内
  4. thymeleaf中的内联[ [ ] ]
  5. 在Keil中利用AStyle插件格式化代码
  6. [转载]Ubuntu 14.04设置固定ip
  7. win10安装python27_《win10python27安装教程》 win10怎么安装python
  8. 上学的时候写的文本分割器
  9. 《西方确指》明心生极乐、专修净土乃大孝、持咒显空慧
  10. 教你在线免费PDF转Word,建议收藏
  11. 帝国 cms 列表 php,帝国cms数据表详细中文说明
  12. nodejs实现读取本地目录生成文件树
  13. BP神经网络原理及matlab实例
  14. 财务自由之路笔记 第一章 你真正想要什么
  15. NoSQL之 Redis配置与优化
  16. Android仿微信拍摄、录制视频,以及视频播放(基于JCameraView和GSYVideoPlayer)
  17. 软件工程毕业设计课题(26)基于JAVA毕业设计JAVA家政预约系统毕设作品项目
  18. java计算机毕业设计游泳馆信息管理系统源码+数据库+系统+部署+lw文档
  19. spring jsm(一)
  20. ES6—字符串模板引擎

热门文章

  1. mysql 视图会走索引吗_MySQL索引和视图
  2. encoder- Linux从入门到精通【下】
  3. 人力资源管理系统哪个好?如何选择
  4. history.pushState() 给网站添加和修改浏览历史记录
  5. android手机如何保存长图片大小,快手怎么发长尺寸图片和图集 快手图集现在安卓手机可以使用吗...
  6. DotA Allstars所有命令大全
  7. Grade Point Average
  8. 掌握ThreadLocal的王者段位
  9. p5.js 临摹作品“随鼠标转动的三角形”及自主作品“太阳花”
  10. 创业合伙人时代,股权激励正解