Jmeter基础教程
Jmeter
1.JDK安装
由于Jmeter是基于java开发,首先需要下载安装JDK
1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. JDK下载
3. 安装下载的JDK
4. 配置系统环境变量
2 JMeter安装
- 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
- 下载最新JMeter下载完成后解压zip包
- Jmeter文件目录介绍
- 双击JMeter解压路径(apache-jmeter-5.1.1\bin)bin下面的jmeter.bat即可运行
3. Jmeter八类可执行元件
3.1可执行元件
1、配置元件
用来提供对静态数据配置的支持。例CSV Data Set config可以将本地数据文件形成数据池(Date Pool)。
2、定时器(具有LR的Think_time功能)
用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。可以理解为模拟用户思考时间
3、前置处理器
用于在实际的请求发出之前对即将发出的请求进行特殊处理。例当url中有SessionID一类的信息时,可以通过该处理器填充发出请求实际的SessionID。
4、后置处理器(具有类似于LR中的关联功能)
用于对Sampler发出请求后得到的服务器响应数据进行处理,一般用于提取响应中的特定数据。
5、断言(具有类似于LR中的检查点功能)
用于检查测试中得到的响应数据是否符合预期。断言一般用来设置检查点,验证测试过程中的数据交互是否与预期一致。
6、监听器(具有类似于LR中的日志功能)
用来对测试结果数据进行处理和可视化显示的一系列原件。图形结果、查看结果树、聚合报告等都是比较常用的原件。注意:监听器不是用来监听系统资源的元件
7、取样器–Sampler
是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,如 HTTP Request Sampler ,FTP Request Sampler 等,每一种不同类型的Sampler可以根据设置的参数向服务器发送不同的请求。
8、逻辑控制器
逻辑控制器的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。分为两类元件:一类用于控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有 如果(If)控制器、Swirch控制器、Runtime控制器、循环控制器等。另一类用来对Test Plan中的脚本进行分组,方便Jmeter统计执行结果以及脚本运行时的控制。如事务控制器、吞吐量控制器等。
3.2元件的执行顺序
1、配置元件(Config Elements)
2、前置处理器(Pro-processors)
3、定时器(Timers)
4、取样器(Sampler)
5、后置处理器(Post-processors)
6、断言(Assertions)
7、监听器(Listeners)
需注意事项:
a)前置处理器、后置处理器和断言等元件功能对取样器作用。因此,如果在它们的作用域内没有任何取样器,则不会被执行;
b)如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行。
4.测试实例
我们选取最常见的百度搜索接口:
4.1 接口地址
http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试
4.2 请求参数
ie:编码方式,默认为utf-8
wd: 搜索词
4.3 返回结果
搜索结果,我们可以通过校验结果中是否含有搜索词wd来判断本次请求成功或失败。
5.JMeter脚本编写
jmeter打开后会自动生成一个空的test plan,可以基于这个这个测试计划建立自己的测试计划
5.1 添加线程组
右键点击“测试计划” -> “添加” -> “Threads(Users)” -> “线程组”
这里可以配置线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数:
线程组参数详解:
1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
4. 延迟创建线程直到需要:直到需要时延迟线程的创建。
5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
右键点击“线程组” -> “添加” -> “取样器” -> “HTTP请求”
测试接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试,可以参考下图填写:
Http请求主要参数详解:
1.Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80 ,可不填
2.Http请求
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
3.同请求一起发送参数
在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”
5.3 添加察看结果树
右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter性能测试_百度搜索“。
5.4 添加用户自定义变量
我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”:
新增一个参数wd,存放搜索内容:
并在Http请求中使用该参数,格式为:${wd}
5.5 添加断言
右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”
我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试的模式中:
5.6 添加断言结果
右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”
这时,我们再运行一次就可以看到断言结果成功或失败了
5.7 添加聚合报告
右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告
这样,我们就完成了一个完整Http接口的JMeter性能测试脚本编写。
6. 执行性能测试
6.1 配置线程组
点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s
6.2 执行测试
点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。
7. 分析测试报告
待性能测试执行完成后,打开聚合报告可以看到:
聚合报告参数详解:
1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
2. #Samples(样本):请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3. Average(平均值):平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
4. Median(中位数):中位数,也就是 50% 用户的响应时间
5. 90% Line:90% 用户的响应时间
6. Min(最小值):最小响应时间
7. Max(最大值):最大响应时间
8. Error%(异常):错误率——错误请求数/请求总数
9. Throughput(吞吐量):吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。
Jmeter基础教程相关推荐
- Jmeter基础教程合集
环境搭建 1.安装java 8.0以上版本 2.下载jmeter并安装.安装参考网址:https://blog.csdn.net/wust_lh/article/details/86095924 3. ...
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- [SQL基础教程] 1-5 表的删除和更新
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...
- python 包用法_Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...
- Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...
- Python培训基础教程都教哪些
根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...
- 深度学习之Pytorch基础教程!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...
- python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...
时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...
- %3c- r语言运算符,R语言基础教程之运算符
原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...
- python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类
一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...
最新文章
- 用树莓派获取天气状况
- JSP+servlet生成验证码并验证
- ASP.NET MVC项目 解决session失效
- [BUUCTF-pwn]——mrctf2020_shellcode
- 信息奥赛一本通(1413:确定进制)
- 小汤学编程之JAVA基础day13——I/O流
- Python基础__Python序列基本类型及其操作(1)
- 公司安排员工扫地,引发员工不满,程序员:保洁阿姨都请不起?
- matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
- Jsp+Ssh+Mysql+Redis实现的Java Web订餐点餐
- android定义dialog
- java 过滤js事件_java中的过滤器与监听器
- 如何正确获取安卓内置SD卡的路径
- 如何利用情感词典做中文文本的情感分析?
- PS学习笔记--去掉图片上不想要的部分
- 补助系统C语言,领钱了!全国各省信息系统项目管理师证书技能提升补贴说明...
- Web服务器及性能优化
- Dubbo 线上 Thread pool is EXHAUSTED 问题跟踪
- Python开发——8.模块
- 流行和声(7)min7b5/半减七和弦
热门文章
- ibm服务器刷主板系统,IBM X3850 X5服务器更换主板后修改主板信息
- pgAdmin III简介
- 金税三期工程第二阶段数据级灾备项目需求
- Maven Pom文件详解
- android zip winrar,WinRAR Zip Unzip Archive
- php709,深度爆料评测bt2020与bt709有什么区别?哪个好?良心点评实际情况
- 广义S变换的地震高分辨率处理中的应用
- oracle11 g ora 03113,解决oracle11g ORA-32004: obsolete or deprecated parameter(s)
- qt中使用mysql模糊查询_mysql数据库模糊查询简介
- 在Java编程中,为什么char类型数组可以直接用数组名打印,而其他类型数组打印结果而是地址值。