接口测试:Jmeter插件与分布式
函数
Jmeter函数是什么?
可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用。
为什么要学习函数?
- 使用函数我们可以1次【批量】的进行新增
- 使用函数我们可以利用函数读取外部数据进行参数化
- 使用函数我们可以设置指定动态数据的数据为全局变量
Jmeter常用函数
- __CSVRead
- __counter
- __Random
- __time
- __setProperty
- __property
Jmeter函数的格式
-
${__functionName(var1,var2,var3)}
- ${} 函数引用固定格式和参数化相同
- __functionName匹配被调用的函数名称;
- 用圆括号包含函数的形参,例如${__time(YMD)},不同函数要求的参数也不同;
- 有些JMeter函数不要求参数,则可以不使用圆括号,例如${__threadNum};
函数助手对话框
作用
对Jmeter中自带函数的参数设置和生成使用
启动方式
- 菜单(选项)–>函数助手对话框
- Ctrl+Shift+F1
- 工具栏倒数第二个 图标"记事本"
__CSVRead 函数
作用
csvRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数
操作分析
- 测试计划->线程组
- 线程组->HTTP请求
- 函数助手对话框->__CSVRead
- 测试计划->监听器->察看结果树
技术难点
- __CSVRead 参数设置
- 线程组 (线程数)
__counter函数
作用
这个函数是一个计数器,用于统计函数的使用次数
操作分析
- 测试计划->线程组
- 线程组->HTTP请求
- 函数助手对话框->__counter
- 测试计划->监听器->察看结果树
技术难点
- __counter函数参数设置
- 设置计数参数名
__Random函数
作用
随机生成一个指定范围内的数值
操作分析
- 测试计划->线程组
- 线程组->HTTP请求
- 函数助手对话框->__Random
- 测试计划->监听器->察看结果树
技术难点分析
__Random函数参数设置
__time函数
作用
获取当前电脑日期时间 比如:MMddhhmmss 月/日/时分秒
操作分析
- 测试计划->HTTP信息头管理器
- 测试计划->线程组
- 线程组->HTTP请求
- 函数助手对话框->__time函数
- 测试计划->监听器->察看结果树
技术难点分析
- HTTP信息头管理器设置
- HTTP新增请求方法
- __time函数参数
__setProperty函数
作用
用于把指定数据设定成Jmeter属性,可以理解为是把指定数据设置成全局变量
操作分析
- 测试计划-HTTP信息头管理器
- 测试计划->JDBC Connection Configuration
- 测试计划->线程组(学院-新增)
- 线程组->HTTP请求(HTTP请求-学院新增)
- 线程组->JDBC Request
- 函数助手对话框->__setProperty函数
- 线程组->BeanShell Sampler
- 线程组->Debug Sampler
- 测试计划->察看结果树
- 工作台->Property Display
技术难点分析
- __setProperty函数参数设置
- BeanShell Sampler作用
- JDBC Request SQL语句
- 如何知道设置的属性(全局变量)成功了
BeanShell Sampler 组件配置图
作用
可执行JavaScript的一种容器
Property Display
作用
显示Jmeter工具中的属性
__property函数
作用
获取Jmeter中属性值
实施难点分析
- __property函数参数设置
分布式
为什么要学习Jmeter分布式部署?
问题
我们单台电脑由于配置(CPU、内存)问题,最模拟500用户时,就出现卡死现象
什么是分布式?
概念:由多台电脑共同完成同一1个任务(请求)部署,我们称这种部署为分布式部署
分布式原理
- 一台电脑作为控制机(Controller),其它电脑做为执行机(Agent);
- 执行时,控制机会把脚本发送到每台执行机上,执行机拿到脚本后就开始执行
- 执行机执行时不需要启动Jmeter界面,可以理解它是通过命令行模式执行的
- 执行完成后,执行机会把结果回传给控制机,控制机会收集所有执行机的信息并汇总
解决方案分析
- 1台电脑(控制机)分发执行任务
- 2台电脑(执行机)执行任务
- 在执行机上启动监听服务程序
- 在控制机上启动运行
- 测试计划->聚合报告
技术难点分析
- 执行机-jmeter.properties设置
- 控制机jmeter.properties设置
- 执行机启动分布式监听服务程序
- 2台执行机,用户数如何设置
逻辑控制器
问题
- Jmeter目前学习的知识无法使用判断语句去控制HTTP取样器
什么是逻辑控制器?
概念:Jmeter逻辑控制器是可以控制采样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成
逻辑控制器作用域
作用域:只对其子节点的sampler有效。
逻辑控制器分类
- 控制类:控制采样器执行顺序类
- 分组类:对采样器进行分组类
常用(控制类)逻辑控制器
- 如果(If)控制器
- ForEach控制器
- 交替控制器
- 循环控制器
- 仅一次控制器
- 随机控制器
- 随机顺序控制器
- While Controller
- Switch Controller
如果(If)控制器
作用
条件成真,则执行控制器下所有取样器
解决方案分析
- 测试计划->线程组
- 测试计划->用户自定义变量
- 线程组->如果(If)控制器
- 如果(If)控制器->HTTP请求
- 测试计划-察看结果树
技术难点分析
如果(If)控制器 参数设置
ForEach控制器
作用
ForEach控制器一般和用户定义的变量一起使用,在用户自定义变量中读取一系列相关的变量。
操作分析
- 测试计划->线程组
- 线程组->用户定义的变量
- 线程组->ForEach控制器
- ForEach控制器->HTTP请求
- 测试计划->察看结果树
技术难点分析
- ForEach控制器参数设置
- 用户定义的变量书写格式(前缀+_+数字)
交替控制器
作用
交替控制,该控制器包含的所有取样器,步骤交错执行在每个循环中;
操作步骤分析
- 测试计划->线程组
- 线程组->HTTP请求(查询学院-所有)
- 线程组->交替控制器
- 交替控制器->HTTP请求(查询学院-指定)
- 交替控制器->HTTP请求(查询学院-id_list)
循环控制器
作用
指定循环控制器内取样器的执行次数
操作步骤分析
- 测试计划->线程组
- 线程组->循环控制器
- 循环控制器->HTTP请求(查询学院-所有)
- 测试计划->察看结果树
仅一次控制器
作用
该控制器下取样器只执行1次;
操作分析
- 循环控制器->仅一次控制器
- 仅一次控制器->HTTP请求
随机控制器
作用
随机执行其下的所某个请求
操作步骤
- 测试计划->线程组
- 线程组->逻辑控制器->随机控制器
- 随机控制器->HTTP请求(查询学院-所有)
- 随机控制器->HTTP请求(查询学院-指定)
- 随机控制器->HTTP请求(查询学院-条件)
- 测试计划->察看结果树
随机顺序控制器
作用
对控制器下所有采样器,随机产生1个执行顺序,进行执行
操作步骤
- 测试计划->线程组
- 线程组->逻辑控制器->随机顺序控制器
- 随机控制器->HTTP请求(查询学院-所有)
- 随机控制器->HTTP请求(查询学院-指定)
- 随机控制器->HTTP请求(查询学院-条件)
- 测试计划->察看结果树
While Controller
作用
循环执行控制器内所有采样器,直到条件为假时,停止循环
操作步骤
- 测试计划->线程组
- 线程组->逻辑控制器->While Controller
- 随机控制器->HTTP请求(查询学院-所有)
- 随机控制器->HTTP请求(查询学院-指定)
- 随机控制器->HTTP请求(查询学院-条件)
- 测试计划->察看结果树
Switch Controller控制器
作用
通过给该控制器中的value赋值,来指定运行哪个取样器;
操作步骤
- 测试计划->线程组
- 线程组->逻辑控制器->Switch Controller
- 随机控制器->HTTP请求(查询学院-所有)
- 随机控制器->HTTP请求(查询学院-指定)
- 随机控制器->HTTP请求(查询学院-条件)
- 测试计划->察看结果树
常用(分组类)
- 简单控制器
- 事务控制器
简单控制器
作用
只做分组使用,犹如打隔断;
事务控制器
作用
生成一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的;
操作步骤分析
- 测试计划->线程组
- 线程组->逻辑控制器->事务控制器
- 事务控制器->HTPP请求(查询所有、查询指定)
- 测试计划->监听器->聚合报告
图形监视器扩展插件下载及使用
问题
- Jmeter工具打开监听器,没有监控服务器资源的组件
- 服务器也没有启动被监听资源的服务程序
图形监视器扩展插件有什么用?
作用:提供客户端与服务器交互时各种图形报告
解决方案分析
- 服务器:下载服务器端监听服务程序(ServerAgent-2.2.1)
- 客户端:下载标准扩展插件(JMeterPlugins-Standard-1.4.0.zip)
- 启动服务器监听器程序(ServerAgent-2.2.1.zip)
- 客户端加载监听服务器组件图表(jp@gc - PerfMon Metrics Collector)
插件下载
客户端
下载
标准插件下载地址:https://jmeter-plugins.org/downloads/old/
使用
- 解压文件后,复制JMeterPlugins-Standard.jar文件
- 将JMeterPlugins-Standard.jar粘贴到Jmeter的Lib目录下面的ext目录
- 重启Jmeter
服务器
下载
性能监控插件下载地址:https://jmeter-plugins.org/wiki/PerfMonAgent/
使用
解压到服务器任意目录
运行:
1) Windows启动startAgent.bat
2) Linux启动startAgent.sh