jmeter的基礎講解
一. 性能測驗
1.1. 性能測驗是什么
基于協議模擬用戶發出請求,對服務器形成一定負載,來測驗服務器的性能指標是否滿足要求,性能指標關注點:時間性能、空間性能
性能測驗定義:指通過測驗工具模擬多種正常、峰值以及例外負載條件來對系統的各項性能指標進行測驗,
1.2. 性能測驗工具

二. Jmeter簡介
2.1. 我們為什么使用Jmeter
開源,免費,基于Java撰寫,可集成到其他系統可拓展各個功能插件
支持介面測驗,壓力(負載和壓力)測驗等多種功能,支持錄制回放,
入門簡單相較于自己撰寫框架活其他開源工具,有較為完善的UI界面,便于介面除錯
多平臺支持,可在Linux,Windows,Mac上運行,支持多協議
2.2. Jmeter的作用
介面測驗 postman/jmeter/soapui
性能測驗 jmeter/loadrunner
資料庫測驗 jmeter/loadrunner
三:jmeter的下載安裝配置啟動
3.1:jmeter的下載
Windows下Jmeter下載安裝登錄 http://jmeter.apache.org/download_jmeter.cgi ,根據自己平臺,下載對應檔案
或者使用我下載好的直接使用(D:\install\jmeter\apache-jmeter-4.0)
3.2:JAVA環境環境變數的配置
安裝JDK,配置環境變數(具體步驟不做介紹)(D:\install\java\jdk1.8.0_131)


3.3:啟動
方式1:在命令列中輸入jmeter
方式2:bin目錄下執行jmeter.bat(window)或者jmeter.sh(linux)
四:Jmeter的目錄結構
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XJ8zB0AE-1639549167408)(C:\Users\jack\AppData\Local\YNote\data\weixinobU7VjlILcCcKBSdTDneqc1JGd-o\40df30fd834c4c8383c76abbca3bfdb1\ip_image010.jpeg)]](https://img.uj5u.com/2021/12/17/288853170813081.png)
/bin 目錄(常用檔案介紹)
examples:目錄下包含Jmeter使用實體
ApacheJMeter.jar:JMeter原始碼包
jmeter.bat:windows下啟動檔案
jmeter.sh:Linux下啟動檔案
jmeter.log:Jmeter運行日志檔案
jmeter.properties:Jmeter組態檔
jmeter-server.bat:windows下啟動負載生成器服務檔案
jmeter-server:Linux下啟動負載生成器檔案
/docs目錄——Jmeter幫助檔案
/extras目錄——提供了對Ant的支持檔案,可也用于持續集成
/lib目錄——存放Jmeter依賴的jar包,同時安裝插件也放于此目錄
/licenses目錄——軟體許可檔案,不用管
/printable_docs目錄——Jmeter用戶手冊
五:為什么做性能測驗
想想一下雙11購物
想想一下現在12306搶票
六:簡單的模擬性能測驗
練習:模擬多用戶訪問百度網址
6.1:執行緒組
作用:模擬虛擬用戶
行程: 一個正在執行的程式對應一個行程
執行緒: 一個行程有多個執行執行緒
執行緒組: 按照執行緒性質對執行緒分組
三者關系: 一個行程有多個執行緒組,一個執行緒組有多個執行緒
操作:在測驗計劃>>添加>>Threads>>執行緒組
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-RTwGGDGl-1639549167409)(C:\Users\jack\AppData\Roaming\Typora\typora-user-images\image-20210709175029134.png)]](https://img.uj5u.com/2021/12/17/288853170813085.png)
6.1.1. 執行緒組主要包含三個引數:執行緒數、準備時長(Ramp-Up Period(in seconds))、回圈次數,
6.1.2. 執行緒數:虛擬用戶數,一個虛擬用戶占用一個執行緒,設定多少虛擬用戶數在這里也就是設定多少個執行緒數,
6.1.3. 準備時長(秒):設定的虛擬用戶數需要多長時間全部啟動,如果執行緒數為20 ,準備時長為10 ,那么需要10秒鐘啟動20個執行緒,也就是每秒鐘啟動2個執行緒,
6.1.4. 回圈次數:每個執行緒發送請求的次數,如果執行緒數為20 ,回圈次數為100 ,那么每個執行緒發送100次請求,總請求數為20*100=2000 ,如果勾選了“永遠”,那么所有執行緒會一直發送請求,一到選擇停止運行腳本,
6.1.5. 調度器:設定執行緒組啟動的開始時間和結束時間(配置調度器時,需要勾選回圈次數為永遠)
6.1.6. 持續時間(秒):測驗持續時間
6.1.7. 啟動延遲(秒):測驗延遲啟動時間
6.2:sampler(采樣器)
作用:向服務器發送請求,記錄回應資訊,記錄回應時間的最小單元(http,https,ftp,jdbc等)
操作:在執行緒組>>添加>>sampler>>http請求(常用)

| 一個HTTP請求有著許多的配置引數,下面將詳細介紹: |
|---|
| 名稱:本屬性用于標識一個取樣器,建議使用一個有意義的名稱, |
| 注釋:對于測驗沒有任何作用,僅用戶記錄用戶可讀的注釋資訊, |
| 服務器名稱或IP :HTTP請求發送的目標服務器名稱或IP地址, |
| 埠號:目標服務器的埠號, |
| 方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等, |
| Content encoding :內容的編碼方式,默認值為iso8859 |
| 路徑:目標URL路徑(不包括服務器地址和埠) |
注意事項:
1:引數傳遞中Parameters和Body Data不能同時使用,必須要保證其中至少一個為空,否則提示錯誤
2:在傳遞的引數中,介面引數名和引數值兩邊不能有空格,否則會報錯
6.3:監聽器
作用:監聽器可以動態的監控JMeter測驗執行的程序,實時查看測驗結果
操作:在執行緒組>>添加>>監聽器>>聚合報告/查看結果樹

| 通程序看結果樹,我們可以看到每個請求的結果,其中紅色的是出錯的請求,綠色的為通過 |
|---|
| Thread Name:執行緒組名稱 |
| Sample Start: 啟動開始時間 |
| Load time:加載時長 |
| Latency:等待時長 |
| Size in bytes:發送的資料總大小 |
| Headers size in bytes:發送資料的其余部分大小 |
| Sample Count:發送統計 |
| Error Count:互動錯誤統計 |
| Response code:回傳碼 |
| Response message:回傳資訊 |
| Response headers:回傳的頭部資訊 |

| lable:對應每一個http請求,顯示的是http請求的Name,如百度http請求name為baidu |
|---|
| #Samples:表示這一次的測驗中一共發出了多少請求,如上圖所示,sougou和baidu的http請求每個都發出30個請求 |
| Average:平均回應時間,指的是所有的請求的平均回應時間,如上圖的30個請求的總的回應時間除以30得出的平均回應時間,默認的情況下是單個請求的平均回應時間,但當使用了“事務控制器”時,則以事物為單位顯示平均回應時間 |
| Median:中位數,也就是50%用戶的回應時間 |
| 90%Line:90%用戶的回應時間 |
| Min:最小回應時間 |
| Max:最大的回應時間 |
| Error%:本次測驗中出現錯誤的請求的數量/請求的總數,如上圖所示,本次的測驗中,sougou的http請求66.6%的請求出錯,而baidu的請求則沒有出錯的請求 |
| Throughput:吞吐量,默認情況下表示每秒完成的請求數,如上圖所示,每秒完成的請求數分別為6.6個每秒,6.2個每秒 |
| Recived KB/Sec:每秒從服務器端接收到的資料量,以kb為計算的單位 |
七:jmeter中插件的講解
7.1:jmeter組件描述
| 1.測驗計劃是使用 JMeter 進行測驗的起點,它是其它 JMeter 測驗元件的容器, |
|---|
| 2.執行緒組:代表一定數量的并發用戶,它可以用來模擬并發用戶發送請求, |
| 3、取樣器(Sampler):模擬各種請求,所有實際的測驗任務都由取樣器承擔,存在很多種請求,如:HTTP 、ftp請求等等, |
| 4、監聽器:負責收集測驗結果,同時也被告知了結果顯示的方式,功能是對取樣器的請求結果顯示、統計一些資料(吞吐量、KB/S……)等, |
| 6、斷言:用于來判斷請求回應的結果是否如用戶所期望,是否正確,非常實用 |
| 7、定時器:負責定義請求(執行緒)之間的延遲間隔,模擬對服務器的連續請求, |
| 5、邏輯控制器:允許自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列, |
| 8. 配置元件維護Sampler需要的配置資訊,并根據實際的需要會修改請求的內容, |
| 9. 前置處理器和后置處理器負責在生成請求之前和之后完成作業,前置處理器常常用來修改請求的設定,后置處理器則常常用來處理回應的資料, |
7.2:斷言
作用:斷言(Assertions)可以用來判斷回應的資料是否符合預期
7.2.1:回應斷言
操作:在執行緒組>>添加>>斷言>>回應斷言


7.2.2:json斷言
操作:在執行緒組>>添加>>斷言>>json斷言


7.2.3:Xpath斷言
定義:Xpath即為XML路徑語言,它是一種用來確定XML檔案中某部分位置的語言,xpath基于XML的樹狀結構,提供在資料結構樹中尋找節點的能力
操作:在執行緒組>>添加>>斷言>>xpath斷言


區別:回應斷言(適用任何的回傳型別),json斷言(只適用于json的回傳型別),Xpath Assertion斷言針對回傳資訊為Xpath的資料型別進行斷言
7.3:定時器
定時器(Timer)負責定義請求之間的延遲間隔
操作:在執行緒組>>添加>>定時器>>固定定時器
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OzCEi9FF-1639549167416)(C:\Users\jack\AppData\Roaming\Typora\typora-user-images\image-20210709231951677.png)]](https://img.uj5u.com/2021/12/17/2888531708130815.png)
7.3.1:集合點
集中在一個時間點,釋放全部的執行緒(秒殺)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gCZJbXnl-1639549167416)(C:\Users\jack\AppData\Roaming\Typora\typora-user-images\image-20211208174734876.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ky151aOq-1639549167417)(C:\Users\jack\AppData\Roaming\Typora\typora-user-images\image-20211208175317538.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cUckFMnL-1639549167417)(C:\Users\jack\AppData\Roaming\Typora\typora-user-images\image-20211208175403880.png)]
7.4:邏輯控制器
7.4.1:事務控制器
操作:在執行緒組>>添加>>邏輯控制器>>事務控制器


7.4.2:回圈控制器
操作:在執行緒組>>添加>>邏輯控制器>>回圈控制器



7.5:后置處理器
7.5.1.:http請求默認值(常用)
http請求默認值,會在發送http請求的時候,自帶這些引數,復用的作用
操作:執行緒組>>配置原件>>http請求默認值


疑問:http請求默認值之后
1:什么時候添加? --------大部分請求引數是相同的
2:如果添加http請求默認值之后,在別的介面中還填寫的http請求默認值中不同的資料,那么還以誰為準了? ----填寫了以自己為準,不填寫以http默認值為準
7.5.2:正則運算式
常見的正則運算式如下(在線正則運算式)

操作須知
1)確定取值的范圍
2)確定取值的左右邊界,最好是能夠唯一確定的值的邊界
3)如果要查看我們的值是否正確,可以使用Debug Sampler
參考${變數名}
案例:我們以手機號碼歸屬地回傳的歸屬地傳遞第二個介面查詢所屬地的天氣情況
回傳值為:{"resultcode":"200","reason":"Return Successd!","result":{"province":"北京","city":"北京","areacode":"010","zip":"100000","company":"移動","card":""},"error_code":0}
操作:執行緒組>>添加>>后置處理器>>正則運算式提取器



7.5.3:JSON Extractor
通過json運算式提取資料
操作:執行緒組>>添加>>后置處理器>>JSON Extractor




轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382857.html
標籤:其他
上一篇:使用postman測驗帶token驗證的介面(若依為例)
下一篇:java版Spring Cloud+SpringBoot+mybatis+uniapp b2b2c 云架構原始碼之運行環境支持
