jmeter使用详解


介绍

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具用于对软件做压力测试。
JMeter官方文档http://jmeter.apache.org/index.html


jmeter常用组件

测试计划 起点所有组件的容器
线程组 代表有一定数量的用户
取样器 向服务器发送请求的最小单元
逻辑控制器 结合取样器实现一些复杂的逻辑
前置处理器 在请求之前的工作
后置处理器 在请求之后的工作
定制器 负责在请求质检的延迟间隔。固定、高斯、随机
配置元件 配置信息
断言 用于判断请求是否成功
监听器 负责收集结果
执行顺序 测试计划>>>线程组>>>配置元件>>>前置处理器>>>定时器>>>取样器>>>后置处理器>>>断言>>>监听器
作用域 辅助组件除测试计划、线程组、取样器之外的组件作用于父组件、同级组件以及同级组件下的所有子组件

一、Threads(Users)

1、线程组

线程组元件可以理解为一个测试计划的开始jmeter其它的元件都要放在线程组下

右击测试计划>>>添加>>>Threads(Users)>>>线程组
在这里插入图片描述
在取样器错误后要执行的动作
1、继续继续执行接下来的操作
2、Start Next Thread Loop 开始下一次循环
3、停止线程退出该线程不在执行此线程的操作
4、停止测试等待当前执行的采样器结束后结束整个测试
5、Stop Test Now立刻停止测试
线程属性
1、线程数相当于模拟的用户数量一个用户占一个线程模拟200个用户就是200个线程
注进行参数化时需配置对应的线程数量
2、Ramp-Up Period (in seconds)设置多长时间内启动全部线程。例如线程数为100时间设定为10s那么就是10s加载 100个线程每秒启动的线程数=100/10=10
3、循环次数 如果填具体的数值就是循环对应的次数例如线程数为200循环次数为10则每个线程发10次请求如果选择“永远”则一直执行下去直到手动停止
4、Delay Thread creation until needed默认不勾选测试开始时所有的线程就被创建完。勾选此项延迟线程创建直到需要才创建
调度器配置
1、持续时间秒 脚本持续运行的时间
2、启动延迟秒脚本延迟启动的时间


二、Sampler

1、HTTP请求

选择线程组右键>>>添加>>>Sampler>>>HTTP请求
在这里插入图片描述
Basic
1、协议向目标服务器发送http请求时的协议http/https大小写不敏感默认http
2、服务器名称或IP http请求发送的目标服务器名称或者IP地址比如www.baidu.com
3、端口号目标服务器的端口号默认值为80
HTTP请求
1、方法发送http请求的方法例GET\POST
2、路径目标的URL路径不包括服务器地址和端口
3、Content encoding内容的编码方式Content-Type=application/json;charset=utf-8
4、自动重定向如果选中该项发出的http请求得到响应是301/302jmeter会重定向到新的界面
5、Use keepAlivejmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信默认选中
6、Use multipart/from-data for HTTP POST当发送HTTP POST 请求时使用
parameter 请求 URL 中添加参数函数定义中参数而argument指的是函数调用时的实际参数简略描述为parameter=形参(formal parameter)
Body Data 实体数据就是请求报文里面主体实体的内容一般我们向服务器发送请求携带的实体主体参数可以写入这里
Files Upload 从HTML文件获取所有有内含的资源被选中时发出HTTP请求并获得响应的HTML文件内容后还对该HTML

三、配置元件

1、CSV 数据文件设置

CSV 数据文件变量是指从外部 csv 文件读取数据出来作为变量
选择请求>>>添加>>>配置元件>>>CSV 数据文件设置
CSV数据文件设置
设置CSV数据文件
1、文件名csv文件路径可以是绝对路径或者相对路径
2、文件编码编码格式与所选文件编码格式保持一致
3、变量名称如果文件中只有一个变量直接写变量名如果有多个变量用英语的逗号隔开
4、是否允许带引号
设置为true参数文件包含引号时实际的数据为引号中的数据。比如参数文件中的数据为"1"当使用该参数时实际取得值为1
设置为false参数文件包含引号时实际取得值为全部的值。比如参数文件中的数据为"1"当使用该参数时实际取得值为"1"
5、遇到文件结束符再次循环
设置为true后参数文件中的数据循环使用测试按照线程组中的设置执行。比如csv 文件共有 10 条记录但线程数有 15 个循环 10 次后重头开始循环取值
设置为false后参数文件不再循环遍历取值
6、遇到文件结束符停止线程当执行完参数文件中所有参数后直接停止线程
7、线程共享模式
所有线程All threads参数文件对所有线程共享这包括同一测试计划中的不同线程组测试计划下的所有线程组下的所有线程共享参数文件所有线程之前参数取值互相影响,线程在同一次迭代下取值相同
当前线程组Current thread group 只对当前线程组中的线程共享当前线程组下的所有线程公用一个参数文件同一个线程组下的线程之前取值相互影响,线程在同一次迭代下取值相同
当前线程Current thread 仅当前线程获取(即每个线程获取一个参数文件各个线程之间参数取值互不影响,线程在同一次迭代下取值相同)

1)当参数文件的位置与线程组在同级下线程组下存在循环控制器时循环控制器下的参数取值相同
2)线程组下存在循环控制器时当参数文件在循环控制器下循环控制器下每次迭代时重新取值
3)线程组下存在仅一次控制器参数文件在仅一次控制器下当参数在仅一次控制器下取值一次之后之后无论哪次迭代参数取值都不变类似于unique once
注创建CSV文件最好用notepad创建编码格式为UTF-8

2、HTTP信息头管理器

设置jmeter发送的HTTP请求头所包含的信息

右键>>>添加>>>配置元件>>>HTTP信息头管理器
HTTP信息头管理器
信息头也就是请求头会跟随HTTP请求一起发送到服务器。比如需要传输User-Agent 、cookie、token或其他某些信息或是需要伪造请求头的时候。

3、HTTP Cookie管理器

右键>>>添加>>>配置元件>>>HTTP Cookie管理器
在这里插入图片描述

如果你有一个 HTTP 请求其返回结果里包含一个 cookie那么 Cookie 管理器会自动将该 cookie 保存起来而且以后所有的对该网站的请求都使用同一个 cookie。

4、HTTP请求默认值

管理公用的HTTP请求配置数据
线程组右键>>>添加>>>配置元件>>>HTTP请求默认值
HTTP请求默认值
配置线程组下所有【HTTP请求】的请求行和请求体的默认值与【HTTP请求】放在同级目录。配置后每个【HTTP请求】无需重复配置特殊的请求也可以单独配置单独配置的优先级更高

5、用户定义的变量

选择请求>>>添加>>>配置元件>>>用户定义的变量
在这里插入图片描述
引用变量的格式为${变量名}

优先级

1、线程组下的用户自定义变量 优先级高于 测试计划里的用户定义的变量

2、HTTP 请求下的用户自定义变量 优先级高于 线程组下的用户定义的变量

注意点

1、定义的所有参数的值在测试计划的执行过程中不能发生取值的改变。即使变量的值是随机数Random不同用户数循环多次拿到的用户自定义变量值都是一样的

2、一般仅将测试计划中不需要随迭代发生改变的参数只取一次值的参数设置在此处

四、定时器

同步定时器synchronized timer

选择请求>>>添加>>>定时器>>>同步定时器synchronized timer
在这里插入图片描述

模拟用户组的数量Number of Simulated Users to Group by设置多少用户进行同步操作。设置为0表示执行线程组的线程数设置为3只会执行三个线程数假设同步线程组数设置为54,5线程执行到这一步会停止

注设置的值不能大于它所在线程组中设置的线程数0表示 all 无穷大最大

超时时间Timeout in milliseconds以第一个到达同步定时器的用户开始如果在设置的时间内所有用户都达到了就立即释放后续操作如果在设置的时间内还没达到则目前到达集合点的用户先进行释放做后续操作。 设置为0则一直等待以第一个到达为准到多少走多少如果设置为3线程设置为永远循环每凑够三个就会执行释放

五、前置处理器

jmeter支持的变量

jmeter支持的变量类型用户自定义变量函数生成变量BeanShell 变量数据文件变量

用户自定义变量

选中请求>>>添加>>>前置处理器>>>用户参数
用户参数
变量引用格式为${user}

函数生成变量

内置的函数
点击菜单栏选项>>>函数助手对话框>>>下拉选择>>>选择对应函数
函数生成变量

六、后置处理器

1、正则表达式提取器

接口需要关联时提取接口指定数据
在这里插入图片描述

选择请求右键>>>添加>>>后置处理器>>>正则表达式提取器
1、引用名称请求要引用的变量名称如填写 result_num
2、正则表达式匹配需要的内容。
3、模板
4、匹配数字0 代表随机取值1 代表全部取值
5、缺省值如果参数没有取得到值那默认给一个值让它取
正则表达式

七、断言

1、响应断言

检查点比较预期结果与实际结果
选择一个请求右键>>>添加>>>断言>>>响应断言
响应断言
断言成功查看结果为绿标断言失败查看结果为红标
apply to
1、Main sample and sub-samples作用于父节点取样器及对应子节点取样器
2、Main sample only只作用于父节点取样器
3、sub-samples only只作用于子节点取样器
4、JMeter Variable Name to use作用于jmeter变量输入框内输入变量名称
要测试的响应字段
1、响应文本(Text Response)从服务器返回的响应文本比如body包含HTTP头
2、响应代码(Response Code) 比如 200、404
3、响应消息(Response Message) 比如 OK
4、Response Headers响应头比如 Set-Cookie 头
5、Document(text)通过Apache Tika追踪的各种类型文档的文本
6、lonore Status指示JMeter设置sampler status的初始状态为success。sample status是否成功由已Response status和断言结果决定当选中Ignore Status时Response status被强制设置为success不执行进一步的断言判断。仅第一次断言时使用
模式匹配规则
1、包括响应内容包括需要匹配的内容即代表响应成功支持正则表达式
2、匹配响应内容要完全匹配需要匹配的内容即代表响应成功大小写不敏感支持正则表达式。
3、Equals响应内容要完全等于需要匹配的内容才代表成功大小写敏感需要匹配的内容是字符串正则表
达式
4、Substring返回结果包含指定结果的字串但是 subString 不支持正则字符串
5、否不进行匹配
Custom failure message 自定义失败消息

八、监听器

1、察看结果树

察看请求发送和返回的信息

查看结果树可以放在线程组下或者某个配置下右键>>>添加>>>监听器>>>查看结果树
在这里插入图片描述
所有数据写入一个文件
1、文件名可以通过浏览选择一个文件这样jmeter在执行的过程中会将所有的信息输出到文件也支持打开一个结果文件进行浏览
2、Log/Display Only显示日志内容
仅日志错误表示只输入报错的日志信息
Successes表示只输出正常响应的日志信息
不勾选表示输出所有的信息
3、Configuer配置需要输出的内容
Search 在输入框中输入想查询的信息点击查找Search可以在请求列表中进行查询并在查询出的数据上加上红色的边框
结束数显示类型切换 通过结果树上面的下来看可以进行切换包含多种显示方式默认Text
取样器结果 取样器的详细结果可以切换取样器的显示方式Raw/Parsed
请求 显示当前取样器发送的详细请求内容支持查找
响应数据 显示请求得到的响应内容支持查找
Scroll automaticlly? 当执行的取样器较多设置是否滚屏显示

2、聚合报告

查看结果树可以放在线程组下或者某个配置下右键>>>添加>>>监听器>>>查看结果树

所有数据写入一个文件
1、文件名可以通过浏览选择一个文件这样jmeter在执行的过程中会将所有的信息输出到文件也支持打开一个结果文件进行浏览
2、Log/Display Only显示日志内容
仅日志错误表示只输入报错的日志信息
Successes表示只输出正常响应的日志信息
不勾选表示输出所有的信息
3、Configuer配置需要输出的内容

Label请求名称
# 样本请求个数
平均值响应时间 ms毫秒
中位数响应时间 ms毫秒
90% Line响应时间 ms毫秒
95% Line响应时间 ms毫秒
99% Line响应时间 ms毫秒
最小值响应时间 ms毫秒
最大值响应时间 ms毫秒
异常%错误率
吞吐量吞吐量
接收KB/sec每秒接收多少KB
发送KB/sec每秒发送多少KB


总结

好好学习、天天向上

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6