一、Jmeter簡介

Jmeter是由Apache公司開發的一個純Java的開源項目,即可以用于做接口測試也可以用于做性能測試。
Jmeter具備高移植性,可以實作跨平台運作。
Jmeter可以實作分布式負載。
Jmeter采用多線程,允許通過多個線程并發取樣或通過獨立的線程對不同的功能同時取樣。
Jmeter具有較高擴充性。
二、Jmeter安裝
1、安裝JDK,必須JDK1.7以上的版本,推薦1.8的版本(這個不是重點,不多說)
參見(21條消息) windows下安裝jmeter? mac下安裝jmeter? So Easy那多不是事!寫給jmeter入門的朋友!_測試逍遙子的專欄-部落格
2、進入官網:Apache JMeter - Download Apache JMeter
下載下傳最新的Jmeter版本,下載下傳後解壓到非中文目錄,如:D:\
3、jmeter是綠色版,解壓就能使用了
解壓jmeter壓縮包後,進入bin目錄,輕按兩下jmeter.bat檔案。就能看到你想要的jmeter界面啦。是不是很簡單呢?
三、設定Jmeter語言為中文環境
1、臨時設定
Jmeter菜單欄選擇Options --->Choose LanguageàChinese (Simplified)
這種方法,重新開機軟體後又變為英文環境了。
2、永久設定
進入apache-jmeter-5.2.1\bin目錄,找到“jmeter.properties”檔案,在檔案的第37行後添加“language=zh_CN”,儲存之後再打開jmeter就永久變為中文環境了。
下邊列舉了一下這個檔案的關鍵配置如下:
#預設語言設定
language=en
#捕捉cookie開關
CookieManager.save.cookies=true
#配置編輯器的字型和尺寸
jsyntaxtextarea.font.family=宋體
jsyntaxtextarea.font.size=20
#配置預設編碼格式
sampleresult.default.encoding=UTF-8
#SSL 配置:重點關注下面幾個配置# 指定 HTTPS 協定層
# 指定 HTTPS 協定層
https.default.protocol=TLS
# 指定 SSL 版本,實際應用中可能需要修改
https.default.protocol=SSLv3
# 設定啟動的協定
https.socket.protocols=SSLv2Hello SSLv3 TLSv1
# 緩存控制,控制 SSL 是否可以在多個疊代中重用
https.use.cached.ssl.context=true
#JMeter 測試項目自動備份配置
# 設定是否啟用自動備份,預設是 true
jmeter.gui.action.save.backup_on_save=true
# 設定自動備份目錄,預設備份至 JMeter 根目錄的 backups下
jmeter.gui.action.save.backup_directory=
# 設定自動備份項目數,預設為最近 10 個
jmeter.gui.action.save.keep_backup_max_count=10
#遠端主機配置
# 配置遠端主機的 IP,預設為本機。用逗号","可以設定多個遠端主機
remote_hosts=127.0.0.1
# 多個遠端主機指定示例如下,其中:後為端口
remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
對于 RMID 的配置請直接看配置檔案中的選項說明
#日志管理配置
# 設定日志格式
log_format_type=default
# 設定日志輸出級别
log_level.jmeter=INFO
# 設定 junit 日志輸出級别
log_level.jmeter.junit=DEBUG
# 設定日志輸出目标檔案,預設為 jmeter.log
log_file=jmeter.log
# jmeter.bat 關鍵配置修改
#為了更優化的使用 jmeter,需要對 jmeter.bat 中的一些配置根據目前機器的配置進行優化,這裡進行關鍵配置項說明,大家根據自己的機器的配置來進行修改。jvm 相關配置,大概在 80 行左右,找到這些配置,對其中的數值根據目前機器的硬體配置來修改。
set HEAP=-Xms2048m -Xmx2048m
set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
if %current_minor% LEQ "8" (
rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)
# 設定輸出報告模闆格式
jmeter.save.saveservice.output_format = csv
四、Jmeter主要元件
1、測試計劃:是使用 JMeter 進行測試的起點,它是其它 JMeter測試元件的容器
2、線程組:代表一定數量的使用者,它可以用來模拟使用者并發發送請求。實際的請求内容在Sampler中定義,它被線程組包含。
3、配置元件:維護Sampler需要的配置資訊,并根據實際的需要修改請求的内容。
4、前置處理器:負責在請求之前工作,常用來修改請求的設定
5、定時器:負責定義請求之間的延遲間隔。
6、取樣器(Sampler):是性能測試中向伺服器發送請求,記錄響應資訊、響應時間的最小單元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一種不同類型的sampler 可以根據設定的參數向伺服器發出不同類型的請求。
7、後置處理器:負責在請求之後工作,常用擷取傳回的值。
8、斷言:用來判斷請求響應的結果是否如使用者所期望的。
9、監聽器:負責收集測試結果,同時确定結果顯示的方式。
10、邏輯控制器:可以自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模拟複雜的請求序列。
五、Jmeter元件的作用域和執行順序
1.元件作用域
配置元件:影響其作用範圍内的所有元件。
前置處理器:在其作用範圍内的每一個sampler元件之前執行。
定時器:在其作用範圍内的每一個sampler有效
後置處理器:在其作用範圍内的每一個sampler元件之後執行。
斷言:在其作用範圍内的對每一個sampler元件執行後的結果進行校驗。
監聽器:在其作用範圍内對每一個sampler元件的資訊收集并呈現。
總結:從各個元件的層次結構判斷每個元件的作用域。
2.元件執行順序:
配置元件->前置處理器->定時器->取樣器->後置處理程式->斷言->監聽器
注意事項:
1.前置處理器、後置處理器和斷言等元件隻能對取樣器起作用,是以,如果在它們的作用域内沒有任何取樣器,則不會被執行。
2.如果在同一作用域内有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序依次執行。
六、Jmeter進行接口測試流程
使用Jmeter進行接口測試的基本步驟如下:
1.測試計劃
2.線程組
3.HTTP Cookie管理器
4.Http請求預設值
5.Sampler(HTTP請求)
6.斷言
7.監聽器(檢視結果樹、圖形結果、聚合報告等)
七、Jmeter進行接口測試流程步驟詳解
1、測試計劃
打開Jmeter,在菜單左側出現 “測試計劃”。在這裡測試計劃我們可以把它了解成建立的空白項目,在這個空白項目下面可以添加一系列的接口。
2、線程組
添加方法:右鍵點選Test Plan->添加->線程(使用者)->線程組。
元件描述:一個線程組可以看做一個虛拟使用者組,線程組中的每個線程都可以了解為一個虛拟使用者。
(1)線程數:即虛拟使用者數。設定多少個線程數也就是設定多少虛拟使用者數
(2)Ramp-Up時間(秒):設定虛拟使用者數全部啟動的時長。如果線程數為20,準備時長為10秒,那麼需要10秒鐘啟動20個線程。也就是平均每秒啟動2個線程。
(3)循環次數:每個線程發送請求的個數。如果線程數為20,循環次數為10,那麼每個線程發送10次請求。總請求數為20*10=200。如果勾選了“永遠”, 那麼所有線程會一直發送請求,直到手動點選工具欄上的停止按鈕,或者設定的線程時間結束。
3、HTTP Cookie管理器
添加方法:右鍵線程組->添加->配置元件->HTTP Cookie管理器。
元件描述:HTTP Cookie管理器可以像浏覽器一樣存儲和發送cookie,如果你要發送一個帶cookie的http請求,cookie manager會自動存儲該請求的cookies,并且後面如果發送同源站點的http請求時,都可以用這個cookies。
4、HTTP請求預設值
添加方法:右鍵線程組->添加->配置元件->HTTP請求預設值。
元件描述:HTTP請求預設值是為了友善填寫後續内容而設定。主要填寫[伺服器名稱或IP]和[端口号],後續的HTTP請求中就不用每次都填寫IP位址和端口号了。
5、HTTP請求
添加方法:右鍵線程組->添加->取樣器->HTTP請求。
元件描述:HTTP請求包括接口請求方法、請求路徑和請求參數等。
HTTP請求詳解
(1)名稱:本屬性用于辨別一個取樣器,建議使用一個有意義的名稱。
(2)注釋:對于測試沒有任何作用,僅使用者記錄使用者可讀的注釋資訊。
(3)伺服器名稱或IP :HTTP請求發送的目标伺服器名稱或IP位址。
(4)端口号:目标伺服器的端口号,預設值為80 。
(5)協定:向目标伺服器發送HTTP請求時的協定,可以是HTTP或者是HTTPS ,預設值為http
(6)方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、TRACE、OPTIONS、DELETE等。
(7)路徑:目标URL路徑(不包括伺服器位址和端口)
(8)内容編碼:内容的編碼方式,預設值為iso8859
(9)自動重定向:如果選中該選項,當發送HTTP請求後得到的響應是302/301時,JMeter 自動重定向到新的頁面。
(10)使用keep Alive :保持jmeter 和目标伺服器之間的活躍狀态,預設選中
(11)對Post使用multipart/from-data:當發送POST 請求時,使用multipart/from-data方法發送,預設不選中。
(12)同請求一起發送參數 : 在請求中發送URL參數,對于帶參數的URL ,jmeter提供了一個簡單的對參數化的方法。使用者可以将URL中所有參數設定在本表中,表中的每一行是一個參數值對(對應RUL中的 名稱1=值1)。
6、響應斷言
添加方法:右鍵HTTP請求->添加->斷言->響應斷言。
元件描述:檢查接口是否通路成功。如果檢查失敗的話會提示找不到斷言的内容,沒提示的話就代表成功了。
Apply to
指斷言作用範圍,通常發出一個請求隻觸發一個請求,是以勾選“main sample only”就可以;若發一個請求可以觸發多個伺服器請求,就有main sample 和sub-sample之分了。
(1)Main sample and sub-samples:作用于主請求和子請求
(2)Main sample only:僅僅隻作用于主請求
(3)Sub-samples only:僅僅隻作用于子請求
(4)Jmeter Variable:作用于jmeter變量(輸入框内輸入jmeter變量名稱)
測試字段
響應文本(比對傳回的json資料)、響應代碼(比對傳回碼:如200, 404,500等)、響應資訊(比對響應資訊如“OK”字樣)、響應頭(比對響應頭)、請求頭(比對請求頭)、URL樣本(比對請求的url連結,如果有重定向則包含請求url 和 重定向url)、[文檔(文本)](比對響應資料的文本形式)、忽略狀态(一個請求有多個響應斷言,第一個響應斷言選中此項,當第一個響應斷言失敗時可以忽略此響應結果,繼續進行下一個斷言。如果下一個斷言成功則還是判定事務是成功的)、請求資料(比對請求資料)
模式比對規則
包括:響應内容包含需要比對的内容即代表響應成功,支援正規表達式。
比對:響應内容要完全比對需要比對的内容即代表響應成功,大小寫不敏感,支援正規表達式。
字元串:響應内容包含需要比對的内容才代表響應成功,大小寫敏感,不支援正規表達式
相等:響應内容要完全等于需要比對的内容才代表響應成功,大小寫敏感,不支援正規表達式
否:相當于取反,如果結果為true,勾上否就是false
或者:如果不想用AND連接配接(所有的模式都必須比對,斷言才算成功),用OR選項可以用于将多個斷言模式進行OR連接配接(隻要一個模式比對,斷言就是成功的)
測試模式
其實就是斷言的資料。點選“添加”按鈕,輸入要斷言的資料。
7、增加監聽器
添加方法:線程組 ->右鍵添加 ->監聽器 ->察看結果樹。一般還會一并添加圖形結果、聚合報告。
元件描述:樹狀形式顯示接口的通路結果,包括請求結果、請求内容、伺服器的響應内容。
更多參見:
使用 JMeter 進行壓力測試 - 曉晨Master - (cnblogs.com)
(21條消息) JMeter性能測試,完整入門篇_LAMO-_jmeter性能測試