百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

JMeter教程|0到1学会接口性能压测第1课-认识JMeter

bigegpt 2024-08-04 11:21 9 浏览

之前我们学会了的如何用LoadRunner工具做性能压测,如果还没有领取同步资料的伙伴可以加我领取:flyhappy111(vx)。今天开始咱们来学习另外一款免费开源的接口性能测试工具——JMeter,持续更新,欢迎关注!

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。


01JMeter的作用

  • 能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC;
  • 完全的可移植性和100% 纯java;
  • 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包;
  • 完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样;
  • 精心的GUI设计允许快速操作和更精确的计时;
  • 缓存和离线分析/回放测试结果;


02JMeter下载与安装

由于JMeter是基于java开发,首先需要下载安装JDK,配置环境变量。JMeter最低要求Java 8,可兼容更高版本,官网建议使用最低要求版本。

JMeter官网下载地址:

https://jmeter.apache.org/download_jmeter.cgi

下载完成后解压zip包,找到bin目录下xxxxx\bin\jmeter.bat双击启动Jmeter即可。

当JMeter以GUI模式运行时,窗口主要由三部分构成:

1. 功能区

上方菜单栏,下方工具栏。菜单栏展示了JMeter提供的功能菜单,而工具栏中的图标是常见功能的快捷方式。

2. 视图区

以树状结构呈现JMeter元素,其中“Test Plane”是树的根节点,每一个节点就是一个JMeter元素。

在此区域可以添加、删除节点,或者通过拖曳调整节点的位置。

3. 内容区

在视图区选中一个JMeter元素节点,相应地在内容区则会显示该元素的内容。可以对其内容进行查 看、设置等操作。


03JMeter基础设置

JMeter的语言切换

临时方法:依次点击 Options → Choose Language → Chinese(Simplified) 可切换为简体中文,仅针对本次,关闭Jmeter后下次启动会恢复默认语言。

永久方法:打开Jmeter解压后文件下的bin目录,找到jmeter.properties文件并用编辑器打开,在#language=en下面插入一行language=zh_CN,修改后保存,重启Jmeter界面默认显示为中文简体。

修改Jmeter默认编码为utf-8解决控制台乱码

  • 打开Jmeter解压后文件下的bin目录,找到jmeter.properties文件并用编辑器打开
  • 在#The encoding to be used if none is provided (default ISO-8859-1)、#sampleresult.default.encoding=ISO-8859-1
  • 下面插入一行#The encoding to be used if none is provided (default utf-8)、sampleresult.default.encoding=utf-8
  • 修改后保存重启Jmeter


04JMeter测试组成

JMeter构建测试类似于组装一台智能电子设备,比如智能手机。智能手机由CPU、内存、输入输出设 备(比如USB接口,摄像头等)、屏幕、电池等一系列物理部件构成的。

JMeter测试也是由一系列JMeter元素组合起来构成的,JMeter提供了构建测试的所有元素,你可以 随心所欲的将这些元素组装起来完成你想要的测试。

JMeter元素有以下四种类型的测试元素:

1)测试计划

2) 线程组

3) 组件

包含配置元件、定时器、前置处理器、后置处理器、断言与监听器

4) 控制器

包括取样器和逻辑控制器


NO.1测试计划

测试计划描述了JMeter测试在运行时执行的一系列步骤。完整的测试计划由一个或多个线程组、逻辑 控制器、取样器、监听器、定时器、断言和配置元件组成。

测试计划元素是JMeter测试树的根节点,是唯一的,所有的测试元素节点都位于根节点之下。


NO.2线程组

在手工测试中,测试用例由测试工程师手动执行完成。而性能测试与自动化测试的测试用例由选择的测 试工具代替测试工程师来执行。JMeter执行测试的任务是由线程组来完成的。打个比方,线程组相当于手工测试中执行测试用例的测试工程师。

线程组控制JMeter用来执行测试的线程数。要模拟多少个用户(称之为虚拟用户)来执行测试,可以 通过修改线程组的线程数来实现。比如将线程数设置为10,表示模拟10个用户执行测试。

所有的取样器与逻辑控制器都必须位于线程组下,从这个角度理解,JMeter测试计划真正开始于线程组。其他元素,例如监听器,可以直接放在测试计划下,在这种情况下,它们将作用于所有的线程组。

一个测试计划下可以有多个线程组,在测试计划中可以配置以并行或顺序方式启动多个线程组。


NO.3组件

JMeter中最基本的元素为元件,元件是JMeter测试中的最小功能单元,每个元件都具有某种特定的 功能。比如“HTTP Request”取样器元件,可以实现HTTP请求发送的功能。

JMeter提供了很多元件,为了方便用户使用与管理众多的元件,JMeter将多个功能类似或逻辑上相 关的元件归为一类,称为组件。

JMeter包含六大组件:配置元件、定时器、前置处理器、后置处理器、断言、监听器。

  • 配置元件
配置元件与取样器密切相关。类似于配置文件之于软件,软件配置文件可以影响软件的行为;
同样通过配置元件可以新增或修改请求内容,实现对请求的自定义。
  • 定时器
默认情况下,JMeter线程按顺序执行取样器而不会出现暂停的情况。通过将定时器添加到线程组来指 定延迟。如果不加延迟,JMeter可能会在很短的时间内发送过多的请求到服务器,导致服务器负载过 重而崩溃。
定时器可以使在其作用范围内的每个取样器执行前延迟一段时间。
  • 前置处理器
前置处理器在进行取样器请求之前执行一些操作。
如果前置处理器附加到取样器元素,那么它将在该取样器元素运行之前执行。
前置处理器经常用于在运行之前修改取样器请求的设置,或更新未从响应文本中提取的变量。
  • 后置处理器
后置处理器在取样器请求完成后执行一些操作。
如果后置处理器附加到取样器元素,那么它将在该取样器元素运行之后执行。
后处理器通常用于处理响应数据,从中提取需要的值。
  • 断言
断言用于验证取样器请求或对应的响应是否返回了期望的结果。
JMeter测试是否执行成功,结果是否预期,都可以通过添加断言来进行验证。
  • 监听器
监听器可以在JMeter执行测试的过程中搜集相关的数据,并将这些数据不同的形式,比如树、图、报 告等呈现出来。
比如,“图形结果”监听器绘制响应时间的曲线图,“查看结果树”监听器显示取样器请求和响应的详细 信息等。
此外,有些监听器还可以将搜集到的测试数据保存到文件中以供以后使用。


NO.4控制器

  • 取样器

取样器用于构建发给服务器处理的请求,即告诉JMeter怎样将请求发送到服务器。例如,若要发送HTTP请求,可以选择“HTTP Request”取样器,同时还可以通过添加配置元件来自定义请求。

  • 逻辑控制器

取样器请求默认是以先后顺序依次执行的,某些情况下满足了复杂的业务/场景需求。通过逻辑控制器 可以控制JMeter发送请求的逻辑,来实现复杂的业务/场景。比如有选择性执行某些请求,循环执行请求,整体执行逻辑上有依赖关系的请求,交替执行请求等。

下期分享JMeter执行顺序及简单的案例,敬请关注!

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...