Jmeter的压测使用

news2025/4/3 5:49:39

Jmeter基础功能回顾

一、创建Jmeter脚本

1、录制新建

(1)适用群体:初学者

2、手动创建

(1)需要了解Jmeter的常用组件

元件:多个类似功能组件的容器(类似于类)

各元件作用

组件:实现独立的某个功能(类似于方法)

组件示例

二、接口压力测试请求的创建

压测前需要保证接口的功能是正确的,压测才是有效的。

接口常用请求方式:

  • 1、post
  • 2、get
  • 3、put
  • 4、delete

取样器

三、压力测试请求中的数据传递

在接口请求的过程中,接口之间会有数据传递的功能。例如:系统登录的功能,请求登录的接口,一般给返回给用户一个token的字段,token会有有效期,在有效期内,用户所有的请求带上这个token字段,服务器 就会知道是哪一个用户做的请求。

关联:

当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

Jmeter常用的关联方法:

1、JSON提取器

JSON提取器

2、XPATH提取器

XPATH提取器

3、正则表达式提取器

正则表达式提取器

四、压力测试中的结果断言校验

断言:让程序自动判断预期结果和实际结果是否一致。

Jmeter常用断言:

1、Response Assertion

2、JSON Assertion

五、利用Beanshell生成测试数据

1、Beanshell script逻辑生成数据

2、Java代码逻辑生成数据

六、全局变量与CSV数据导入

1、User Defined Variables

2、CSV Data Set

七、压测结果数据解读

1、聚合报告

2、请求/响应结果树

3、Debug Sampler

被压测实战应用简介与搭建

一、实战应用简介

1、被压测应用:订餐网(模拟电商应用)

2、常见业务场景:登录,浏览,选择餐馆,添加购物车,下订单,订单浏览,...,等

3、目标:通过对该网站的压测,学习、体会实际业务场景中压测工具的使用方法

4、练习项目源码位置:https://github.com/princeqjzh/meican

5、运行环境:Java+mysql+maven

6、说明:例子程序中部分功能做了mock,使用的时候不用关注例子程序返回数据的正确性

二、实战应用设置与启动

1、例子程序启动过程:

(1)将git源码克隆到本地磁盘

(2)将项目中的sql/e_menu.sql导入MySQL数据库,创建项目数据

(3)在src/main/resources/hibernate.cfg.xml中配置MySQL DB的用户名、密码;

(4)项目编译、构建

(5)启动、运行Web应用程序

三、实战应用设置-MySQL

1、使用MySQL客户端工具(navicate),初始化数据库

2、执行SQL语句导入功能,运行项目中的e_menu.sql语句

3、Demo-数据导入

导入SQL数据

导入成功

四、实战应用设置-Java

1、Java配置:版本1.8

2、安装包

下载路径:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

3、命令安装

CentOS:yum install java-1.8.0-openjdk* -y
Ubuntu:apt-get install oracle-java8-installer
Mac:brew cask install java

4、解压安装

(1)将JDK运行程序直接解压缩到本地路径,然后配置环境变量

(2)JAVA_HOME=<jdk root path>

(3)export PATH=$PATH:$JAVA_HOME/bin

5、Java环境安装正确验证

验证Java是否安装成功

五、实战应用设置-Maven

1、Maven:下载依赖与程序编译、打包、运行

2、下载:

(1)下载位置:http://maven.apache.org/download.cgi

(2)下载文件:zip或者tar格式压缩包,带bin字样的表明是可以直接运行的二进制文件

下载

3、Maven安装和环境变量配置

(1)将安装包解压到本地路径,然后配置环境变量

(2)export M2_HOME=/xxx/xxx/apache-maven-x.x.x

(3)export PATH=$PATH:$M2_HOME/bin

4、验证Maven是否安装成功:

(1)mvn -v

5、 加速依赖包下载方法,在setting.xml中提那家阿里云镜像

   <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
   </mirror>

五、实战应用设置-开发工具(自行选择)

1、开发工具 Intellij Idea:

(1)外观、字体修改

(2)启动鼠标滚轮放大缩小字体

(3)隐藏显示一些可以不看的文件或文件夹,比如:target

六、实战应用设置-参数

1、配置应用中的数据库连接信息:host,port,user,password

2、参数设定位置:src/main/resources/hibernate.cfg.xml

3、配置参数

<property name="connection.url">
jdbc:mysql://localhost:3306/e_menu?serverTimezone=GMT
</property>
<property name="connection.username">root</property>
<property name="connection.password">ymx0607!</property>

七、实战应用-启动项目

1、编译

若编译后无run configurations,

2、启动项目:

若编译后无run configurations,选择方法二、三

(方法一)双击上图选中的e_menu,就可启动项目

(方法二)命令行运行

mvn tomcat7:run

(方法三)直接把编译后的e_menu.war 放到之前装好的tomcat的webapps目录下

3、访问:http://localhost:8080/e_menu/userlogin/login.jsp(默认密码:admin admin)

压测脚本的编写

一、压测业务规划

1、梳理常用业务场景

2、尽量真实的模拟用户行为,让压测结果更贴近真实结果

3、正常与异常用例场景都需要被覆盖到

4、压力测试涉及的业务内容:

(1)首页

(2)登录

(3)浏览饭店列表

(4)选择饭店

(5)添加购物车

(6)提交订单

(7)查看订单

5、业务场景规划

正常:登录成功的场景

异常:登录失败的场景

二、编写前准备:

1、被压测页面URL获取方法

(1)问研发(依赖别人)

(2)抓包(依赖自己)

(3)读代码(主要依赖自己)

2、组织测试业务参数

(1)新建用户(添加数据)

(2)梳理测试商户数据

(3)梳理测试商品数据

3、也测业务流程控制

(1)预计接口访问次数

(2)不同接口的分流比例

(3)数据传递位置(参数?响应payload?Header?Cookie?)

三、编写压测脚本

1、抓包获取压测接口

四、压测流程图

五、构造压测脚本

注意:

1、先安装插件:Random CSV Data Set

2、脚本在项目jmx下

脚本

整体设计思路:

1、有两个场景:登录成功、登录失败,基于对业务的了解,做了分配的数据。分配的比例,是通过rate随机变量去设置的。假设:60%登录成功,40%登录失败。

2、选择饭店是随机循环的,通过循环控制器实现,访问1次或多次

3、公共信息放在用户定义的变量中,菜品信息放在Http Cookie管理器

4、查看结果树和聚合报告查看运行结果

压测实施简介与后续安排

一、压测实施

1、制定压测策略,不同的并发数10,15,20,25,30...

2、记录结果

3、测试期望结果

(1)验证能够支撑多大并发数,峰值数

(2)验证错误率,定义可接受范围,<=0.1% or <=0.5% or must=0%

4、验证压测目的:寻找系统性能点

二、后续安排

1、压测具体操作过程

2、实施过程可以配合性能监控平台进行压测监控

3、自动化压测执行并发数的压测实施

4、测试报告的自动生成

思考

怎么计算单机所能做出的最大并发数呢?

怎么合理进行压测数据?怎么分时段进行压测?

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

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

相关文章

kubernetes》》k8s》》Deployment》》ClusterIP、LoadBalancer、Ingress 内部访问、外边访问

Nginx部署 K8s 集群内外访问服务的方式 节点 Kubernetes 集群中的服务器&#xff08;指单台&#xff09; 集群 Kubernetes 管理的一组服务器的集合 边界路由器 为局域网和Internet路由数据包的路由器&#xff0c;执行防火墙保护局域网络 集群网络 遵循Kubernetes网络模型实现集…

Transformer 通关秘籍8:词向量如何表示近义词?

上一节已经完成了 token 到词向量的转换。那么&#xff0c;使用转换后的词嵌入向量便可以表示 token 之间的语义了吗&#xff1f;便可以表示两个单词是否是近义词&#xff0c;是否是反义词了吗&#xff1f; 是的。 接下来先通过一个例子&#xff0c;来直观地理解一下词嵌入向…

【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】

MVC简介 产生原因&#xff1a; MVC&#xff08;Model-View-Controller&#xff09;模式诞生于20世纪70年代&#xff0c;由Trygve Reenskaug在施乐帕克研究中心&#xff08;Xerox PARC&#xff09;为Smalltalk语言设计&#xff0c;目的是解决图形用户界面&#xff08;GUI&…

基于NebulaGraph构建省市区乡镇街道知识图谱(二)

上次我们有讲到构建知识图谱&#xff0c;但是在实际使用的时候会发现某些乡镇街道丢失的问题&#xff0c;因为VID必须全局唯一&#xff0c;覆盖导致原因&#xff0c;另外在全国大批量导入时速度非常慢&#xff0c;为此&#xff0c;我们重新优化表结构与导入语法。 1. 表及索引…

论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)

转载至&#xff1a;何骏昊 开放知识图谱 原文地址&#xff1a;论文浅尝 | Interactive-KBQA&#xff1a;基于大语言模型的多轮交互KBQA&#xff08;ACL2024&#xff09; 笔记整理&#xff1a;何骏昊&#xff0c;东南大学硕士&#xff0c;研究方向为语义解析 论文链接&#xff…

linux -- php 扩展之xlswriter

xlswriter - PHP 最强性能 Excel 扩展 linux 安装 完整编译安装步骤 ## 下载wget https://pecl.php.net/get/xlswriter tar -zxvf xlswriter cd xlswriterphpize # 执行配置 ./configure # 编译 make make install ./configure 如果报错&#xff0c;就指定配置路径 …

Dockerfile文件构建镜像Anaconda+Python教程

文章目录 前言Dockerfile 核心模块解析**一、Dockerfile基础镜像选择二、系统基础配置1、时区设置2、镜像源替换 三、系统依赖安装四、复制本地文件五、指定路径六、Anaconda环境配置1、anaconda环境安装2、配置虚拟环境3、创建conda虚拟环境4、启动和安装环境 七、完整dockerf…

本地部署大模型-web界面(ollama + open-webui)

一、安装ollama 二、安装部署open-webui 1、项目运行环境 &#xff08;1&#xff09;配置python环境—官方下载链接 可通过命令行直接更改python镜像源为阿里云镜像源&#xff1a; >pip config set global.index-url http://mirrors.aliyun.com/pypi/simple/也可手动修…

Java虚拟机JVM知识点(已完结)

JVM内存模型 介绍下内存模型 根据JDK8的规范&#xff0c;我们的JVM内存模型可以拆分为&#xff1a;程序计数器、Java虚拟机栈、堆、元空间、本地方法栈&#xff0c;还有一部分叫直接内存&#xff0c;属于操作系统的本地内存&#xff0c;也是可以直接操作的。 详细解释一下 程…

【C++进阶四】vector模拟实现

目录 1.构造函数 (1)无参构造 (2)带参构造函数 (3)用迭代器构造初始化函数 (4)拷贝构造函数 2.operator= 3.operator[] 4.size() 5.capacity() 6.push_back 7.reserve 8.迭代器(vector的原生指针) 9.resize 10.pop_back 11.insert 12.erase 13.memcpy…

VUE3+Mapbox-GL 实现鼠标绘制矩形功能的详细代码和讲解

以下是如何使用 Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解。Mapbox GL JS 是一个强大的 JavaScript 库&#xff0c;可以用来创建交互式地图。下面将通过监听鼠标事件并动态更新地图图层来实现这一功能。 实现步骤 初始化地图 在 HTML 文件中引入 Mapbox GL JS 库&…

《筋斗云的K8s容器化迁移》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章&#xff1a;斗战胜佛的延迟焦虑****第二章&#xff1a;微服务化的紧箍咒****第三章&#xff1a;混沌中的流量劫持****第四章&#xff1a;量子筋斗的终极形态****终章&…

基于SpringBoot的“考研学习分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“考研学习分享平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能结构图 局部E-R图 系统首页界面 …

Web3.0隐私计算与云手机的结合

Web3.0隐私计算与云手机的结合 Web3.0隐私计算与云手机的结合&#xff0c;标志着从“数据垄断”向“数据自主”的范式转变。通过技术互补&#xff0c;两者能够构建更安全、高效且用户主导的数字生态。尽管面临技术整合和成本挑战&#xff0c;但随着区块链、AI和分布式存储的成…

Linux上位机开发实践(超越MPP去开发产品)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于芯片厂商来说&#xff0c;肯定希望客户的应用和自己的芯片绑定地越紧密越好。最好就是&#xff0c;他们自己成为客户的独家供应商。但是对于嵌…

SpringBean模块(二)bean初始化(2)和容器初始化顺序的比较--引入ApplicationContextInitializer

前面介绍了获取容器可以让spring bean实现ApplicationContextAware&#xff0c;实际也是初始化执行了setApplicationContext接口&#xff0c; 初始化接口还可以借助一些注解或者spring bean的初始化方法&#xff0c;那么他们的执行顺序是什么样的呢&#xff1f; 一、验证&…

【分享】内外网文件摆渡系统:让数据传输更安全更可靠

【分享】Ftrans内外网文件摆渡系统&#xff1a;让数据传输更安全更可靠&#xff01; 随着大数据时代的到来&#xff0c;数据的重要性日渐得到重视&#xff0c;数据作为数字经济时代下的基础性资源和战略性资源&#xff0c;是决定国家经济发展水平和竞争力的核心驱动力。以行业…

2025年江苏省职业院校技能大赛 (高职组)大数据应用开发赛项任务书 (样题)

2025年江苏省职业院校技能大赛 &#xff08;高职组&#xff09;大数据应用开发赛项任务书 &#xff08;样题&#xff09; 背景描述&#xff1a;任务A&#xff1a;离线数据处理&#xff08;35分&#xff09;子任务一&#xff1a;数据抽取子任务三&#xff1a;指标计算 任务B&…

手机显示5GA图标的条件

最近有星友问在什么情况下才能显示5G-A&#xff1f;虽然这个我也不知道&#xff0c;但是我有几个运营商的5G终端白皮书&#xff0c;从上面就可以找到答案。 如上是几个运营商显示5G-A的条件&#xff0c;基本上考虑的都是3CC的情况&#xff0c;联通还有考虑200M CA 2CC的场景&am…

Spring Boot 实现文件秒传功能

前言 在开发Web应用时&#xff0c;文件上传是一个常见需求。然而&#xff0c;当用户需要上传大文件或相同文件多次时&#xff0c;会造成带宽浪费和服务器存储冗余。此时可以使用文件秒传技术通过识别重复文件&#xff0c;实现瞬间完成上传的效果&#xff0c;大大提升了用户体验…