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.pswp.cn/bicheng/75627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75627.shtml
英文地址,請注明出處:http://en.pswp.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…