一文说清JMeter如何用于用于性能测试(超长请耐心看完)

news2024/11/15 21:35:19

JMeter是纯Java语言开发。开源、免费是其重要的特点。

起初就是用于性能测试,主要Web端的性能。

后来扩展到接口测试、回归测试等功能测试领域。

拥有界面,支持多语种。界面还比较完善,适合初学者掌握和使用。

JMeter无需安装,只需要安装JDK(Java开发环境)和配制好即可。

下载后直接解压缩。

使用Jmeter进行测试的话,需要哪些组件或者内容的支持?下面一一列出:

1、创建测试计划。

类似于很多开发工具中的项目或者工程。

2、创建线程组(用户)。

主要模拟用户的请求和操作。

3、添加取样器。

获取被监控的数据类型。(模拟用户发送各种数据请求)

4、添加断言。(自动化测试的重要操作之一)

对服务器的相应结果进行判断。常用的断言是响应断言和JSON断言。

5、添加监听器。

以不同形式显示请求的结果。常用的是查看结果树。

以上内容构建完毕后,完善请求内容。发送请求。

查看结果。并且直接查看服务器响应值。

后续如果需要,可以添加参数化,使得测试脚本更加完善。

使用JMeter进行脚本录制

可以像Loadrunner一样,录制很多操作步骤和系统服务器数据。

Jmeter自己自带脚本的录制,但是使用比较麻烦,需要配置的内容(浏览器、代理),上课不演示。

有另外一款软件-Badboy,可以专门录制请求,生成脚本,供Jmeter使用。

启动Badboy。看他的界面。

录制一个脚本。

开始录制,点击 【开始】按钮即可。在地址栏中输入要打开的网站的地址。点【跳转】按钮,打开页面,操作步骤会生成相应的内容。

在页面中操作的过程中,badboy会记录下客户端浏览器和服务器的数据交互。(类似抓包工具)

将脚本导出成为JMeter可运行的JMX文件。

保存导出内容。

使用JMeter打开。

查看打开后的内容和效果。

脚本中有很多规范化的内容:

1)cookie管理、用户自定义变量、HTTP请求Header管理

2)脚本的集中管理。放在一个Loop Controller中。

3)每一个请求能够自动的解析内容,包括协议、端口号、请求中的参数以及参数值。

设置设计性能测试的场景。

1)设计足够多的虚拟用户。(类似于Loadrunner中的运行时设置、Controller中虚拟用户设置、加压减压策略)

①线程组的名称:自定义。见名知义,方便查找和维护即可。

②备注。

③请求失败后采取的措施:

继续;

开始下一个线程循环;

停止线程;

停止测试;

立即停止;

④设置线程组属性:

线程(虚拟用户)的数量;

用户加载的持续时间(类似于Loadrunner的加压策略);

循环次数(类似于Loadrunner中的 Run logic)

⑤使用相同的线程进行迭代(可选,可以不选)

⑥延迟线程的创建直到被需要

⑦指定线程的生命周期

持续时间。

启动延迟。

2)足够多的运行时间。

线程的属性设置中完成。

3)服务器相关数据监控。

JMeter要完成服务器相关数据监控,需要三个组件和插件。

(自带的官网下载三个文件:分别用来显示监控数据和信息;服务端要有监控的代理)

JMeter实现第三方的美化工具(将测试过程中的数据,美化显示)

如下图需要两个文件:

JMeter-plugins-Manager文件作用是进行JMeter的插件管理。

ServerAgent文件的作用是在被监控的服务器上,运行,控制器中进行配制后可以查看监控的资源和数据。

一、在控制器上安装性能监控的插件。

将文件JMeter-plugins-Manager-1.3.jar复制到JMeter的lib/ext目录下。

启动JMeter。在选项菜单中,选择 Plugins Manager,打开进行管理。

在可选的插件库中,找到PerfMon插件。

勾选该插件,然后点击 apply changs and Restart JMeter。成功重启后,打开JMeter。

创建一个测试项目,添加一个jp@gc……的监听器,监听服务端的性能指标。

创建一个测试项目,包含HTTP请求,包两个监听器,一个查看结果数,一个监控被测服务器的性能。

设置被监控的主机的IP地址和端口号。

通过 add row 按钮,添加被监控主机的详细信息。

IP地址;服务端口号;被监控的性能指标。

二、被监控端进行的设置

上传文件 ServerAgent到被监控服务器的主机。

解压缩该文件,并启动其中的 StartAgent.bat文件

启动成功,如下所示:

三、回到控制器,发送请求,查看服务器性能的指标变化。

通过一次请求的数据,发现服务端尚未开始发送数据,客户端请求就断开了连接。如下所示。

如果需要持久的监控服务器性能,必须不断地发送请求。

控制器设置请求发送频率。将线程设置的Loop count设置为:永远。

再次启动测试请求。

如果需要监控更过的性能数据,就在 Add row中添加其他监控指标。

总结:通过监控服务器的变化,收集测试数据。达成监控性能指标的目的。

4)事务

事务是性能测试中衡量TPS,事务成功率等性能指标的基础。

JMeter中,使用Transaction Controller进行事务的划分。

事务本身不是请求,所以运行中,没有数据发送,只是内容的统计。

5)JM中的同步定时器(Loadrunner中的集合点)

JMeter中的并发有两种方式展现。

一个就是虚拟用户的启动时候,1秒加载的线程数。就相当于并发。

另一个方式就是使用定时器-Synchronizing Timer:同步定时器。

添加之后,查看定时器的页面。

①定时器名称:见名知义。

②备注:

③模拟用户分组的数量:就是并发的数量。

④超时(毫秒级):1000ms=1s

运行脚本,查看和分析结果。

分析结果:

1)先加载3个用户(第1个直接加载,第2个是2秒后,第3个就是4秒),在第一次放行(同步定时器)之前,一共有三个线程

2)上图就表示了,本次程序释放线程的简单情况。

6)多机联合负载设置。

专业的角度:我们称为分布式负载(压力)测试。

表现形式:就是一台控制器,控制多台负载机器(发生器),向服务器发起请求。

采用这种测试形式的原因:一台计算机难以搞垮服务器。为了真实的模拟高压或者大量请求,更多的计算机和请求数会更好。

JMeter中实现方式,首先配置控制器,还要有多台负载机(被控制的)。

先配置负载机。先远程连接到负载机。配置JMeter的一个代理。

首先编辑JMeter的配置文件。

编辑属性文件中的两项内容,以及获取负载机的IP地址。

修改remote_hosts=127.0.0.1,并且去掉开头行的 #

修改server_port=1099,并且去掉开头行的 #

在控制器中,生成一个控制器密钥。在控制器的JM的bin目录中,找到下面画框的文件。(本身是一个Windows批处理文件,可以直接运行)

在文件中输入相关指示信息。所有地方回复:y;最后可以不输入口令,直接点击回车。

文件运行后,会生成一个密钥文件。

将密钥文件复制到被控计算机的相关目录下。(具体是哪里呢?答:就是被控计算机的JM的bin目录下)

被控计算机启动一个JMeter-Server服务。表明接受被代理。

如果启动成功,则会显示如下:

最后在控制器的JM中,找到配置文件,设置被控计算机的IP地址和端口号。

需要控制多少台计算机,就在remote_hosts后面追加,每一个都用逗号(英文的)隔开即可。

控制器启动JMeter。在run菜单中 找remote Start,如果有前面添加的主机,说明配置文件没有问题。

点击被控机器的IP地址。(在被控机上查看服务运行状态)

如果被控机出现如上图所示的内容,(画框的部分),说明代理没有问题,且正在运行。运行结束后,显示Finish。

在控制器上查看运行结果。

注意:此处不是脚本错误。只是因为被控计算机无法联网,导致请求错误。

转化了被控机的IP之后,请求又可以正常发送。

7)IP欺骗技术是JMeter不支持。

使用JMeter查看结果。

监听器中通过表格方式查看。

通过configure设置数据的存储内容。

  这是我整理的《2024最新jmeter接口测试和jmeter接口自动化测试全套教程附带性能测试》,以及配套的接口文档/项目实战【网盘资源】,需要的朋友可以下方视频的置顶评论获取。肯定会给你带来帮助和方向。

b站最新最全的jmeter接口测试和jmeter接口自动化测试,jmeter性能测试保姆级全套教程!

 

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

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

相关文章

Django中的第一个自动化测试编写

跟着Django官网中的投票应用学习,其中有官方说明的一个bug:如果 Question 是在一天之内发布的,那么这个Question 应该显示“published_recently”,返回值为True ,然而现在如果问题发布时间为30天之后(未来时间),也会返…

Prometheus+Grafana监控数据可视化

上一篇文章讲了prometheus的简单使用,这一篇就先跳过中间略显枯燥的内容,来到监控数据可视化。 一方面,可视化的界面看着更带劲,另一方面,也更方便我们直观的查看监控数据,方便后面的学习。 Grafana安装与…

如何使用 TortoiseGit(小乌龟)进行项目源代码的检出、添加与提交、代码推送与拉取

😀前言 本文详细介绍如何使用 TortoiseGit(小乌龟)进行项目源代码的检出、文件的添加与提交、代码的推送与拉取, 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀&#…

准备并执行库存盘点

库存盘点 企业需要定期盘点其库存的原因有很多。 许多国家的法律要求公司对其物料库存进行库存盘点。库存盘点会检查公司财务报表中所显示的流动资产的物料库存。 由于内部原因,建立正确可用的库存数量是非常重要的。这也是“物料需求计划”的目标,例…

单位普通职工去世了,该单位工会领导参加她的追悼会是这样致辞的?

单位普通职工去世了,该单位工会领导参加她的追悼会是这样致辞的? 这是一篇单位工会领导参加本单位一位普通职工追悼会的致词 (范文点评) 各位来宾、各位亲朋好友: 今天,我们怀着十分沉痛的心情悼念襄阳农…

【高校科研前沿】加州理工学院Brendan Byrne等人在Nature 正刊发文:2023年加拿大野火的碳排放

论文名称:Carbon emissions from the 2023 Canadian wildfires(2023年加拿大野火的碳排放) 第一作者及单位:Brendan Byrne(碳循环科学家|加州理工学院) 通讯作者及单位:Brendan Byrne&#xf…

【C++ Primer Plus习题】7.4

问题: 解答: #include <iostream> using namespace std;long double probability(double num1, double num2, double picks) {long double result 1.0;for (int i num1;picks>0; i--,picks--){result result * (picks / i);}result * 1 / num2;return result; }in…

Shader笔记:光照与阴影1

引&#xff1a;旋转动画&#xff08;三角函数&#xff09; float3 rotationY(float3 vertex){float c cos(_Time.y*_Speed);float s sin(_Time.y*_Speed);float3x3 m {c,0,s,0,1,0,-s,0,c};return mul(m,vertex); } v2f vert (a2v v) {v2f o;o.pos UnityObjectToClipPos(r…

【GPT】Coze使用开放平台接口-【6】Dify 也来一遍

前面讲了 coze 的相关用法&#xff0c;这边想着用 Dify 也来一遍&#xff0c;刚开始的时候接触的是 Dify&#xff0c;后面才是 coze。Dify 和 coze 的侧重点不同&#xff0c;我个人是更倾向用 Dify 构建工作流就可以了&#xff0c;coze 还是相对全能。 本节用 Dify 也会创建插…

k8s的组件以及安装

目录 概念 k8s的使用场景 k8s的特点 核心组件 master主组件 1.kube-apiserver 2.etcd 3.kube-controller-manager 控制器 4.kube-scheduler node从节点组件 1.kubelet 2.kube-proxy 3.docker 总结 k8s的核心概念 安装k8s 架构 安装步骤 实验&#xff1a;创…

快递盒检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

快递盒检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

使用pytorch深度学习框架搭建神经网络

简介 现在主流有两个框架pytorch和TensorFlow,本文主要介绍pytorch PyTorch&#xff1a;由 Facebook 的人工智能研究小组开发和维护。PyTorch 以其动态计算图&#xff08;Dynamic Computational Graph&#xff09;和易用性著称&#xff0c;非常适合研究人员和开发者进行实验和…

智谱发布新一代基座模型

自 2023 年 3 月发布第一代语言基座模型 ChatGLM 以来&#xff0c;我们经过对基座模型的深入探索&#xff0c;在模型性能和模态上取得了显著的提升。 基于此&#xff0c;在KDD 2024大会上&#xff0c;我们发布了新一代基座模型&#xff0c;包括语言模型GLM-4-Plus、文生图模型…

数据仓库系列15:数据集成的常见挑战有哪些,如何应对?

在大数据时代&#xff0c;数据集成已成为数据仓库建设中不可或缺的一部分。无论是来自多个数据库、外部数据源&#xff0c;还是实时数据流的整合&#xff0c;数据集成都面临着诸多挑战。那么&#xff0c;这些挑战具体是什么&#xff0c;我们又该如何应对呢&#xff1f;本文将通…

Elasticsearch(一):单节点安装并开启ssl

单节点安装并开启ssl 1、概述2、安装2.1、前期准备2.2、下载和解压Elasticsearch2.3、创建用户和配置权限2.4、生成证书2.4.1、创建CA&#xff08;证书颁发机构&#xff09;2.4.2、与CA签署证书&#xff08;生成节点证书&#xff09; 2.5、 为Elasticsearch配置 证书2.6、启动 …

第4章-08-用Python Requests库模拟浏览器访问接口

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

【奔驰中国-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

什么是基于云的 SIEM

随着企业不断将业务迁移到数字世界&#xff0c;网络威胁的领域也在不断扩大&#xff0c;随着时间流逝&#xff0c;新的威胁不断出现&#xff0c;手段也变得更加巧妙。一个关键问题出现了&#xff1a;组织如何保护其敏感数据、资产和声誉免受网络威胁&#xff1f;这就是基于云的…

Linux中路由功能及ip_forward转发配置

操作系统中路由功能有着至关重要的作用&#xff0c;它决定了网络数据包如何在网络中传输&#xff0c;最终到达目的地。本文简要介绍Linux中的路由功能实现以及IP转发的配置&#xff0c;并验证在容器环境下配置net.ipv4.ip_forward的必要性&#xff0c;以加深理解。 1、Linux中路…

8.6 数据库基础技术-数据库的控制

并发控制 封锁协议 一级封锁协议 二级封锁协议 三级封锁协议 数据库故障和备份 真题 1