JMeter性能测试---完整入门到白了少年头

news2024/11/26 18:22:29

目录

一、性能测试

二、负载/压力/可靠性

三、JMeter工具

四、负载脚本

五、Jmeter参数化

六、远程操作运行脚本


一、性能测试

测试目的:
1.客户有明确要求,如:系统要求同时满足5000个用户登录,平均每个用户登录时间不能超过5秒
2.考察目前系统性能(容量测试),需要对系统做出分析,找出系统的压力点
3.找出系统性能瓶颈,需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试
4.了解系统在长时间的压力下性能状况(强度测试)

注意事项:
1.性能测试一般在功能测试稳定的前提下进行
2.修改性能测试问题的时候容易造成功能错误

负载测试:正常工作能力极限
压力、强度测试:瞬间峰值

六大步骤:
1.测试计划
2.创建脚本
3.创建场景
4.运行场景
5.监控场景
6.系统调优

二、负载/压力/可靠性

三、JMeter工具

Jmeter元件:
1.测试计划
2.线程组
3.监听器
4.逻辑控制器
5.断言
6.配置元件
7.前置处理器和后置处理器
8.定时器
9.取样器(sampler)
10.正则表达式提取器
11.用户定义变量
12.查看结果树

元件的执行顺序:
1.配置元件
2.前置处理程序
3.定时器
4.取样器(sampler)
5.后置处理程序(除非sampler得到的返回结果为空)
6.断言(除非得到sampler得到的返回结果为空)
7.监听器(除非sampler得到的返回结果为空)
Jmeter体系结构图

四、负载脚本

1.线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
2.添加HTTP cookie管理器
3.默认请求值
 4.添加一个事务控制器,可以当作一个业务
5.在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
6.添加脚本(http请求)
 7.添加jp@gc - PerfMon Metrics Collector进行监控CPU、Memory、Disks I/O、Network I/O等。添加处:添加->监听器
8.在最后添加一个聚合报告,添加处:添加->监听器

五、Jmeter参数化

    在做性能测试过程中,一般我们需要模拟多个用户进行操作,为了满足实际场景,模拟真实的用户行为,我们需要做到模拟的用户帐号或其它信息都是不同的,这时我们就需要用到参数化。在Jmeter中,配置元件可以解决此问题

配置元件概念: JMeter配置元件可以用来进行参数化、初始化默认值和变量、存储服务器的 响应信息以及配置链接数据库等。JMeter参数化一般使用配置元件中的CSV Data Set Config或者JDBC Connection Configuration来进行参数化

1.CSV Data Set Config元件: 该元件可以用来读取csv或dat文件的数据(一行一行读取),然后通过设置 把读取到的数据关联到Jmeter中的变量保存。csv文件可以使用execl表格工具去进 行编辑。

 2.JDBC Connection Configuration元件: 该元件可以用来进行数据库的连接,然后通过JDBC Request元件发送数据库请求数据库中的表中的数据,再通过正则表达式提取器关联到Jmeter中的变量保存

 如:CSV Data Set Config元件(添加处:添加->配置元件)

界面字段说明:
    名称、注释与之前元件一样可以随意设置。 Filename:指保存信息的文件目录,可以相对或者绝对路径,相对路径从Jmeter 的启动目录(***/bin)路径。 File Encoding:文件编码,默认为ANSI,建议设置为utf-8,防止遇见乱码情况。 

Variable Names:参数名称,每个名称中间用分隔符分割,分隔符使用下面的 “Delimitet”中定义的,默认用逗号隔开,与参数文件的参数对应。如果设置的参 数名称多于参数文件中的参数,多余的参数取不到值;反之参数文件中的参数将没 有参数对应。

Delimitet:定义分隔符,用于分隔文件中的参数,及上述Variable Names中定义的 参数名称。

Allow Quoated data?:是否允许引用数据,设置为True ,设置文件中的参数值都必须 用引号引起来,False则不需要

Recycle on EOF ?:遇到文件结束符时,是否从头开始循环读入,设置为True,则从 头开始继续循环

Stop Thread on EOF?:当Recycle on EOF 设置为False并且Stop Thread on EOF为True, 则读完csv文件中的记录后, 停止运行

Sharing Mode: 参数文件共享模式,有三个设置,说明如下:
All threads:参数文件对所有线程共享,包含同一测试计划中的不同线程组。
Current thread group:只对当前线程组中的线程共享。
Current thread:仅当前线程获取。
如:JDBC Connection Configuration元件(添加处:添加->配置元件)

六、远程操作运行脚本

1、操作步骤(GUI方式)
1.在负载机上部署jmeter,确保jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat这两个文件。(jdk是否配置好,jmeter是否安装成功)

 2.双击启动负载机的jmeter-server.bat程序

3.在jmeter控制机的bin目录找到jmeter.properties文件,并修改”remote_hosts”,增加负载机IP,多个IP使用英文逗号隔开,修改后要启动jmeter
 4.进入jmeter控制机的GUI图形界面,远程运行,点击安全即可,点击后,jmeter控制机会自动探测,只要先启动远程负载上的Agent,开始运行测试计划时就会自己连接负载机去完成

5.停止(可选),点击上面右图的后面两个按钮即可。前者是执行完成当前迭代停 止(比如脚本中有5个请求,在运行第2个的时候收到停止命令,那么将继续执行 完5个请求然后再停止),后者是立即终止

备注:remote_hosts里设置127.0.0.1 。需要控制机也启动jmeter-server.bat

2、命令窗口运行(非GUI方式):
命令窗口运行没有Jmeter界面,通过DOS命令窗口运行场景。用纯命令方式运行Jmeter是因为Jmeter可视化界面及监听器动态展示结果都比较消耗负载机资 源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能结果产生影响。 这个影响不是指被测系统的性能受到影响,而是指负载机的性能受到影响, 导致负载量上不去,比如命令模式100个线程可产生100TPS的负载,而GUI方式只 产生80TPS的负载。所以推荐进行性能测试的时候,使用命令方式来运行测试计划。

命令窗口方式运行场景命令如下:
1. java -jar %JMETER_HOME%\bin\ApacheJMeter.jar -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl

2. %JMETER_HOME%\bin\jmeter -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl

备注:两条命令都可以运行测试计划,其中%JMETER_HOME%必须配置jmeter的环境变 量,%JMETER_HOME%\script\script.jmx为jmeter脚本存放路径。

命令行部分参数说明:
-n:非GUI方式运行。
-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径
-h:查看帮助
-v:查看版本
-p:指定读取Jmeter属性文件,比如jmeter.properties文件中设置的
-l:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径
-s:以服务器方式运行(远程方式)
-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定
-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置
-L:定义Jmeter的日志级别,如DEBUG、INFO、ERROR等
-H:设置代理IP
-P:设置代理端口
-u:设置代理帐号
-a:设置代理帐号密码
-X:停止远程执行
-J:定义Jmeter属性,等同于在jmeter.properties中设置
-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享

jmeter不能远程出现的可能原因:
1.加压机(负载机)jmeter-server.bat没有开启
2.Jmeter.properties改了配置,没有重启jmeter,让配置文件生效
3.负载机的jmeter版本和控制机的jmeter版本不一样
4.如果有CSV参数化,必须把CSV文件,复制到每一个负载机上,同一位置,同一名称
5.控制机防火墙没有关
6.把其它网络连接关掉(如虚拟机的Vmnet1,Vmnet8),再双击jmeter-server.bat看网络IP是不是本机的


              【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战

三、Web自动化项目实战


四、App自动化项目实战

五、一线大厂简历


六、测试开发DevOps体系

七、常用自动化测试工具


八、JMeter性能测试

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

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

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

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

相关文章

体积小纯净无打扰,新版微软电脑管家在教国内做杀软

早在去年初,微软电脑管家就开启了 V1.0 版本内测,咱们也在第一时间替大伙儿体验了一番。 微软电脑管家最初就是专为国内用户推出的,算是真正做到了精简省心,无任何流氓广告弹窗行为。 这与咱们国内各种流氓杀软环境形成了极为鲜明…

IIS 7中添加匿名访问FTP站点

1. 开启FTP和IIS服务: 2.打开IIS 管理器: 我电脑上是IIS 7.5 ,所以选择第一个并点击打开哦。 如果你想知道自己IIS的版本,打开帮助菜单: 3. 新建FTP站点: 4. 填写站点基本信息: 5. 设置绑定和S…

Stable diffusion WebUI img2img使用教学

图生图 (img2img) 相较于文生图 (txt2img),因存在参考图片的基础上创作,其可控性自然更强。下面从图生图的几个应用方向出发,详述其功能特性。 文章目录 推提示词img 重新绘制参考图Resize mode 缩放模式Denoising 重绘幅度 Sketch 绘图Inpai…

集成光子芯片量子器件研究重要进展

前言: 中国科学技术大学郭光灿院士团队在集成光子芯片量子器件的研究中取得重要进展。该团队邹长铃、李明研究组提出人工合成光学非线性过程的通用方法,在集成芯片微腔中实验观测到高效率的合成高阶非线性过程,并展示了其在跨波段量子纠缠光源…

亚马逊云科技中国峰会“创业者之日”,赋能不同领域创业者前行

IDC预测,到2025年全球数据规模将达到175 ZB,这为人工智能模型训练提供了海量数据资源,全球AI产业迅速发展为创业者们带来了巨大的机遇,但也提出了全新的挑战。新的市场、高效的工具和智能的资源,开辟了创新的领域和商业…

23年互联网Java后端面试最全攻略,只花一周时间逼自己快速通关面试

大家从 Boss 直聘上或者其他招聘网站上都可以看到 Java 岗位众多,Java 岗位的招聘薪酬天差地别,人才要求也是五花八门。而很多 Java 工程师求职过程中,也是冷暖自知。很多时候技术有,但是面试的时候就是过不了! 为了帮…

JVM存储模型、值传递和引用传递

JVM存储模型、值传递和引用传递 一、首先根据下图理解一下JVM是什么? — Java程序和操作系统之间的桥梁 二、Java数据存储模型 因为栈区、本地方法栈、程序计数器是线程私有的,每一个线程在运行时会单独去创建这样一个内存,所以说有多少个线…

前端18K面试题总览,往这方面准备就对了

Vue面试题 生命周期函数面试题 1.什么是 vue 生命周期2.vue生命周期的作用是什么3.第一次页面加载会触发哪几个钩子4.简述每个周期具体适合哪些场景5.created和mounted的区别6.vue获取数据在哪个周期函数7.请详细说下你对vue生命周期的理解? vue路由面试题 1.mv…

Unity核心2——Sprite

顾名思义,Sprite Editor 就是精灵图片编辑器,它主要用于编辑 2D 游戏开发中使用的 Sprite 精灵图片 ​ 它可以用于编辑,图集中提取元素,设置精灵边框,设置九宫格,设置轴心(中心)点等…

以色列QM和荷兰QuantWare合作提供预集成控制系统和QPU解决方案

​ (图片来源:网络) 6月13日,以色列量子计算机操作系统初创公司Quantum Machines(QM)和荷兰超导量子处理器(QPU)的领先供应商QuantWare宣布合作,旨在大幅加速研究进展&a…

火爆全网,python自动化测试logging日志模块使用方法(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、日志级别 imp…

3D WEB轻量化引擎工具HOOPS Communicator与Three.js和自主DIY的对比分析

​基于Web的2D和3D可视化已经变得越来越流行,而且市场根据这些变化,为其提供了更丰富的实用性。如果处理得好,开发人员可以使用户以简单、用户友好的方式与其他客户、开发人员或其他任何人共享来自市场的设计。 当开发人员考虑第三方提供这项…

保险业服务模式“智能化”升级

近年来,随着数字时代的多元化发展,人工智能技术凭借其高度便利性,已被广泛拓展应用到各行各业。在AI的加持下,保险行业的发展正处于从“数字化”阶段迈向“智能化”阶段的过渡时期,销售渠道多样、业务量激增以及客户对…

Django之路由层

一、路由的作用 路由即请求地址与视图函数的映射关系,如果把网站比喻为一本书,那路由就好比是这本书的目录,在Django中路由默认配置在urls.py中,如下图: 二、简单的路由配置 # urls.py from django.urls import re_…

java 献血管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 献血管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

一:父子元素之间margin垂直方向塌陷问题 在处理margin垂直方向问题时,经常会遇到在给子元素设置margin时,导致效果出现在了父元素上;如下代码所示: 代码原义是想实现三方面: ① 将box1的margin-top调为5…

Activity 的生命周期和启动方式

Activity 的生命周期 Activity A 启动B,生命周期: A: onPause - B: onCreate-onStart-onResume- A:onStop Activity B返回 A,生命周期: B:onPause - A:onRestart - onStart - onResume - A:onStop onPause onStop 区…

分布式数据保护策略——多副本和纠删码怎么选?

在之前的《一文读懂分布式存储》文章中,我们介绍了什么是分布式存储。 但谈到存储,安全就是一个绕不开的话题。 没有数据安全的存储毫无意义。 所以数据保护技术对于分布式存储来说非常重要。 ▉ 为什么需要数据保护? 数据显示&#xff0…

考研英语|2022年真题 正确率:16/20|14:00~15:30

22 错 25 错 34 错 40 错 Text 1 21 实词对应 preservemaintain 22 推理判断题 错因:仅仅定位在vulnerable 没有继续往后阅读 immune to decay 理解错误,真确释义为“不会腐烂”,错误理解为“容易腐烂坏掉” 文中定位:第…

618年中大促专属!不容错过的B2B电商机遇

即将又迎来一年一度的618年中大促,各大品牌商家是否都做好准备了呢? 对于这场购物狂欢的盛宴,很多人常常会把焦点放在面向消费者的B2C市场上,B2B市场则因线上化渗透率较低,显得相对冷清,不够引人关注。 事实…