Jmeter的基础讲解
1.JMeter讲解
1.JMeter是什么?
我这里引用一下百度百科的标准解释:JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
2.JMeter测试计划要素是什么?
要素一:一个脚本中测试计划只能有一个
要素二:一个测试计划中至少要有一个线程组
要素三:至少要有一个取样器
要素四:至少要有一个监听器
3.JMeter运行原理是什么?
在JMeter中我们是以线程的方式来运行的。JMeter是通过线程组来驱动多个线程(类似LoadRunner中的虚拟用户)运行脚本对被测试的服务器发起负载,每一个负载机上都可以运行多个线程组。JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,并且命令行的运行方式对于负载机的资源消耗会更小。
2.基本使用
1.界面介绍
菜单栏
1. 文件
- 关闭:关闭当前打开的JMX文件 。
- 打开:打开一个JMX文件。
- Templates 模板:对常用的功能使用指导。主要有录制、JDBC测试、webserver测试等等,分为基本步骤和详细截图。 如果点用户链接,则会链接到apache jmeter 网站查看详细的步骤和截图指导。
- 合并:会将多个JMX合并为一个 。
- 保存测试计划:仅保存测试计划 工作台中添加的内容不会被保存。
- 保存测试计划为:将测试计划另存。
- 另存为:可以对工作台和测试计划或者测试例另存为JMX 注意另存为是点哪个位置,存的就是哪个内容。
- save as Test fragment:存为一个测试片段,只有线程组、测试计划、工作台不能 保存为一个测试片段。
- Revert:还原,将现在的jmx还原为已经保存过的JMX
2. 编辑
- Save Node As Image(保存节点为图片): 将菜单的配置GUI保存为图片。
- Save Screen As Image(保存屏幕为图片): 将整个jmeter界面保存为图片。
- Toggle(切换):类似于java中设置断点的意思。
3. 查找
- Search: 搜索所有配置中匹配的项,匹配成功显示为红色。
- Reset Search: 重置搜索,清除搜索结果。
4. 运行
- 启动: 启动运行测试计划
- Start no pauses(不停顿开始): 无停顿启动运行测试计划 1,可以忽略定时器 2,再启动时运行更快
- 远程启动/停止: 指定一个远程agent运行/停止测试计划。
- 远程全部启动/停止: 让所有远程agent运行/停止测试。
- 停止: 停止执行测试计划。
- 关闭: 关闭测试计划。
- Remote Shutdown: 关闭一个指定远程agent。
- Remote Shutdown All: 关闭所有远程agent。
- 远程退出: 指定一个远程agent退出执行。
- 远程退出全部: 所有远程agent退出执行。
- 清除: 清除选择菜单的执行结果。
- 清除全部: 清除所有菜单的执行结果。
5. 选项
- 函数助手对话框: 在编写脚本的时候,使用函数助手可以协助生成指定的代码。
- 外观: jmeter界面样式。
- Log Viewer: 日志查看器,选中后可以在右下方查看运行日志。
- SSL管理器: 导入外置的SSL管理器,用于更好的管理证书, JMeter代理服务器不支持记录 SSL(https)。
- 选择语言: 选择界面的语言,目前支持中文、英文、法语、德语等等。中文版很多翻译不全,可以直接使用英文版的。
- Collapse All: 展开所有菜单。
- Expand All: 折叠所有菜单
6. 帮助
- What’s this node?: 当鼠标放在某个菜单的时候显示其含义。
- Enable debug: 开启调试。
- Disable debug: 取消调试。
- Create a heap dump: 创建堆转储。这是创建当JVM崩溃的堆转储。这个文件可以用堆分析工具(如JHAT),以确定根本原因进行分析。
2.简单的模拟性能测试
(不懂的可以转换中文)
(测试百度网站)
1.线程组
进程: 一个正在执行的程序对应一个进程
线程: 一个进程有多个执行线程
线程组: 按照线程性质对线程分组
三者关系: 一个进程有多个线程组,一个线程组有多个线程
操作:在测试计划>>添加>>Threads>>线程组
1. 线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
2. 线程数:虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个 线程数。
3. 准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
4. 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送 100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止 运行脚本。
5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
6. 持续时间(秒):测试持续时间
7. 启动延迟(秒):测试延迟启动时间
2.sampler(采样器)
作用:向服务器发送请求,记录响应信息,记录响应时间的最小单元(http,https,ftp,jdbc等)
1.操作:在线程组>>添加>>sampler>>http请求(常用)
一个HTTP请求有着许多的配置参数,下面将详细介绍:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号。
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、 DELETE等。
Content encoding :内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
注意事项:
1:参数传递中Parameters和Body Data不能同时使用,必须要保证其中至少一个为空,否则提示错误
2:在传递的参数中,接口参数名和参数值两边不能有空格,否则会报错
3.监听器
作用:监听器可以动态的监控JMeter测试执行的过程,实时查看测试结果
1.操作:在线程组>>添加>>监听器>>聚合报告/查看结果树
通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过
Thread Name:线程组名称
Sample Start: 启动开始时间
Load time:加载时长
Latency:等待时长
Size in bytes:发送的数据总大小
Headers size in bytes:发送数据的其余部分大小
Sample Count:发送统计
Error Count:交互错误统计
Response code:返回码 Response
message:返回信息 Response
headers:返回的头部信息
lable:对应每一个http请求,显示的是http请求的Name,如百度http请求name为baidu
#Samples:表示这一次的测试中一共发出了多少请求,如上图所示,sougou和baidu的http请求 每个都发出30个请求
Average:平均响应时间,指的是所有的请求的平均响应时间,如上图的30个请求的总的响应时间 除以30得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了“事务控制器” 时,则以事物为单位显示平均响应时间
Median:中位数,也就是50%用户的响应时间
90%Line:90%用户的响应时间
Min:最小响应时间
Max:最大的响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数,如上图所示,本次的测试中,sougou的 http请求66.6%的请求出错,而baidu的请求则没有出错的请求
Throughput:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别 为6.6个每秒,6.2个每秒
Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位
4.jmeter中插件的讲解
jmeter组件描述
1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。 如:HTTP 、ftp请求等等。 4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显 示、统计一些数据(吞吐量、KB/S……)等。 6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确,非常实用 7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。 5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的 请求序列。 8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。 9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的 设置,后置处理器则常常用来处理响应的数据。
1.断言
作用:断言(Assertions)可以用来判断响应的数据是否符合预期
1.响应断言
操作:在线程组>>添加>>断言>>响应断言
2.json断言
操作:在线程组>>添加>>断言>>json断言
3.Xpath断言
定义:Xpath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。xpath基于XML的树状结 构,提供在数据结构树中寻找节点的能力
操作:在线程组>>添加>>断言>>xpath断言
2.定时器
定时器(Timer)负责定义请求之间的延迟间隔
操作:在线程组>>添加>>定时器>>固定定时器
3.逻辑控制器
1.事务控制器
操作:在线程组>>添加>>逻辑控制器>>事务控制器
2.循环控制器
操作:在线程组>>添加>>逻辑控制器>>循环控制器
4.后置处理器
http请求默认值,会在发送http请求的时候,自带这些参数,复用的作用
1.http请求默认值(常用)
操作:线程组>>配置原件>>http请求默认值
2.正则表达式
常见的正则表达式如下(在线正则表达式)
操作须知
1)确定取值的范围
2)确定取值的左右边界,最好是能够唯一确定的值的边界
3)如果要查看我们的值是否正确,可以使用Debug Sampler 引用${变量名}
操作:线程组>>添加>>后置处理器>>正则表达式提取器
3.JSON Extractor
通过json表达式提取数据
操作:线程组>>添加>>后置处理器>>JSON Extractor
5.监听器
作用:css/JQuery测试程序只适用于文本响应,可以根据Jsoup或Jodd对响应数据进行过滤和查看
1.察看结果树之cssJQuery_Tester
操作:线程组>>监听器>>察看结果树(cssJQuery_Tester)
2.:察看结果树之HTML
html模式有三种选项 HTML:HTML视图将响应以HTML方式展示。渲染的HTML可能无法和游览器显示的界面比较,图片和样式表等不 会下载,界面显示比较乱 HTML(source formatted),呈现出由Jsoup格式话的HTML源代码,跟Text模式基本没有区别 HTML(download resources),会下载HTML代码引用的图像,样式表等,呈现出更具体的HTML样式
3.察看结果树之json模式
json模式中有2中选项 JSON:JSON视图将显示树形风格的响应,和Text有明显的区别 JSON Path Tester:JSON路径测试视图将允许测试JSON-PATH表达式,从特定响应中查看提取的数据
4.察看结果树之Document
Document:视图将显示从各种类型的文档中提取文本
解决方式:下载tika-app-x.x.jar,并放在JMETER_HOME/lib目录下
5.察看结果树之RegExp Tester
RegExp Tester:Regexp仅使用于我那本响应。点击"Test"按钮,系统将应用regexp对上面板中的文本进 行查询,结果显示在面板中
示范:视频 提取里面的文本内容视频 name=tj_trvideo class=mnav>(.*?) 注意点:提取的内容,左右边界时唯一的
6.察看结果树之Xpath Tester
Xpath Tester:Xpath仅适用于文本响应。上面板显示了纯文本,点击"Test"按钮,系统就会刷选,显示最 终的信息
可以在游览器(谷歌)中选定元素右键copy对应的copy xpath
6.配置原件
1.用户自定义变量
当脚本中重复出现相同的变量的时候,可以使用用户定义变量来代替相同的参数
操作:线程组>>配置原件>>用户定义的变量
2.请求元件之参数化txt
操作:线程组>>配置原件>>CSV数据文件设置
当进行批量数据操作的时候,为了方便可以使用参数化来实现
3.请求元件之参数化csv
当进行批量数据操作的时候,为了方便可以使用参数化来实现
操作:线程组>>配置原件>>CSV数据文件设置
在注册接口中,用户名不能重复,我们需要使用不同的手机号注册,如果使用TXT可能不能很好的管理 数据,如果使用CSV类型,就方便很多,其他的用法和TXT是一样的,只是创建数据更加方便,我们以注 册接口完成操作:http://xg.plk123.cn/api/user/reg.do (参数phone,yzmCode,userPwd,agentCode)
7.函数助手
1.csvRead
当进行批量数据操作的时候,为了方便可以使用csvRead函数助手来实现
操作:选项>>函数注释对话框>>_CsvRead
2.randomstring
有的时候有一些参数是不断变化的,我们如果使用csv去做,还是要准备很多不同的数据,但是如果我们用 randomstring的话,就可以避免这个问题,但是随机生成的可能会有重复的数据
Jmeter的基础讲解相关推荐
- Jmeter使用基础笔记-写一个http请求
前言 本篇文章主要讲述2个部分: 搭建一个简单的测试环境 用Jmeter发送一个简单的http请求 搭建测试环境 编写flask代码(我参考了开源项目HttpRunner的测试服务器),将如下的代码保 ...
- mysql 导出dmp文件_MySQL数据库基础讲解
# 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...
- 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行
NCL基础讲解(二)--NCL安装与运行 兰溪之水2015-11-04 上一期已经给大家简单介绍了NCL的基本情况,既然NCL在科学数据分析和可视化方面有那么多优点,那还等什么,让我们一起" ...
- C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)
C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...
- 前端菜鸟必学!less使用基础讲解
前端菜鸟必学!less使用基础讲解 概述 使用方法 语法简介 嵌套规则 实例 概述 less是动态的样式表语言,通过简单,明了的语法定义,使编写css 的工作变得非常简单,在实际项目开发中,大大提高了 ...
- CISP-PTE 基础讲解
CISP-PTE 基础讲解 前言 渗透基础 owasp top 10 POC和EXP payload,shellcode和webshell CVE编号和CNVD编号 0day漏洞和0day攻击 木马. ...
- C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题、爱因斯坦的数学题、三色球问题与马克思手稿中的数学题)
C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题.爱因斯坦的数学题.三色球问题与马克思手稿中的数学题) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本 ...
- C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏)
C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...
- Unity LeapMotion SDK 基础讲解
Unity LeapMotion SDK 基础讲解 LeapMation SDK 下载 LeapMation Unity 示例场景 下载 LeapMotion 组件解析 LeapServiceProv ...
- C/C++基础讲解(八十六)之游戏篇(解救人质游戏)
C/C++基础讲解(八十六)之游戏篇(解救人质游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...
最新文章
- 商淘多b2b2c商城系统怎么在个人电脑上安装_社交电商系统开发是否有价值?
- MNIST数据集合在PaddlePaddle环境下使用简单神经网络识别效果
- Win10如何打开软键盘?
- 如何修改CMD命令行窗口下的默认路径
- 软件工程软件产品质量要求与评价_软件质量保证(Quality Assurance)中常见的活动...
- vscode Java 11 or more recent is required to run. Please download and install a recent JDK
- 最耐用的手机盘点 网友:我这个能用到品牌商“破产”!
- 插件怎么用_【Anki插件篇】(01)插件介绍
- java window.onload_JavaScript window.onload
- angularjs1-2,作用域、代码压缩
- t检验的p值对照表_第十讲 R-两独立样本t检验
- python 当天零点的时间戳
- 怦然心动(Flipped)-3
- 芴基噁二唑铱配合物|阳离子型铱配合物Ir(F_2ppy)_2(Br_2bpy)+PF-6
- printf中的%f
- CF、MF、FM、FFM浅析
- 单机版Swarm 安装教程和试用
- android 沉浸式菜单栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
- 解决Excel打开UTF-8编码CSV文件乱码的问题
- java框架魔乐_16 魔乐科技 SpringBoot框架开发详解