Jmeter的压测使用

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.mzph.cn/bicheng/75627.shtml

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

相关文章

【rabbitmq基础】

RabbitMq基础 1.概念2.数据隔离3.使用控制台向mq传递消息1.创建两个队列-“测试队列”&#xff0c;“测试队列2”2.创建一个交换机-"测试交换机"3.测试发送消息3.1让交换机和队列进行绑定3.2发送消息3.3查看消息 4.创建虚拟主机5.java使用rabbitmq5.1 发送消息5.2 消…

加固计算机厂家 | 工业加固笔记本电脑厂家

北京鲁成伟业科技发展有限公司&#xff08;以下简称“鲁成伟业”&#xff09;成立于2005年&#xff0c;是集研发、生产、销售与服务于一体的高新技术企业&#xff0c;专注于加固计算机、工业加固笔记本电脑及特种计算机的研发与制造。凭借20年的技术积累与行业深耕&#xff0c;…

链路聚合配置命令

技术信息 加入捆绑组&#xff0c;加大链路间带宽等 配置命令 华三 静态聚合 将接口加入聚合口后再进行配置 //创建静态链路聚合口1&#xff0c;不启用lacp[SWB]interface Bridge-Aggregation 1 [SWB-Bridge-Aggregation1]port link-type trunk [SWB-Bridge-Aggregation…

ekf-imu --- 四元数乘法符号 ⊗ 的含义

⊗ 表示四元数的乘法运算&#xff1a; 用于组合两个四元数代表的旋转。四元数乘法是非交换的&#xff08;即顺序不同结果不同&#xff09;&#xff0c;其定义如下&#xff1a; 若两个四元数分别为&#xff1a; qq0q1iq2jq3k, pp0p1ip2jp3k, 则它们的乘积为&#xff1a;4*1 …

论文阅读Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

原文框架图&#xff1a; 官方代码&#xff1a; https://github.com/phizaz/diffae/blob/master/interpolate.ipynb 主要想记录一下模型的推理过程 &#xff1a; %load_ext autoreload %autoreload 2 from templates import * device cuda:1 conf ffhq256_autoenc() # pri…

OpenVLA-OFT——微调VLA的三大关键设计:并行解码、动作分块、连续动作表示以及L1回归目标

前言 25年3.26日&#xff0c;这是一个值得纪念的日子&#xff0c;这一天&#xff0c;我司「七月在线」的定位正式升级为了&#xff1a;具身智能的场景落地与定制开发商 &#xff0c;后续则从定制开发 逐步过渡到 标准产品化 比如25年q2起&#xff0c;在定制开发之外&#xff0…

【论文阅读】Dynamic Adversarial Patch for Evading Object Detection Models

一、介绍 这篇文章主要是针对目标检测框架的攻击&#xff0c;不同于现有的攻击方法&#xff0c;该论文主要的侧重点是考虑视角的变化问题&#xff0c;通过在车上布置多个显示器&#xff0c;利用视角动态选择哪一个显示器播放攻击内容&#xff0c;通过这种方法达到隐蔽与攻击的…

多模态技术概述(一)

1.1 多模态技术简介 1.1.1 什么是多模态 多模态(Multimodal)涉及多种不同类型数据或信号的处理和融合&#xff0c;每种数据类型或信号被称为一种模态。常见的模态包括文本、图像、音频、视频等。多模态技术旨在同时利用这些不同模态的数据&#xff0c;以实现更全面、更准确的理…

nginx2

Nginx反向代理(七层代理)、Nginx的TCP/UDP调度器(四层代理)、 一、Nginx反向代理(七层代理) 步骤&#xff1a; ​ 部署后端web服务器集群 ​ 配置Nginx代理服务器 ​ 配置upstream集群池 ​ 调节集群池权重比 <img src"/home/student/Deskt…

调用kimi api

官网支持python&#xff0c;curl和node.js 因为服务器刚好有php环境&#xff0c;所以先用curl调个普通的语音沟通api <?php // 定义 API Key 和请求地址 define(MOONSHOT_API_KEY, sk-PXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXgk1); define(MOONSHOT_API_URL, https://…

关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码

以下是关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析&#xff0c;包括语法、功能、锁机制、使用场景及示例代码&#xff1a; 1. UPDATE 语句 功能 直接修改数据&#xff1a;立即更新表中的数据&#xff0c;并提交修改。无显式锁&#xff1a;虽然会自动加锁&#xff…

在航电系统中提高可靠性的嵌入式软件设计

1.总线余度设计 数据传输采用双余度总线设计&#xff0c;CANFD为主&#xff0c;RS485为备。发送方将相同的数据分别通过双总线来发送&#xff0c;接收方优先处理主线数据。由于总线上数据频率固定&#xff0c;可设置定时器监控主总线的数据&#xff0c;当定时器超时后&#xff…

第十五届蓝桥杯大赛软件赛省赛Python 大学 C 组:5.回文数组

题目1 回文数组 小蓝在无聊时随机生成了一个长度为 n 的整数数组&#xff0c;数组中的第 i 个数为 ai&#xff0c;他觉得随机生成的数组不太美观&#xff0c;想把它变成回文数组&#xff0c;也是就对于任意 i∈[1,n] 满足 a i a n − i 1 a_ia_{n−i}1 ai​an−i​1。 小蓝…

netty中的WorkerGroup使用详解

Netty中WorkerGroup的深度解析 WorkerGroup是Netty线程模型中的从Reactor线程组&#xff0c;负责处理已建立连接的I/O读写、编解码及业务逻辑执行。其设计基于主从多Reactor模型&#xff0c;与BossGroup分工协作&#xff0c;共同实现高并发网络通信的高效处理。 一、WorkerGro…

模运算核心性质与算法应用:从数学原理到编程实践

目录 &#x1f680;前言&#x1f31f;数学性质&#xff1a;模运算的理论基石&#x1f4af;基本定义&#xff1a;余数的本质&#x1f4af;四则运算规则&#xff1a;保持同余性的关键 &#x1f99c;编程实践&#xff1a;模运算的工程化技巧&#x1f4af;避免数值溢出&#xff1a;…

#Git 变基(Rebase)案例

适合学习理解的 Git 变基&#xff08;Rebase&#xff09;案例 为了帮助你更好地理解 Git 变基&#xff08;Rebase&#xff09;的操作和效果&#xff0c;下面通过一个简单的案例来演示变基的过程和影响。 案例背景 假设我们有一个 Git 仓库&#xff0c;包含两个分支&#xff1…

泰博云平台solr接口存在SSRF漏洞

免责声明&#xff1a;本号提供的网络安全信息仅供参考&#xff0c;不构成专业建议。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权&#xff0c;请及时与我联系&#xff0c;我将尽快处理并删除相关内容。 漏洞描述 SSRF漏洞是一种在未能获取服务器…

MyBatis 动态SQL 详解!

目录 一、 什么是动态 SQL&#xff1f;二、 为什么需要动态 SQL&#xff1f;三、 MyBatis 动态 SQL 标签四、 标签详解及示例1、 if 标签2、 choose、when、otherwise 标签3、 where 标签4、 set 标签5、 foreach 标签6、 sql、include 标签 五、 总结 &#x1f31f;我的其他文…

阿里云服务器遭遇DDoS攻击有争议?

近年来&#xff0c;阿里云服务器频繁遭遇DDoS攻击的事件引发广泛争议。一方面&#xff0c;用户质疑其防御能力不足&#xff0c;导致服务中断甚至被迫进入“黑洞”&#xff08;清洗攻击流量的隔离机制&#xff09;&#xff0c;轻则中断半小时&#xff0c;重则长达24小时&#xf…

如何在Springboot的Mapper中轻松添加新的SQL语句呀?

在如今的软件开发界&#xff0c;Spring Boot可是非常受欢迎的框架哦&#xff0c;尤其是在微服务和RESTful API的构建上&#xff0c;真的是让人爱不释手&#xff01;今天&#xff0c;我们就来聊聊如何为Spring Boot项目中的Mapper添加新的SQL语句吧&#xff01;说起来&#xff0…