JMeter软件介绍
JMeter软件介绍
一、JMeter面板介绍

1. 常用的菜单栏
分布式运行相关的,后面再展开讲解哦

选项,可以打开日志,修改语言,还有管理插件哦!

工具,主要看函数助手

2. 常用的图标

从左往右依次是
- 新建测试计划
- 选择测试计划模板创建一个新的测试计划
- 打开jmeter脚本
- 保存jmeter脚本
- 剪切
- 复制(鸡肋,不如ctrl+c)
- 粘贴
- 展开目录树
- 收起目录树
- 禁用或启用元件
- 本机开始运行当前测试计划
- 立即开始在本机运行当前测试计划
- 停止
- 关闭
- 清除
- 清除全部
- 查找
- 清除查找
- 函数助手对话框
- 帮助
3. 查看日志
- 如果是黄色感叹号则是正常的,如果是红色数字的代表有问题**【显示的数字是多少呢,warnings/errors 数量就是多少】**
- 点击可以查看日志**【这个日志是Jmeter工具使用加载信息的日志,并不是测试脚本运行的日志】**

4. 查看错误报告
jmeter会在 jmeter.log 文件中记录warn和error信息,而 jmeter.log 在bin目录下
提示
- 倘若测试脚本的执行结果并不是你想要的,可以尝试在 jmeter.log 中找一找,比如:调用函数但语法错误
- 当然,取样器(Sampler)的错误结果一般是不会记录到 jmeter.log ,比如:请求404
二、 JMeter主要元件和组件介绍
1. 目标
1. 熟悉JMeter的主要元件和组件
2. 元件的类型与各自的功能
3. 熟悉元件之间彼此作用域
4. 掌握元件执行顺序
2. 线程组
线程组元件是所有测试计划的入口。所有的取样器和控制器必须放在线程组下。一个线程组可以看作一个虚拟用户池,其中的每个线程都可以理解为一个虚拟用户,多个虚拟用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量不会影响其他线程的变量值。
3. 元件和组件的基本介绍
- 元件:多个类似功能组件的容器(类似于JAVA类);
- 组件:实现独立的某个功能(类似于JAVA方法)。

(1)取样器
取样器是用来模拟用户操作的,是向服务器发送请求、接收服务器响应数据的运行单元。取样器是包含在线程组内部的组件,因此它必须在线程组中添加。JMeter原生支持多种不同的取样器,如TCP取样器、HTTP请求、FTP请求、JDBC请求、Java请求等,每一种不同类型的取样器根据设置的参数向服务器发出不同类型的请求。
(2)逻辑控制器
JMeter 逻辑控制器可以对元件的执行逻辑进行控制,JMeter 官网是这样解释的:「Logic Controllers determine the order in which Samplers are processed」。也就是说逻辑控制器可以控制采样器(samplers)的执行顺序,因此控制器需要和采样器一起使用。除仅一次控制器外,其他逻辑控制器可以相互嵌套。
JMeter 中的逻辑控制器主要分为两类:
- 控制测试计划执行过程中节点的逻辑执行顺序,如:循环控制器、If 控制器等;
- 对测试计划中的脚本进行分组、方便 JMeter 统计执行结果以及进行脚本的运行时控制等,如:吞吐量控制器、事务控制器。
(3)监听器
监听器是用于对测试结果数据进行处理和可视化展示的一系列元件。察看结果树、 图形结果、聚合报告等都是我们经常用到的监听器组件。
(4)配置元件
配置元件用于提供对静态数据配置的支持。它可以定义在测试计划层级下,也可以定义在线程组或取样器层级下,定义在不同层级,作用域也不同。配置元件主要有用户自定义变量、CSV数据文件设置、TCP取样器配置、HTTP Cookie管理器等。
(5)断言
断言即检查接口的返回是否符合预期。断言是自动化测试脚本中举足轻重的一环,因此要十分重视。
JMeter 常用断言主要有响应断言(Response Assertion)、JSON断言(JSON Assertion)、大小断言(Size Assertion)、断言持续时间(Duration Assertion)、beanshell 断言(Beanshell Assertion)等,我们经常要用到的有 JSON断言、响应断言、断言持续时间。
(6)定时器
在性能测试中,访问请求之间的停顿时间被称之为思考时间。在实际操作中,停顿时间可以是内容查找、阅读等花费的时间,而定时器正是用来模拟这种停顿时间。其中:
- 同一作用域下的所有定时器优先于 取样器之前执行。
- 如果希望定时器仅应用于其中一个取样器,则把定时器加入到该取样器的子节点。
定时器 | 说明 |
---|---|
固定定时器(Constant Timer) | |
统一随机定时器(Uniform Random Timer) | |
精准吞吐量定时器(Precise Throughput Timer) | |
常数吞吐量定时器(Constant Throughput Timer) | |
高斯随机定时器(Gaussian Random Timer) | |
JSR223 定时器(JSR223 Timer) | |
泊松随机定时器(Poisson Random Timer) | |
同步定时器(Synchronizing Timer) | |
BeanShell 脚本编写定时器(BeanShell Timer) |
(7)前置处理器和后置处理器
前置处理器是取样器请求之前执行一些操作,经常用于在取样器请求运行前修改参数,设置环境变量,或更新未从响应文本中提取的变量。
同样的,后置处理器是在取样器请求之后执行一些操作。有时候服务器的响应数据在后续请求中需要用到,我们就需要对这些响应数据进行处理。比如获取响应中的token,在后续请求中使用以进行身份验证,这时就会使用后置处理器。
4. 元件作用域
在JMeter中,元件的作用域是靠测试计划的树形结构中元件的父子关系来确定的。
提示
核心是取样器,其他组件都是以取样器为核心运行的,组件添加的位置不同,生效的取样器也不同。
三、 JMeter的属性和变量
JMeter的属性和变量可以简单理解为编程里面的全局变量和局部变量。
属性是全局可见,可以跨线程组传递调用,而变量基本上只能存在于一个线程组中(在测试计划定义的变量也是可以跨线程组传递的)。
- 同线程组内的数据传递一般用变量,例如,存放一个临时的过程值。
- 多个进程组共用的一般用属性,例如,登录操作的session(token)值需要传给其他线程组用,避免每个线程组都还要做一次登录操作。