Jmeter压力测试简单教程(包括服务器状态监控)

news2024/11/28 8:40:08

前段时间公司需要对服务器进行压力测试,包括登录前的页面和登录后的页面,主要目的是测试负载均衡的实现效果。不知道是不是因为Jmeter不如loadRunner火爆还是什么,网上关于Jmeter的资料有很多但是大多千篇一律,要么简单弄个页面测试一下,要么全篇都是介绍很多和Jmeter无关的第三方工具,看起来很专业高深,但是作为测试小白来说,看到这样的东西确实头疼。我只是想好好了解一下Jmeter的使用啊,能不能完整的介绍一下啊?我不需要了解那么多其他的第三方工具啊?能不能截个图说的清楚一点啊?这个步骤里的参数是干嘛的啊?对应的什么啊?你的这一步我怎么出现问题了啊?怎么不说解决方法啊。。。这应该是我前段时间查找Jmeter资料内心最多的问题了,真是哔了狗了(我是一个优雅的程序猿,很少讲粗话啦~嘿嘿)。对于使用某种新的东西,我的习惯往往是先把流程完整的跑一遍,记住,是完整,清晰,好歹别人看了之后对应着自己的需求也能照搬着实现,吐槽了够多了,开始进入正题,我把我遇到的坑都说清楚,包括后来怎么从坑里爬出来的。。。

步骤一  安装Jmeter

我用的版本是3.1版本,为什么是3.1,因为3.2有问题,我也是跑了一段时间后才知道3.2版本太新了还是什么的,有些功能就是不行,在此建议大家,不要轻易使用最新版本,次新版本就可以了。安装好了之后Jmeter的bin目录下有个Jmeter.bat文件,双击就能运行了。

步骤二  使用Jmeter测试未登录页面

    运行软件之后,我们当然要找个链接测试一下啦,这里我们以百度为例,我们右击“测试计划”——“添加”——“Threads(Users)——线程组”,这样就建了一个线程组了,这是干嘛,当然是跑线程用的啊。有了线程组之后,我们再右击线程组,“添加”——“配置元件”——“http请求默认值”,这个默认值是干嘛的?里面可以设置一些常用的默认的设置(这不是废话嘛~),在http请求默认值面板里面,我们可以输入要测试的服务器的IP或者域名,这里我们输入“www.baidu.com”,协议是“https”,你要测试的网址如果是http开头那就填“http”,其他默认不管了,这时候点击左上角保存会弹出一个保存框,这是让你保存你现在所做的测试配置,以后需要再测试的话的直接打开保存的jmx文件就行了。保存完了之后,我们再右击“线程组”——“添加”——“Sampler”——“http请求”,哎,刚刚不是添加过了吗?刚刚那个不是哦,刚刚那个只是默认值,只是用来设置一些默认配置,真正发起请求的是“http请求”,在http请求里面我们在“路径”里面输入斜杠“/”就行啦,表示默认路径,IP那一栏就不用输入了,为什么呢?因为在http请求默认值里面已经输过啦,以后可以新建多个http请求,只要修改路径就行了,这样就可以访问同一个网站的不同页面,这就是“http请求默认值”的意义所在,把一些共用的设置写一遍就好了。接着,我们再右击“线程组”——“添加”——“监听器”——“察看结果数”,在这里可以查看到http请求和结果。每次新建组件和修改配置信息都要点击保存,好了,页面配置图如下所示:

    现在我们点击工具栏的绿色运行按钮,就可以在“察看结果树”中看到结果了

    我们新建的“http请求”返回结果200,表明请求成功,从绿色打钩也能看出,上图中的下拉列表框可以选择显示格式,我们选择HTML,切换到“响应数据”就可以看到返回页面,也就是百度首页。

步骤三  设置线程并发数

    刚刚我们完成了一个简单的测试,你也应该感觉到自己啥也没干,就能测试了,其实不然,我们点击“线程组”可以看到线程组的设置页面,默认设置1个线程,1秒启动,循环1次。线程数表示启动多少个线程,Ramp-Up Period表示花多长时间启动所有线程,循环次数表示每个线程的执行次数,例如,我设置线程数10,Ramp-Up Period为10,循环次数2,表示软件将在10秒内启动10个线程,也就是1秒启动1个线程,每个线程执行两次请求。

    此外,我们还可以勾选“调度器”,比如我填入持续时间100,启动延迟0,将循环次数勾选“永远”,表示线程立即启动,执行100秒后停止,注意,如果设置了持续时间和启动延迟,那么下面的启动时间和结束时间就不起作用了,也就不用管了,点击运行即可。

步骤四  设置其他监听器

    之前我们仅仅设置了“察看结果树”这个监听器,我们右击“线程组”——“添加”——“监听器”,里面有好多监听器可供选择,比如图形结果,用表格查看结果,聚合报告等等,这些都是反映测试过程的指标数据。图形结果以图形的形式显示吞吐量、偏移、平均值等信息,表格结果显示每一次请求的时间,返回,发送字节数,连接时间等等,聚合报告里面显示总体请求的吞吐量,错误率等等。下图为表格结果的样式。

   可以看出,图中显示了20个Http请求,分别由10个线程执行,每个线程执行两次,正好符合我们对于线程组的设置。图中每一列的含义分别表示请求序号,开始时间,线程序号,请求名,请求所花的时间,请求状态,请求字节数,发送字节数,等待时长,连接时间。

    聚合报告如下图所示,每一列的含义分别表示请求名称,请求总数,请求的平均响应时间(毫秒),50%的请求的响应时间,90%的请求的响应时间,95%的请求的响应时间,99%的请求的响应时间,最小的响应时间,最大的响应时间,错误的请求率(错误请求数/总的请求数),吞吐量(每秒处理的请求数),接收的字节速率,发送的字节速率。

步骤五  登录测试

    前面我们测试的页面是不需要登录的,现在我们来测试一下登录操作,由于登录操作涉及到具体的内部网址和参数,我这里就用一般网址和参数代替,但是方法是一样的,例如,我们内网IP是1.1.1.1,登录页面是1.1.1.1/login.do,我们将1.1.1.1填入“http请求默认值”,将/login.do填入“http请求”的路径里面,关于登录需要的参数我要特别说明一下,一般来说就是用户名和密码,但是往往还需要其他参数,我们可以通过抓包工具Fiddler进行抓包,我们在网站中进行一次正常登录,可以在Fiddler中看到登录需要的post参数,例如Fiddler中显示登录操作post参数有username,password,type,那么需要在“http请求”里面填入,下图所示。

    点击“添加”按钮就可以添加参数了,保存好后,我们点击运行,就可以在察看结果树中看到登录成功后的页面了,具体的操作和前面一样的。

步骤六  会话保持

    我们进入登录后的页面后,我还想访问例如“我的账户”,“我的信息”等模块怎么办,这些网页需要登录成功后才能访问到,这里我们就需要进行会话的保持,我们右击“线程组”——“添加”——“配置元件”——“httpcookie管理器”,要添加的内容我们可以在察看结果树的“请求”选项卡里面看到,里面可以看到登录需要的cookie,例如JSESSIONID,我们将JSESSIONID填入cookie管理器的参数里面,如下

    此时,我们在http请求里面输入登录后的页面网址,例如“我的信息”等等,就可以请求成功啦。

步骤七  文件读取网址

    我们在“http请求”的路径里面填入的是我们要访问的网页,每次只能填一个,假如我想访问好几个网页,例如首页,通知页,公司介绍页等等,除了新建http请求外,我们还可以将这些网页的地址存储在TXT文件里,例如,我要访问1.1.1.1/index.do,1.1.1.1/information.do,1.1.1.1/company.do,我们可以这样

    网址填入后,我们在Jmeter里面的“选项”——“函数助手对话框”——“StringFromFile”,将TXT的完整路径贴到图中位置,点击生成,可以在框里生成TXT文件的读取路径。

    我们将$开头的那串路径贴到“http请求”的路径里面,就可以访问到TXT里面的所有网页啦,如图所示。

步骤八  服务器状态实时监听

    上面我们介绍了几个Jmeter自带的监听器,不知你是否感觉到有一点点无力,因为里面显示的指标好像都不是你特别需要的,至少对于我来说,我更关心我的请求执行过程中服务器状态的改变,例如CPU,内存,磁盘,网络,TPS,响应时间图等等,因为这才是压力测试的目的所在,服务器状态随着请求增加的变化曲线才是我们更加需要看到的。想看到服务器变化的曲线图,我们需要下载JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,将这两个jar包放入Jmeter的安装路径下的lib/ext/下面,重启Jmeter后,右击“线程组”——“添加”——“监听器”,我们可以看到多了好多监听器,大多数以“jp@gc”开头的监听器,我们选择“PerfMon Metrics Collector”,里面将会显示服务器的状态信息,现在还看不到,为什么,因为要测试的服务器需要安装一个包,叫ServerAgent.zip,比如我的服务器是linux,我们将ServerAgent在服务器中解压,运行里面的startAgent.sh就可以啦,启动起来后可以看到如下

默认端口是4444,在这里我要插一句,我当时运行后通过Telnet始终ping不到4444端口导致显示不了,后来改成4445端口启动就可以了,具体的服务器命令是ServerAgent-2.2.3/startAgent.sh--udp-port 4445 --tcp-port 4445,这样就表示将serverAgent在4445端口启动,你可以将4445换成其他端口,如果默认的4444端口不行的小伙伴可以试试其他端口哦。好了,我们回到Jmeter软件,按下图填入服务器的地址和端口号,以及需要监控的硬件,如CPU,内存,磁盘,网络等等。

    好了,我们点击运行,可以在chart下看到服务器的状态变化曲线啦

怎么样,是你想要的吧,其实监听器里面还有很多其他的曲线,看英文就知道,比如TPS曲线,响应时间曲线等等,这些你都可以自己添加,我就不赘述啦。

 

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2227637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 开发 调节声音 SeekBar自定义样式

效果图 xml布局 mipmap/seekbar图片随意一张图都可以&#xff0c;这里我的图就不贴出来了 <SeekBarandroid:id"id/seekBar"android:layout_marginLeft"8dp"android:layout_width"377dp"android:layout_height"8dp"android:layou…

循序渐进丨openGauss / MogDB 数据库内存占用相关SQL

一、内存总体分布 数据库总体内存使用分布 select * from gs_total_memory_detail; 当dynamic_used_memory大于max_dynamic_memory就会报内存不足&#xff1b;如果此时dynamic_used_memory小于max_dynamic_memory&#xff0c;而dynamic_peak_memory大于max_dynamic_memory表…

基于vite和vue3、 eslint、prettier、stylelint、husky规范

前言 在现代的前端开发中&#xff0c;代码规范非常重要。它可以提高团队的协作效率&#xff0c;减少代码错误&#xff0c;使代码更易于维护。为了实现代码规范化&#xff0c;我们可以使用一些工具来辅助我们的开发流程&#xff0c;包括eslint、prettier、stylelint、husky&am…

MYSQL-SQL-03-DQL(Data Query Language,数据查询语言)(单表查询)

DQL&#xff08;数据查询语言&#xff09; DQL英文全称是Data Query Language(数据查询语言)&#xff0c;数据查询语言&#xff0c;用来查询数据库中表的记录。 查询关键字: SELECT 在一个正常的业务系统中&#xff0c;查询操作的频次是要远高于增删改的&#xff0c;当我们去访…

宇音天下最新力作 | VTX356语音识别合成芯片问世

北京宇音天下科技有限公司&#xff0c;依托在语音技术领域的丰富经验和技术积累&#xff0c;成功推出了一款具有里程碑意义的语音识别合成芯片——VTX356。这款芯片的问世&#xff0c;不仅彰显了公司在智能语音处理领域的专业实力&#xff0c;也预示着智能家居、车载电子、智能…

开始菜单增强工具 StartAllBack v3.7.10.4910 直装激活版

StartAllBack中文版(StartIsBack)是一款Win11开始菜单增强工具&#xff0c;可以为Windows11恢复经典样式的Windows7主题风格开始菜单和任务栏&#xff0c;功能包括了&#xff1a;自定义开始菜单样式和操作&#xff0c;个性化任务栏及资源管理器等。 详细功能 √ 全面更新中文语…

java中Scanner的nextLine和next方法

思考&#xff0c;输入1 2 3 4 5加上enter&#xff0c;输出什么 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int[][] m new int[2][2];for (int i 0; i < 2; i) {for (int j 0; j < 2;…

DataX数据同步

背景&#xff1a; 业务需求中&#xff0c;经常会有同步各种系统或者数仓的数据到自己的库进行使用。比如从oracle同步到自己的mysql&#xff0c;自己写代码如果数据量大需要考虑多线程并发等。最近使用了阿里的Datax项目&#xff0c;操作简单并高效。 Datax Datax概述&支…

如何使用的是github提供的Azure OpenAI服务

使用的是github提供的Azure OpenAI的服务gpt-4o 说明&#xff1a;使用的是github提供的Azure OpenAI的服务&#xff0c;可以无限薅羊毛。开源地址 进入&#xff1a; 地址 进入后点击 右上角“Get API key”按钮 点击“Get developer key” 选择Beta版本“Generate new to…

高可用HA软件

高可用HA&#xff08;High Availability&#xff09;软件在分布式系统架构设计中至关重要&#xff0c;它们能够减少系统停机时间&#xff0c;确保应用程序持久、不间断地提供服务。以下是四款常用的高可用HA软件介绍&#xff1a; Keepalived Keepalived起初是为LVS&#xff08;…

Python小白学习教程从入门到入坑------第十八课 异常模块与包【上】(语法基础)

一、异常 在Python中&#xff0c;异常&#xff08;Exception&#xff09;是一种用于处理在程序运行时可能发生的错误情况的机制 异常允许程序在检测到错误时不是简单地崩溃&#xff0c;而是能够优雅地处理这些错误&#xff0c;可能包括记录错误信息、清理资源、或者向用户提…

如何使用非官方的根组件

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性3. 示例代码4. 内容总结我们在上一章回中介绍了"Get包简介"相关的内容,本章回中将介绍GetMaterialApp组件.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经介绍过GetMaterialApp组…

Python(pandas库3)

函数 随机抽样 语法&#xff1a; n&#xff1a;要抽取的行数 frac&#xff1a;抽取的比例&#xff0c;比如 frac0.5&#xff0c;代表抽取总体数据的50% axis&#xff1a;示在哪个方向上抽取数据(axis1 表示列/axis0 表示行) 案例&#xff1a; 输出结果都为随机抽取。 空…

Qt/C++ 调用迅雷开放下载引擎(ThunderOpenSDK)下载数据资源

目录导读 前言ThunderOpenSDK 简介参考 xiaomi_Thunder_Cloud 示例ThunderOpenSDK 下载问题 前言 在对以前老版本的exe执行程序进行研究学习的时候&#xff0c;发现以前的软件是使用的ThunderOpenSDK这个迅雷开放下载引擎进行的项目数据下载&#xff0c;于是在网上搜索一番找到…

Chrome谷歌浏览器加载ActiveX控件之allWebDesktop控件介绍

背景 allWebDesktop控件是一款方便用户在线打开各类文档的OA办公控件。它设计比较轻巧&#xff0c;充分利用计算机程序资源打开文档&#xff0c;并将程序窗口嵌入到allWebDesktop控件区域内&#xff0c;从而实现浏览器内打开各类文档效果。 allWebPlugin中间件是一款为用户提供…

【工具】Charles对360浏览器抓包抓包

Charles 和 switchy sharp 配合&#xff0c;可以对 Chrome 进行抓包也可以配合对360安全浏览器抓包。 本文以Windows 电脑中的配置为例&#xff0c;介绍如何实现抓包。&#xff08;Mac中操作基本一致&#xff09; 1.安装Charles 可根据自己的电脑下载对应的版本&#xff1a;…

【C++初阶】模版入门看这一篇就够了

文章目录 1. 泛型编程2. 函数模板2. 1 函数模板概念2. 2 函数模板格式2. 3 函数模板的原理2. 4 函数模板的实例化2. 5 模板参数的匹配原则2. 6 补充&#xff1a;使用调试功能观察函数调用 3. 类模板3 .1 类模板的定义格式3. 2 类模板的实例化 1. 泛型编程 在C语言中&#xff0…

【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!

前言 &#x1f31f;&#x1f31f;本期讲解关于TCP协议的重要的机制“连接的建立和断开”~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1…

5. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验5:PWM驱动直流电机)

作者:Whappy,日期:2024.10.29,决战STM32 直流电机的控制就比较简单了,只有数据线和地线,正接正转,反接反转,为了方便,本实验采用H桥电路来控制电机的正反转,H桥电路也很简单,就是4个MOS管构成的2路推挽输出电路. 注:基本上大功率器件,单片机基本上是无法驱动的,都是要靠一部分…

家用wifi的ip地址固定吗?换wifi就是换ip地址吗

在探讨家用WiFi的IP地址是否固定&#xff0c;以及换WiFi是否就意味着换IP地址这两个问题时&#xff0c;我们首先需要明确几个关键概念&#xff1a;IP地址、家用WiFi网络、以及它们之间的相互作用。 一、家用WiFi的IP地址固定性 家用WiFi环境中的IP地址通常涉及两类&#xff1a…