首页 > 其他分享 >Jmeter:图形界面压力测试工具

Jmeter:图形界面压力测试工具

时间:2023-04-28 11:01:05浏览次数:42  
标签:请求 图形界面 线程 测试 测试工具 填写 Jmeter 链接


Jmeter是一款强大的图形界面压力测试工具,完全用Java写成,关于Jmeter的介绍,网上其实有不少的文章,我原本是不想再重复写类似文章的,但我发现有些很关键性的,在我们测试中一定会用到的一些设置或操作很少见到有文章写清楚的,比如有这样的一个常见问题:如何对一个网站的多个链接进行压力测试?因为通常情况下,我们要测试的不是一个链接,假如我们测试的是某一网站的话,而这些链接我们通常都是写入到一个文本文件中,测试的过程中,会随机读取文件中的链接进行压力测试,我们所熟知的一些压力测试工具,例如Siege就可以这样干。

在我使用Jmeter的过程中,我发现我周围有之前使用过Jmeter的同事,但即使如此,他们对如何将多个链接写入到文本文件中并随机读取进行压力测试也不清楚,故我打算还是在有空的时候写一篇这样的文章,以方便使用者。

一、 官方网址

http://jakarta.apache.org/jmeter/

二、 运行

下载解压后,在目录jakarta-jmeter-2.4\bin下可以见到一个jmeter.bat文件,双击此文件,打开初始界面如下图:

注意的是上面显示的是中文,如果你想使用其他语言,比如英文,那么通过菜单选项->选择语言->英文即可,当然转为中文也是同样操作。

三、 运行预准备

我们现在要对子猴博客来进行一番压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。

1、  建立一个线程组,如下图

为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问网站。

线程组创建界面如下图:

 

名称可以随意填写,默认选中“继续”即可。

线程属性部分中,线程数是启动多少个线程,我这里填写的是60,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写120,那么120/60=2表示60个线程间每隔2秒钟请求网站。

循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里填写的是1000.

每次修改一个设置后,别忘记了保存一下。

2、  设置请求服务器、压力链接等信息

接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。

右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

名称:随意填写

注释:可有可无

服务器名称或IP:我这里填写 zihou.me

端口号:我这里填写80

Timesout部分可以不填

HTTP请求部分的协议:http,方法我选择的是GET,Content encoding我填的是UTF-8.

路径

这里值得一提的就是这个路径,假如你只是对一个链接进行压力测试,那么这里就非常简单了,你就直接填写一个链接就够了,比如http://www.zihou.me,但很多情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么干,如图:

 

打开界面如下图:

在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件text.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:

然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:

${__StringFromFile(E:\test\test.txt,,,)}

在测试文件中,我们每行写一个URL链接,如下格式:

2011/03/26/3054

2011/03/26/3052

2011/03/26/3042

2011/03/25/3040

2011/03/25/3034

2011/03/24/3027

注意,每行前面并没有http://www.zihou.me这样的信息,因为我们在前面已经填写了服务器地址为zihou.me,这里就没必要再为每个url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分,但很多时候url后面跟的都是各参数,比如http://www.zihou.me/p?a=1&b=3,如果是这种情况,则上面的链接可以写为:

a=1&b=3这样的形式。

现在我们可以来填写前面所说的路径了,如下:

/ ${__StringFromFile(E:\test\test.txt,,,)}

这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。

另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。

路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。

同请求一起发送参数部分

如果你仅仅是对某一个固定的页面进行压力测试,那你就可以不用进行上面所说的在文本文件中设置URL的过程了,直接在这里设置就行了,这里的名称就是参数名,值就是参数值,在这里添加就OK了,但你如果是压力多个链接,那这里你可以不用填。

3、查看运行结果

上面设置好后,接下来很自然的想到如何查看运行结果呢?Jmeter在这方面提供了好些个查看方式,有表格形式,有曲线形式等等,我个人认为查看表格形式就足够了!

鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

弹出界面如下图:

 

当然,你也可以选择其他查看方式,你也可以看到在监听器菜单中,有好多种方式。

四、 运行

好了,现在我们终于可以运行了!

选择菜单项运行->启动,如下图:

当然,在运行前,你得把所有修改都保存了。

运行后的结果表格如下:

各属性如下:

Sample:每个请求的序号

Start Time:每个请求开始时间

Thread Name:每个线程的名称

Label:Http请求名称

Sample Time:每个请求所花时间,单位毫秒

Status:请求状态,如果为勾则表示成功,如果为叉表示失败。

Bytes:请求的字节数

如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

在下面还有几个参数

样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。

平均:每个线程请求的平均时间

最新样本:表示服务器响应最后一个请求的时间

偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布(这个我不是很理解)。

在上面的参数中,我个人认为只要看Status和Bytes这两个就够了。

好了,主要的就介绍这么多了,其实Jmeter做压力测试的范围远远不止于对Web,它还可以用于Java小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器等等,更多的使用可以根据自己的需要去研究掌握。

最后还提到的一点是:你一定注意到了,HTTP请求和结果查看都是在线程组这一节点下创建的,其实,你也可以不用一定要在线程组下创建,你在测试计划下建立也可以,但创建在线程组下面可以使得我们的测试意图一目了然,也就是我们的HTTP请求和结果查看都是基于我们设定的线程组的。

标签:请求,图形界面,线程,测试,测试工具,填写,Jmeter,链接
From: https://blog.51cto.com/u_16087105/6233589

相关文章

  • c# winform 辅助测试工具,方便记录错误信息,方便查看调试错误,用INI存储,可脱离数据库...
    测试的时候做的一个辅助测试工具在找到了bug的时候可以方便的记录下出错的页面,出错方式,错误信息和解决办法错误信息都保存到一个ini文件下,可通过软件查看更加直观当然了,因时间仓促做的并不完美,源码提供下载,有兴趣的可自行修改,当然改完了也给我看看更好......
  • jmeter参数化的6种方式
    1.用户自定义变量:添加“配置元件”->“用户定义的变量”。“名称”中输入变量名称,此处以登录为例,定义两个变量username和password。“值”中可以直接输入值,也可以通过Jmeter的函数__CSVRead,__StringFromFile从csv或dat文件中读取,还可以通过前缀加随机数的方法设置参数。 2.用......
  • jmeter使用教程
    基础配置1.设置jmeter页面为中文2.设置响应数据默认编码utf-83.扩展jar包存放位置常用工具前置工具常用函数计数${__counter(,)}随机数${__Random(1,10,)}随机字符串${__RandomString(1,abcde)}当前时间${__time(yyyy-MM-ddhh:mm:ss)}提取器json提取器正则......
  • Jmeter插件管理器安装
    打开Jmeter官网:https://jmeter-plugins.org/install/Install/点击下载插件: jmeter-plugins-manager-1.8.jar,如下图: 将下载的插件放到Jmeter安装包的lib/ext目录下,然后重启Jmeter ......
  • 如何在jmeter中把响应中的数据提取出来并引用
     jmeter做接口测试过程中,经常遇到请求需要用到token的时候,我们可以把返回token的接口用后置处理器提取出来,但是在这种情况下,只能适用于当前的线程组,其他线程组无法引用到提取的token变量值,所以必须要生成全局变量让测试计划下的所有线程组都可以引用变量。同一个线程组下提......
  • Jmeter分部式部署(windows)
    1、前提条件关闭调度机和执行机的防火墙所有客户端在同一个子网各个机器在相同的目录下安装相同版本的Jmeter各个机器在相同的目录下安装相同版本的JDK如果脚本涉及读取外部参数化文件,如CSV文件,需要将文件上传到每个执行机2、调度机(master)配置2.1配置jmet......
  • 达梦读写分离分发测试(Jmeter 压测)
    1. 测试目的本次测试目的主要是验证达梦读写分离集群是否生效,查询负载请求是否会自动分发给备库执行2. 达梦读写分离部署(一写一读,过程忽略)配置ip地址实例名端口号数据库版本主库192.168.145.66DM6652364-2-98-21.12.16-153423-10040-SEC......
  • 接口测试工具-Postman使用详解
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 性能测试-全栈性能测试修炼宝典jmeter实战【杭州多测师_王sir】【杭州多测师】
    全栈性能测试修炼宝典jmeter实战中关于tps计算和并发线程数的计算、以及性能场景的设计 ......
  • jmeter中get/post请求不同的参数传入
    Content-Type与JMeter接口测试的传参方式有很大关系一、常见Content-Type有三种:1).content-type:application/x-www-form-urlencoded  默认格式,当没有在信息头指定Content-Type的时候,默认使用这种格式传参key1=value1&key2=value2.......2). content-type:application/json......