您当前的位置:首页 > 电脑百科 > 站长技术 > 网站

图文详解压力测试工具JMeter的安装与使用

时间:2020-07-21 09:52:03  来源:  作者:

压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈问题,在这个基础在上再进行针对性的性能优化,也可以帮助我们预估系统的承载能力,使我们能根据其做出一些应对措施。

JMeter简介

图文详解压力测试工具JMeter的安装与使用

 

JMeter是一个使用JAVA开发的Apache开源软件,用于软件的性能评估和压力测试。它最初是为测试Web应用程序而设计的,但此后又扩展到其他测试功能。

JMeter可用于静态和动态资源、Web动态应用程序的性能测试,例如:HTTP、 HTTPS、LDAP、TCP、FTP、SMTP、POP3、IMAP、Shell脚本、数据库、Java 对象,也可以用于对服务器、服务器组、网络或对象上的巨大负载,以测试在不同强度的压力测试下它们的强度和整体性能。

另外,JMeter还可以对应用程序做功能回归测试,通过创建带有断言的脚本来验证你的程序是否返回了你期望的结果。为了最大限度的灵活性,JMeter还支持使用正则表达式创建断言。

下载JMeter

访问JMeter的官网:https://jmeter.apache.org/download_jmeter.cgi,下载最新版本的JMeter,如下图:

图文详解压力测试工具JMeter的安装与使用

 

运行JMeter

在运行JMeter之前,需要安装JDK8,详细安装步骤见图文详解在windows系统中安装JDK。

解压压缩包以后,进入bin目录,双击运行jmeter.bat,首先启动一个CMD窗口,如下图:

图文详解压力测试工具JMeter的安装与使用

 

然后又启动了JMeter的GUI,如下图:

图文详解压力测试工具JMeter的安装与使用

 

其中,注意CMD窗口中的提示:

================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

英文看着不是顺畅,作为一个资深暖男给大家翻译一下:

不要使用GUI运行压力测试!GUI仅用于压力测试的创建和调试。执行压力测试使用CLI模式,就是非GUI。使用下面的命令来执行测试:

 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

并且在批处理文件中修改当前环境变量:

HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"

JMeter默认是英文的,也可以修改为简体中文,通过点击Options->Choose Language进行修改,如下图:

图文详解压力测试工具JMeter的安装与使用

 

创建第一个压力测试

为了演示写了一个网站,URL为http://127.0.0.1:8080/hello,当QPS大于100时HTTP状态码返回429(使用 Alibaba Sentinel实现 )。

1.添加线程组

右键测试计划,点击添加-->线程(用户)-->线程组,如下图:

图文详解压力测试工具JMeter的安装与使用

 

设置线程数为10,Ramp-Up时间(秒)为10,循环次数为100,如下图:

图文详解压力测试工具JMeter的安装与使用

 

线程数:一个用户占一个线程, 10个线程就是模拟10个用户。

Ramp-Up时间(秒): 设置线程需要多长时间全部启动。如果线程数为10 ,准备时长为10 ,那么需要1秒钟启动1个线程。也就是每秒钟启动1个线程。

循环次数:每个线程发送请求的次数。如果线程数为10 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。

2.添加元件

右键线程组,点击添加-->配置元件-->HTTP请求默认值,如下图:

图文详解压力测试工具JMeter的安装与使用

 

设置协议为HTTP,服务器名称或IP为127.0.0.1,端口号为8080,如下图:

图文详解压力测试工具JMeter的安装与使用

 

当所有测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址或端口变更,只需要修改该HTTP请求默认值即可。

3.添加取样器

右键线程组,点击添加-->取样器-->HTTP请求,如下图:

图文详解压力测试工具JMeter的安装与使用

 

设置请求类型为GET,路径为/hello,如下图:

图文详解压力测试工具JMeter的安装与使用

 

4.添加响应断言

右键线程组,点击添加-->断言-->响应断言,如下图:

图文详解压力测试工具JMeter的安装与使用

 

设置测试字段为响应代码,模式匹配规则为相等,测试模式添加200,如下图:

图文详解压力测试工具JMeter的安装与使用

 

5.添加察看结果树

右键线程组,点击添加-->监听器-->察看结果树,如下图:

图文详解压力测试工具JMeter的安装与使用

 

6.添加汇总报告

右键线程组,点击添加-->监听器-->汇总报告,如下图:

图文详解压力测试工具JMeter的安装与使用

 

7.启动压力测试

先点击保存按钮,把测试计划保存起来。然后点击启动按钮,如下图:

图文详解压力测试工具JMeter的安装与使用

 

测试计划就跑起来了。

8.查看报告

察看结果树,请求成功的,如下图:

图文详解压力测试工具JMeter的安装与使用

 

察看结果树,请求失败的(QPS过高,被Alibaba Sentinel限流),如下图:

图文详解压力测试工具JMeter的安装与使用

 

再看一下汇总报告,如下图:

图文详解压力测试工具JMeter的安装与使用

 

9.执行测试计划

前面提到执行测试计划不能使用GUI,必须使用CLI模式,执行以下命令:

jmeter -n -t ../plan/万猫学社.jmx -l ../plan/result.txt -e -o ../plan/webreport

其中,../plan/万猫学社.jmx为测试计划文件,../plan/result.txt为测试结果文件,../plan/webreport为web报告目录。

执行过程如下图:

图文详解压力测试工具JMeter的安装与使用

 

最后生成的网页报告如下图:

图文详解压力测试工具JMeter的安装与使用

 

使用CSV参数化

为了演示对之前的网站进行增强,URL为http://127.0.0.1:8080/hello/{name},其中{name}是一个参数,所以URL可以是http://127.0.0.1:8080/hello/Lucy,也可以是http://127.0.0.1:8080/hello/Lily,同样当QPS大于100时HTTP状态码返回429(也是使用 Alibaba Sentinel实现 )。

1.创建CSV文件

创建一个文本文件,内容为:

1,Alice
2,Eva
3,Jane
4,Lily
5,Lucy

分别为5行,每行分别是id和名称,用英文逗号分隔。然后,对之前的测试计划进行修改。

2.创建CSV Data Set Config

右键线程组,点击添加–>配置元件–>CSV Data Set Config,如下图:

图文详解压力测试工具JMeter的安装与使用

 

文件名称填入刚刚创建的文件,文件编码选择UTF-8,变量名称输入id,name,分别表示与文本文件中每一行的id和name两个变量,如下图:

图文详解压力测试工具JMeter的安装与使用

 

3.修改HTTP请求

修改之前的HTTP请求中的路径为/hello/${name},如下图:

图文详解压力测试工具JMeter的安装与使用

 

4.查看报告

启动测试计划,可以在察看结果树中看到URL的路径已经被替换了,如下图:

图文详解压力测试工具JMeter的安装与使用

 

使用HTTP请求参数化

为了演示对之前的网站新增一个接口,URL为http://127.0.0.1:8080/getName,该接口会随机返回上述文本文件中某个名字,返回格式为JSON,例如:

{"id":1, "name":"Alice"}

对之前的测试计划再进行修改:

1.添加HTTP请求

右键线程组,点击添加–>取样器–>HTTP请求,添加一个新的HTTP请求,名称设置为HTTP请求-getName,路径设置为/getName。为了区分把之前添加的HTTP请求的名称修改为HTTP请求-hello,如下图:

图文详解压力测试工具JMeter的安装与使用

 

2.添加JSON提取器

右键HTTP请求-getName,点击添加–>后置处理器–>JSON提取器,如下图:

图文详解压力测试工具JMeter的安装与使用

 

  • Names of created variables是创建变量的名字,要和HTTP请求-hello的路径/hello/${name}保持一致,所以设置为name。
  • JSON Path expressions是需要提取的key,参照getName接口返回的JSON字符串,设置为$.name。
  • Match No.是在JSON中同样的key取第几个,这里设置为1。
  • Default Values是没有找到key时的默认值,这里设置为OneMore。

最终配置如下图:

图文详解压力测试工具JMeter的安装与使用

 

4.查看报告

启动测试计划,可以在察看结果树中看到一次getName返回的name是Lily,如下图:

图文详解压力测试工具JMeter的安装与使用

 

接下来,调用hello接口时传入的参数就为Lily,所以返回的就是Hello, Lily,如下图:

图文详解压力测试工具JMeter的安装与使用

 

总结

JMeter的功能很强大,还有很多值得大家继续挖掘的。不过,你如果掌握了本文所讲述的功能,基本上可以应付一般的Web压测了。



Tags:JMeter   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前言jmeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用 jmeter 来做接口自动化测试。 你...【详细内容】
2021-11-23  Tags: JMeter  点击:(27)  评论:(0)  加入收藏
以下是详细的步骤1. JDK \Jmeter \ Ant安装:1.1.安装JDK:双击jdk-7u80-windows-x64.exe安装,默认安装到C:\ProgramFiles\Java目录1.2.安装Jmeter:在我的电脑—E盘(建议与...【详细内容】
2021-04-16  Tags: JMeter  点击:(224)  评论:(0)  加入收藏
什么是 API 测试?API 测试其实是一种用程序或工具来发送数据,同时验收系统的返回值的方法。这种测试更偏向于业务实现逻辑。常见的网络协议有 TCP、Http、webservice、socket...【详细内容】
2020-10-19  Tags: JMeter  点击:(128)  评论:(0)  加入收藏
前阶段做了一个小调查,发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中,有高手,自然也会有小白,但有一点我们无法否认,就是每一个高手都是从小白开始的,所以今...【详细内容】
2020-09-09  Tags: JMeter  点击:(132)  评论:(0)  加入收藏
JMeter是Apache组织的开放源代码项目,能做接口测试、功能测试和性能测试。它能够对HTTP和FTP服务器进行压力和性能测试,也可以对数据库进行同样的测试(通过JDBC),还能以多种形式...【详细内容】
2020-09-09  Tags: JMeter  点击:(70)  评论:(0)  加入收藏
方式一:多线程组指定TPS同时并发示例:接口1、接口2、接口3……1、新建线程组1) 右键测试计划,依次选择 添加-Threads-线程组 2) 点击线程组,输入并发数3) 勾选循环次数...【详细内容】
2020-08-11  Tags: JMeter  点击:(358)  评论:(0)  加入收藏
压力测试是目前大型网站系统的设计和开发中不可或缺的环节,通常会和容量预估等工作结合在一起,穿插在系统开发的不同方案。压力测试可以帮助我们及时发现系统的性能短板和瓶颈...【详细内容】
2020-07-21  Tags: JMeter  点击:(110)  评论:(0)  加入收藏
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要...【详细内容】
2020-06-18  Tags: JMeter  点击:(52)  评论:(0)  加入收藏
本文将从负载测试的角度,描述了做一次流畅的5万用户并发测试需要做的事情。你可以在本文的结尾部分看到讨论的记录。快速的步骤概要 编写你的脚本 使用JMeter进行本地测试 Bl...【详细内容】
2020-06-04  Tags: JMeter  点击:(402)  评论:(0)  加入收藏
目标: 能够完成 JMeter 的环境部署及基本使用教程演示环境(环境仅供参考): 系统平台: Windows 平台 系统版本: Windows 10 家庭中文版步骤: 获取 JMeter 部署 JMeter 配置相关...【详细内容】
2020-04-07  Tags: JMeter  点击:(58)  评论:(0)  加入收藏
▌简易百科推荐
今天我们来聊一下北京地区的《ICP经营许可证》有多好办,现在的互联网上提供的商机越来越多,增值电信业务十分火爆,企业通过互联网突破地域的限制,把公司产品卖到更远的地方,同时...【详细内容】
2021-12-17  梦想理应飞翔Yy    Tags:《ICP经营许可证》   点击:(12)  评论:(0)  加入收藏
转自: https://blog.kermsite.com/p/blog-intro/由于格式问题,部分链接、表格可能会失效,若失效请访问原文此专题将详细介绍如何从零开始搭建一个个人博客。Dec 01, 2021阅读时...【详细内容】
2021-12-17  LaLiLi    Tags:个人博客   点击:(7)  评论:(0)  加入收藏
SP证是第二类增值电信业务经营许可证的简称。分为全网SP证和地网SP证。申请经营许可证是在工信部申请,全网SP经营许可证的有效期是5年,全网SP许可证在工信部办理全网SP续期,地...【详细内容】
2021-11-01  s陳述    Tags:sp证书   点击:(39)  评论:(0)  加入收藏
现在还有许多人不知道EDI许可证是什么东西今天我就来给大家讲解一下.EDI许可证就是一种增值电信业务经营许可证。是针对在线数据处理和交易处理业务需求的专业资格证书。 《...【详细内容】
2021-10-28  soberXx    Tags:edi许可证   点击:(75)  评论:(0)  加入收藏
元素的化学概念,如周期表中的化学元素,一切物质都是由元素构成的。对程序员而言,网站建设制作就是代码构成网站。企业网站设计者也收集了各种各样的元素,但并非所有元素都需要运...【详细内容】
2021-10-26  南宁云尚网络    Tags:企业网站   点击:(40)  评论:(0)  加入收藏
在运营网站的过程中,有一件不可忽略的事情。那就是网站上线之前需要完成 ICP 备案。说到这里,很多朋友就提出疑问了~· 什么是 ICP 备案呢?· ICP 备案需要哪些材...【详细内容】
2021-10-22  启测云    Tags:ICP备案   点击:(46)  评论:(0)  加入收藏
最近有朋友问我,我公司有外资就不能申请ICP许可证了么?外资的定义是什么?其实是可以的,但有一个特定条件必须满足,外资公司是指公司有外资股东,比如香港、加拿大、美国、韩国等等,...【详细内容】
2021-10-21  小白速看Z    Tags:ICP   点击:(51)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  我是FEIYA    Tags:https   点击:(44)  评论:(0)  加入收藏
Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。图片来自 包图网先看看结果有多轻量吧: Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索...【详细内容】
2021-09-14    51CTO  Tags:Loki日志   点击:(97)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  小李子说程序    Tags:HTTPS证书   点击:(125)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条