性能测试(二)—— 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. 监听器
组件: 实现独立的某个功能(类似于方法)
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第1张图片

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访问百度首页接口, 并查看请求和响应信息

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第2张图片
操作步骤
1. 启动JMeter
2. 在‘测试计划’下添加‘线程组’
3. 在‘线程组’下添加‘HTTP请求’取样器
4. 填写‘HTTP请求’的相关请求数据
5. 在‘线程组’下添加‘察看结果树’监听器
6. 点击‘启动’按钮运行, 并查看结果   

2. 重点组件

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

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

2.1 线程组

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

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

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

特点

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

分类

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

参数

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

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

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

2.2 HTTP请求

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第4张图片位置: 选中线程组->右键->添加->取样器->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 查看结果树

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第5张图片位置: 选中测试计划/线程组->右键->添加->监听器->察看结果树

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

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

三、JMeter参数化

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

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

1. JMeter参数化常用方式

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

2. 用户定义的变量

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

什么时候使用?

定义全局变量

2.1 场景

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

2.2 操作步骤

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

用户定义的变量

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

 HTTP请求设置性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第7张图片

3. 用户参数

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

什么时候使用?

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

3.1 场景

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

3.2 操作步骤

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


线程组设置
线程数设置: 2
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第8张图片 用户参数设置
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第9张图片HTTP请求设置
参数化格式: ${参数名}
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第10张图片

运行结果
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第11张图片

4. CSV 数据文件设置

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

什么时候使用?

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

4.1 场景

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

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


定义CSV数据文件

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

线程组设置
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第13张图片

CSV 数据文件设置
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第14张图片HTTP请求设置
性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第15张图片

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

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

5. 函数(counter)

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

什么时候使用?

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

5.1 函数助手

性能测试(二)—— JMeter元件作用域和执行顺序、JMeter示例、JMeter参数化_第16张图片参数设置

 

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

5.2 参数化调用

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

5.3 运行结果

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

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

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

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

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

你可能感兴趣的:(#,【性能测试】,性能测试,jmeter,JMeter参数化,JMeter元件)