目錄:導讀
一、jmeter目錄介紹
1.1 backups(備份)
1.2 bin
1.3 docs
1.4 extras
1.5 lib
1.6 licenses
1.7 printable_docs
二、jmeter主要元件介紹
2.1 測試計劃
2.2 Threads
2.3 測試片段
2.4 控制器
三、Jmeter接口測試執行個體
3.1 添加線程組
3.2 添加HTTP請求
3.3 添加檢視結果樹
3.4 參數化
3.5 添加斷言
3.6 添加斷言結果
3.7 添加聚合報告
四、總結
一、jmeter目錄介紹

1.1 backups(備份)
顧名思義,該目錄是個備份目錄,是将自己的各個Jmx腳本進行備份,所謂備份便是每次儲存都會将該腳本進行儲存到該目錄下,如果儲存多次便會儲存多個同樣的檔案,檔案名進行預設遞增更改。
1.2 bin
- examples(例子):該目錄下存放Jmeter官方給的請求模闆
- report-template(報告模闆):該目錄下存放Jmeter的報告模闆(Jmeter是有自己的報告的)t
- templates(模闆):該目錄下存放Jmeter的各類配置模闆,例如:JDBC、Beanshell、ThinkTime等
jmeter目錄和主要元件介紹以及jmeter接口測試執行個體 - Beanshell----:Beanshell請求、監聽、斷言、函數等
- Jmeter.bat:啟動檔案
- jmeter.properties:配置檔案(屬性在官方文檔中有解釋)
- jmeter-server.bat:用于分布式
- shutdown.cmd:硬停止
- stoptest.cmd:軟停止
- xxx.sh:Linux下運作
- user.properties:使用者配置i檔案(同上)
1.3 docs
- api:前面談到Jmeter是開源的,此處便是它的API文檔。
- css:xxxx
- Image:部分圖檔資源
1.4 extras
存放Build等配置,用于第三方內建建構
1.5 lib
存放各類jar包,元件類函數類等
1.6 licenses
許可證等
1.7 printable_docs
使用者手冊
二、jmeter主要元件介紹
2.1 測試計劃
描述一個性能測試,包含本次測試所有相關功能
其中各個配置的資訊詳見另一篇博文:https://blog.csdn.net/qq_34659777/article/details/99960544
2.2 Threads
- Setup thread group:
一種特殊類型的線程,可用于執行預測試操作。即執行測試前進行定期線程組的執行
- Teardown thread group:
一種特殊類型的線程,可用于執行測試後動作。即執行測試結束後執行定期的線程組
以上兩個線程組,舉個例子:loadrunner的腳本除了action裡是真正的腳本核心内容,還有初始化“環境”的初始化腳本和測試完畢後對應的清除資訊的腳本塊,與其對應
- Thread group:
通常添加使用的線程,一般一個線程組可看做一個虛拟使用者組,其中每個線程為一個虛拟使用者
2.3 測試片段
2.5版本之後新增的一個選項,是一種特殊的線程組,在測試樹上與線程組一個層級,但是它不被執行,除非它是一個子產品控制器或者被控制器所引用時才會被執行
2.4 控制器
Jmeter有2種控制器:取樣器(sampler)和邏輯控制器(Logic Controller)
作用:用這些原件驅動處理一個測試
2.4.1 取樣器(Sampler)
是性能測試中向伺服器發送請求,記錄響應資訊,記錄響應時間的最小單元,JMeter 原生支援多種不同的sampler
如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、JDBC Request Sampler 等
每一種不同類型的 sampler 可以根據設定的參數向伺服器發出不同類型的請求。
Java Request Sampler 和 Beanshell Request Sampler 是兩種特殊的可定制的 Sampler (暫不讨論)
2.4.2 邏輯控制器(Logic Controller)
包含兩類原件:
一類是控制Test Plan中Sampler節點發送請求的邏輯順序控制器,常用的有:If Controller、Swith Controller、Loop Controller、Random Controller等
另一類是用來組織和控制Sampler節點的,如Transaction Controller、Throughput Controller等
三、Jmeter接口測試執行個體
3.1 添加線程組
線程組參數詳解:
- 線程數:虛拟使用者數。一個虛拟使用者占用一個程序或線程。設定多少虛拟使用者數在這裡也就是設定多少個線程數。
- Ramp-Up Period(in seconds)準備時長:設定的虛拟使用者數需要多長時間全部啟動。如果線程數為10,準備時長為2,那麼需要2秒鐘啟動10個線程,也就是每秒鐘啟動5個線程。
- 循環次數:每個線程發送請求的次數。如果線程數為10,循環次數為100,那麼每個線程發送100次請求。總請求數為10*100=1000 。如果勾選了“永遠”,那麼所有線程會一直發送請求,一到選擇停止運作腳本。
- Delay Thread creation until needed:直到需要時延遲線程的建立。
-
排程器:設定線程組啟動的開始時間和結束時間(配置排程器時,需要勾選循環次數為永遠)
持續時間(秒):測試持續時間,會覆寫結束時間
啟動延遲(秒):測試延遲啟動時間,會覆寫啟動時間
啟動時間:測試啟動時間,啟動延遲會覆寫它。當啟動時間已過,手動隻需測試時目前時間也會覆寫它。
結束時間:測試結束時間,持續時間會覆寫它。
現在先試一個簡單的例子,後面再進行詳細的配置。
3.2 添加HTTP請求
這裡我用了聚合資料的新聞API:
接口文檔如上,在JMeter中填寫就是這個樣子:
Http請求主要參數詳解:
- Web伺服器
協定:向目标伺服器發送HTTP請求協定,可以是HTTP或HTTPS,預設為HTTP
伺服器名稱或IP :HTTP請求發送的目标伺服器名稱或IP
端口号:目标伺服器的端口号,預設值為80,非必填項
- Http請求
方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路徑:目标URL路徑(URL中去掉伺服器位址、端口及參數後剩餘部分)
Content encoding :編碼方式,預設為ISO-8859-1編碼,也可配置為utf-8
- 下面的幾個多選框
自動重定向:如果選中該項,發出的http請求得到響應是301/302,jmeter會重定向到新的界面
Use keep Alive:jmeter 和目标伺服器之間使用 Keep-Alive方式進行HTTP通信(預設選中)
Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用
- Parameters
parameter是指函數定義中參數
- Body Data
實體資料,就是請求封包裡面主體實體的内容,一般我們向伺服器發送請求,攜帶的實體主體參數,可以寫入這裡
- Files Upload
指的是:從HTML檔案擷取所有有内含的資源:被選中時,發出HTTP請求并獲得響應的HTML檔案内容後還對該HTML 進行Parse 并擷取HTML中包含的所有資源(圖檔、flash等):(預設不選中)
如果使用者隻希望擷取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載下傳的特定資源表達式,隻有能比對指定正規表達式的URL指向資源會被下載下傳
3.3 添加檢視結果樹
3.4 參數化
在這裡我們添加一個新的變量:
然後在之前的HTTP請求中調用,調用格式為${keji_type}:
啟動就會在結果樹中檢視到相應的結果。
3.5 添加斷言
因為我們剛剛查找的是科技類的文章,是以我們來斷言,響應結果中是否有“科技”字段。
3.6 添加斷言結果
3.7 添加聚合報告
存放性能測試報告,在每次測試之前需要點選小掃把按鈕清除之前的調試結果。
聚合報告參數詳解:
- Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值
- #Samples:請求數——表示這次測試中一共發出了多少個請求,如果模拟10個使用者,每個使用者疊代10次,那麼這裡顯示100
- Average:平均響應時間——預設情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,以Transaction 為機關顯示平均響應時間
- Median:中位數,也就是 50% 使用者的響應時間
- 90% Line:90% 使用者的響應時間
- Min:最小響應時間
- Max:最大響應時間
- Error%:錯誤率——錯誤請求數/請求總數
- Throughput:吞吐量——預設情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
- KB/Sec:每秒從伺服器端接收到的資料量,相當于LoadRunner中的Throughput/Sec
一般而言,性能測試中我們需要重點關注的資料有: #Samples 請求數,Average 平均響應時間,Min 最小響應時間,Max 最大響應時間,Error% 錯誤率及Throughput 吞吐量。
這樣,我們就完成了一個完整HTTP接口的JMeter性能測試腳本編寫。
四、總結
如果你對軟體測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入:軟體測試技術群:603401995,群裡的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。