【性能測試】---測試工具篇(jmeter)

目錄

1、安裝并啟動jemeter

2、重點組件

2.1、線程組:

2.2、HTTP取樣器?編輯

2.3、查看結果樹

2.4、HTTP請求默認值

2.5、HTTP信息頭管理器

2.6、JSON提取器

2.7、JSON斷言

2.8、同步定時器

2.9、CSV數據文件設置

2.10、HTTP Cookie管理器

3、測試報告

4、性能分析

通過三大指標來分析性能問題:4.1、響應時間

4.2、錯誤率(可靠率)

4.3、吞吐量


1、安裝并啟動jemeter

法一:

法二:將文件路徑復制一下,配置環境變量,打開cmd,輸入jmeter就可以打開

2、重點組件

2.1、線程組:

添加一個線程組去管理所有的線程。

開發者工具:network表示監視網絡

點擊XHR篩選出一些后端的接口

線程數:虛擬用戶數/并發數

Ramp-Up:性能測試運行的時間,上面的線程數運行完的時間。

循環次數:如果線程數為10,循環次數為2,那么總共就發送了20次請求

如果選擇了永遠,就必須要配置調度器,否則性能測試就是一個死循環。

如果配置了調度器,配置了持續時間,就會在2s內不斷發送請求

2.2、HTTP取樣器

我們就可以在聚合報告中查看在兩秒內一個發送了多少次請求

2.3、查看結果樹

出現錯誤時:

我們應該重點關注Load time響應時間和Response code狀態碼

2.4、HTTP請求默認值

如果是在同一個web系統那么他的每個界面的協議、ip、端口號、內容編碼(utf-8)都是一樣的,因此我們就可以設置HTTP請求默認值,這樣就不用每次都填寫了。

2.5、HTTP信息頭管理器

列表頁要添加請求信息,否則就會報錯

添加HTTP管理頭,只作用在列表頁

這樣運行結果正確

下圖是開發者工具中列表頁的User_token_header? 需要添加這個名稱和值 到HTTP信息頭管理器才可以請求成功

因為我們是給了一個固定的值,它會過期,所以我們就必須要使用JSON提取器來解決問題

2.6、JSON提取器

接口響應成功,通過提取返回值對應字段,可用于其他接口的參數配置

我們可以用登錄頁的data值來配置別表頁

可以對表達式進行測試,看寫的對不對:在查看結果樹中,將響應數據的格式改為JSON Path Tester,在JSON Path Expression中輸入表達式,可以測試提取表達式是否正確

補充知識:如何對JSON進行提取

[
{
"postTime": "2024-04-18 05:20:16",
"title": "ddddd",
"blogId": 13,
"userId": 3,
"content": "# 在這?寫下?篇博客\r\ndddd"
},
?{
"postTime": "2022-10-22 02:38:21",
"title": "同學,請問你今天學習了嗎",
"blogId": 12,
"userId": 3,
"content": "今天是202210?22?17:42分,為了能夠早?將最新版本的測試課件呈現
給同學們,我已經開始奮..."
}
]
獲取相應中的所有blogId元素:$..blogId
獲取第?個blogId元素:$.[0]blogId

測試提取正確之后,就將值寫到JSON提取器中。

書寫格式:${變量名}

那為什么要添加這個呢???

HTTP協議本身是無狀態的,服務器需要通過會話標識來識別用戶身份。

用戶登錄之后,服務器返回一個認證憑證,后續請求必須攜帶該憑證(如訪問列表頁),否則服務器會返回401/403未授權

  • 瀏覽器在登錄后會自動管理Cookie/Token,并在后續請求中自動附加這些信息。

  • JMeter需要手動實現這一過程,否則列表頁請求會被視為“未登錄用戶”的請求。

  1. JMeter如何實現?

  • 通過?提取器(正則/JSON)?+?HTTP信息頭管理器?或?Cookie管理器?動態傳遞憑證。

若多個接口中都有符合條件JSON字段,則會發生覆蓋

要將提取用戶憑證(JSON提取器)放在登錄的下面,然后只要一個HTTP信息頭管理器

token只取登錄接口返回值里的data字段。然后直接保存在HTTP信息頭管理器

不能只看通過了、和響應時間、還有狀態碼沒問題就代表沒有問題,還要查看響應體,要返回博客的標題和博客的內容

當有兩百個詳情頁接口,每個接口都要用到寫死的id值,而這個id值后續可能需要修改----最好的方式就是用批量修改的方式

補充:

為什么postman可以請求成功,但是放到jmeter之后就請求失敗了?

我們可以將把開發者工具上的數據和jmeter的數據進行對比進行對比。在postman上驗證一下是不是這個問題,但是修改的時候要注意作用域問題。

2.7、JSON斷言

舉例:

1、檢查字段是否存在

1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取

2)不選中同時驗證字段值

3)不選中選使用正則匹配

4)不輸入預期值

如果?userId?存在,斷言通過;否則失敗

2、驗證字段值

1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取:$.code

2)選中同時驗證字段值

3)不選中使用正則匹配

4)輸入預期值:200

如果?code?等于?200,斷言通過;否則失敗。

3、使用正則表達式匹配

1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取:$.email

2)選中同時驗證字段值

3)選中使用正則匹配

4)輸入預期值:.+@.+\\..+?(匹配郵箱格式)

如果?email?符合正則表達式,斷言通過。

前后JSON的關系

? ? ? ? ?通過變量提取+斷言機制

2.8、同步定時器

我們要實現線程并發執行就必須添加同步定時器

如果沒有打開循環,那么最好配置和開始設定的線程數相同的數字,大于就會一直等,小于就小于就會導致后面的線程數量達不到就不運行。打開循環之后是可以的。

添加了同步定時器之后,線程是在都準備好之后才開始的,就可以做到并發

2.9、CSV數據文件設置

為了模擬更真實的登錄環境,我們需要提供更多的用戶和密碼來實現登錄操作

在當前文件的相同文件夾里面添加一個execl表格,里面寫用戶名和密碼。遇到文件結束符再次循環選True,就會循環的去模擬登錄。

2.10、HTTP Cookie管理器

HTTP Cookie管理器像Web瀏覽器?樣存儲和發送Cookie。如果HTTP請求并且響應包含cookie,則 Cookie管理器會?動存儲該cookie,并將其?于將來對該特定?站的所有請求。每個JMeter線程都有 ??的"cookie存儲區"。因此,正在測試使?cookie存儲會話信息的?站,則每個JMeter線程都將擁 有??的會話。此類Cookie不會顯?在Cookie管理器顯?屏上,可以使?"查看結果樹監聽器"查看。
緩存配置可選擇standard(標準)或compatibility(兼容的),當然也可以??添加?些cookie.

每次啟動5個線程,隔3s就啟動五個線程,這5個線程在1s內啟動完成

讓線程持續運行60s,最后每隔1s結束5個線程。

補充:查看結果樹一般在調試階段會用到,在運行的時候的一般不用

3、測試報告

當性能測試完畢之后,我們要出具測試報告

打開cmd

可以先進入存放當前測試文件的同級目錄

輸入命令 jmeter -n -t 測試的文件(第一個測試案例.jmx) -l first.jtl -e -o ./first/.(先創建一個文件夾)

4、性能分析

通過三大指標來分析性能問題:
4.1、響應時間

如果響應時間超過了要求,代表系統到了瓶頸
注意事項:分析在多少線程的情況下發?了超標
響應時間的影響因素:
1、系統不穩定,有時快又是慢
2、隨著并發壓力變大而慢慢變慢,響應時間變高

4.2、錯誤率(可靠率)

錯誤率高的原因:

1、接?請求錯誤
2、服務器?法繼續處理,達到了瓶頸(代碼寫的不好,內存泄漏、硬件資源等
3、后端系統限流(系統?配置了不能超過多少并發)

4.3、吞吐量

吞吐量越大,性能越好;吞吐量相對穩定或者變低,可能系統達到了性能瓶頸

吞吐量變化規律:

波動很大:代表系統不穩定

慢慢變高再趨于穩定:和并發量強相關。如果并發量小于吞吐量,慢慢增大并發量,吞吐量也會隨之增加

慢慢變低,并發量也減少了:說明性能測試要結束了,并發減少;也可能是系統變得卡頓,從而導致響應時間變慢,導致單個線程發起的并發量變少。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92183.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習(12):拉索回歸Lasso

- 拉索回歸可以將一些權重壓縮到零,從而實現特征選擇。這意味著模型最終可能只包含一部分特征。 - 適用于特征數量遠大于樣本數量的情況,或者當特征間存在相關性時,可以從中選擇最相關的特征。 - 拉索回歸產生的模型可能更簡單,因…

Redis持久化存儲

Redis持久化存儲詳解 一、核心持久化機制 Redis提供兩種主要持久化方式:RDB(快照) 和 AOF(追加文件),以及兩者的混合模式。 RDB(Redis Database)快照持久化 工作原理 RDB通過創建數據…

python學智能算法(三十四)|SVM-KKT條件回顧

【1】引言 前序學習進程中,對軟邊界拉格朗日方程進行了初步構建。 其中約定了兩個拉格朗日乘子要非負,其本質是要滿足KKT條件。 今天就乘此次機會,在回顧一下KKT條件。 【2】定義 當問題無約束的時候,只要讓函數梯度為零&#…

【網絡基礎】計算機網絡發展背景及傳輸數據過程介紹

本文旨在幫助初學者建立起計算機網絡的基礎認知,從網絡的發展背景到網絡協議的分層模型,再到IP與MAC地址的基本概念,全面覆蓋第一階段學習重點。 📌 本節重點 了解計算機網絡的發展背景,掌握局域網(LAN&am…

阿里云-通義靈碼:解鎖云原生智能開發新能力,讓云開發更“靈”~

免責聲明:此篇文章所有內容皆是本人實驗,并非廣告推廣,并非抄襲,如有侵權,請聯系筆者。 每日一句 信念其實就是相信未來, 相信內在, 以及坦然美好的心境。 目錄 每日一句 一. 引言 二.通義…

lesson33:Python協程詳解:從原理到實戰的異步編程指南

目錄 一、協程核心概念:輕量級并發的本質 1.1 什么是協程? 1.2 協程與線程/進程的對比 二、協程工作原理:事件循環與協作式調度 2.1 事件循環(Event Loop):協程的"調度中心" 2.2 協作式調度…

深入理解C++模板進階:非類型參數、特化與分離編譯

前言C模板是泛型編程的核心,它允許我們編寫與類型無關的代碼。在掌握了模板的基礎知識后,我們需要進一步了解模板的高級特性,以便更靈活地使用它們。本文將深入探討三個重要的模板進階主題:非類型模板參數、模板特化以及模板的分離…

使用winsw把SpringBoot項目注冊成window服務

目錄 一、使用winsw注冊 1.1、項目打jar包 1.2、下載winsw 1.3、把 WinSW.NET4.exe 重新命名 1.4、編寫m配置文件用于配置注冊信息 1.5、創建文件夾存放你的文件 1.6、安裝服務 1.7、啟動服務 1.8、卸載服務 1.8、停止服務 一、使用winsw注冊 1.1、項目打jar包 例如項目jar包名…

進階向:Python開發簡易QQ聊天機器人

數字化時代的聊天機器人應用在當今數字化時代,聊天機器人已經成為日常生活和商業活動中不可或缺的一部分。根據市場研究數據顯示,全球聊天機器人市場規模預計將在2026年達到102億美元,年復合增長率達到34.75%。這些智能助手正廣泛應用于以下場…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序的用戶留存策略研究

摘要:在數字化商業競爭白熱化的當下,用戶留存成為企業可持續發展的核心命題。本文聚焦開源鏈動21模式AI智能名片S2B2C商城小程序這一創新技術組合,通過分析其技術架構、模式創新與生態閉環的協同效應,揭示其在降低用戶決策成本、提…

單詞的劃分(動態規劃)

題目描述有一個很長的由小寫字母組成字符串。為了便于對這個字符串進行分析,需要將它劃分成若干個部分,每個部分稱為一個單詞。出于減少分析量的目的,我們希望劃分出的單詞數越少越好。你就是來完成這一劃分工作的。輸入第一行,一…

C語言學習筆記——文件

目錄1 文件的概念2 程序文件和數據文件3 二進制文件和文本文件4 流4.1 流的概念4.2 標準流5 文件信息區和文件指針6 處理文件的庫函數6.1 fopen6.2 fclose6.3 fgetc6.4 fputc6.5 fgets6.6 fputs6.7 fscanf6.8 fprintf6.9 fread6.10 fwrite6.11 fseek6.12 ftell6.13 rewind6.14 …

C++語法與面向對象特性(2)

一.inline函數1.inline的基本特性被inline修飾的函數被稱為內聯函數。inline函數設計的初衷是為了優化宏的功能,編譯器會在編譯階段對inline函數進行展開。然而需要注意的是,inline對于編譯器而言是一種建議,它通常會展開一些簡短的&#xff…

Linux中grep命令

Linux 中的 grep 用法詳解grep 是 Linux 中強大的文本搜索工具,用于在文件或輸入流中查找匹配指定模式的行。其基本語法為:grep [選項] "模式" [文件]核心功能基礎搜索在文件中查找包含特定字符串的行:grep "error" log.…

【遙感圖像入門】遙感中的“景”是什么意思?

在遙感成像中,“3景城市影像”和“5景城市影像”中的“景”是遙感數據的基本單位,通常指一次成像過程中獲取的獨立遙感影像塊。這一概念的具體含義需結合技術背景和應用場景理解: 一、“景”的技術定義 單次成像的獨立覆蓋區域 遙感平臺(如衛星、飛機)在特定時間和位置對…

Pytorch-07 如何快速把已經有的視覺模型權重扒拉過來為己所用

下載,保存,加載,使用模型權重 在這一節里面我們會過一遍對模型權重的常用操作,比如: 如何下載常用模型的預訓練權重如何下載常用模型的無訓練權重(只下載網絡結構)如何加載模型權重如何保存權…

C語言零基礎第9講:指針基礎

目錄 1.內存和地址 2.指針變量和地址 2.1 取地址操作符(&) 2.2 指針變量 2.3 解引用操作符(*) 2.4 指針變量的大小 3.指針變量類型的意義 3.1 指針的解引用 3.2 指針 - 整數 3.3 void*指針 4.指針運算 4.1 指針…

013 HTTP篇

3.1 HTTP常見面試題 1、HTTP基本概念: 超文本傳輸協議:在計算機世界里專門在「兩點」之間「傳輸」文字、圖片、音頻、視頻等「超文本」數據的「約定和規范」HTTP常見的狀態碼 [[Pasted image 20250705140705.png]]HTTP常見字段 Host 字段:客戶…

每日面試題20:spring和spring boot的區別

我曾經寫過一道面試題,題目是為什么springboot項目可以直接打包給別人運行?其實這涉及到的就是springboot的特點。今天來簡單了解一下springboot和spring的區別, Spring 與 Spring Boot:從“全能框架”到“開箱即用”的進化之路 …

ClickHouse數據遷移

ClickHouse實例是阿里云上的云實例,想同步數據到本地,本地部署有ClickHouse實例,下面為單庫單表 源實例:阿里云cc-gs5xxxxxxx.public.clickhouse.ads.aliyuncs.com:8123 目標實例:本地172.16.22.10:8123 1、目標實例建…