jmeter安裝
jmeter是apache公司基於java開發的一款開源壓力測試工具,體積小,功能全,使用方便,是一個比較輕量級的測試工具,使用起來非常簡單。因為jmeter是java開發的,所以運行的時候必須先要安裝jdk才可以。jmeter是免安裝的,拿到安裝包之后直接解壓就可以使用,同時它在 linux/windows/macos上都可以使用。
jmeter可以做接口測試和壓力測試。其中接口測試的簡單操作包括做http腳本(發get/post請求、加cookie、加header、加權 限認證、上傳文件)、做webservice腳本、參數化、斷言、關聯(正則表達式提取器和處理json-json path extractor)和jmeter操作數據庫等等。
1、下載地址:https://jmeter.apache.org/download_jmeter.cgi,下載之后解壓
2、配置JDK環境變量:JAVA_HOME, cmd命令窗口下使用java -version查看
3、雙擊Jmeter解壓路徑(apache-jmeter-5.0\bin)的bin下面的jmeter.bat

注意事項:
- 避免在一個有空格的路徑安裝JMeter,這將導致遠程測試出現問題。
- 打開的時候會有兩個窗口,JMeter的命令窗口和JMeter的圖形操作界面,不可以關閉命令窗口
- JMeter的classpath:
- 如果你想添加其他JAR文件到JMeter的classpath中,你必須復制他們到lib目錄中;
- 如果你開發了一個JMeter特定組件或有效的jar文件,復制到lib目錄下的ext目錄中。
- 中英文界面切換:菜單選項(Options)->選擇語言(Choose language)->英文(English/Chinese(simplified))
- 使用JMeter無法驗證JS程序,也無法驗證頁面UI,必須要和Selenium配合來完成Web2.0應用的測試。
jmeter界面說明
主界面
JMeter的主界面主要分為菜單欄、工具欄、樹形標簽欄和內容欄:
- 菜單欄:全部的功能的都包含在菜單欄中。
- 工具欄:工具欄中的按鈕在菜單欄都可以找到,工具欄就相當於菜單欄常用功能的快捷按鈕。
- 計划的樹形標簽欄:樹形標簽欄通常用來顯示測試用例(計划)相關的標簽。
- 內容欄:配合樹形標簽欄顯示,樹形標簽中點擊哪個標簽,內容欄中就顯示相應的內容和操作。

菜單欄
文件
- 關閉:關閉當前打開的JMX文件 。
- 打開:打開一個JMX文件。
- Templates 模板:對常用的功能使用指導。主要有錄制、JDBC測試、webserver測試等等,分為基本步驟和詳細截圖。 如果點用戶鏈接,則會鏈接到apache jmeter 網站查看詳細的步驟和截圖指導。
- 合並:會將多個JMX合並為一個 。
- 保存測試計划:僅保存測試計划 工作台中添加的內容不會被保存。
- 保存測試計划為:將測試計划另存。
- 另存為:可以對工作台和測試計划或者測試例另存為JMX 注意另存為是點哪個位置,存的就是哪個內容。
- save as Test fragment:存為一個測試片段,只有線程組、測試計划、工作台不能 保存為一個測試片段。
- Revert:還原,將現在的jmx還原為已經保存過的JMX
編輯
- Save Node As Image(保存節點為圖片): 將菜單的配置GUI保存為圖片。
- Save Screen As Image(保存屏幕為圖片): 將整個jmeter界面保存為圖片。
- Toggle(切換):類似於java中設置斷點的意思。
查找
- Search: 搜索所有配置中匹配的項,匹配成功顯示為紅色。
- Reset Search: 重置搜索,清除搜索結果。
運行
- 啟動: 啟動運行測試計划
- Start no pauses(不停頓開始): 無停頓啟動運行測試計划 1,可以忽略定時器 2,再啟動時運行更快
- 遠程啟動/停止: 指定一個遠程agent運行/停止測試計划。
- 遠程全部啟動/停止: 讓所有遠程agent運行/停止測試。
- 停止: 停止執行測試計划。
- 關閉: 關閉測試計划。
- Remote Shutdown: 關閉一個指定遠程agent。
- Remote Shutdown All: 關閉所有遠程agent。
- 遠程退出: 指定一個遠程agent退出執行。
- 遠程退出全部: 所有遠程agent退出執行。
- 清除: 清除選擇菜單的執行結果。
- 清除全部: 清除所有菜單的執行結果。
選項
- 函數助手對話框: 在編寫腳本的時候,使用函數助手可以協助生成指定的代碼。
- 外觀: jmeter界面樣式。
- Log Viewer: 日志查看器,選中后可以在右下方查看運行日志。
- SSL管理器: 導入外置的SSL管理器,用於更好的管理證書, JMeter代理服務器不支持記錄 SSL(https)。
- 選擇語言: 選擇界面的語言,目前支持中文、英文、法語、德語等等。中文版很多翻譯不全,可以直接使用英文版的。
- Collapse All: 展開所有菜單。
- Expand All: 折疊所有菜單
幫助
- What’s this node?: 當鼠標放在某個菜單的時候顯示其含義。
- Enable debug: 開啟調試。
- Disable debug: 取消調試。
- Create a heap dump: 創建堆轉儲。這是創建當JVM崩潰的堆轉儲。這個文件可以用堆分析工具(如JHAT),以確定根本原因進行分析。
jmeter測試計划
打開Jmeter頁面:包括測試計划 +工作台。
Test Plan (測試計划):用來描述一個性能測試,包含與本次性能測試所有相關的功能。也就說性能測試的所有內容是於基於一個計划的。
右鍵單擊“測試計划”彈出菜單:

注意
"函數測試模式"復選框,如果被選擇,它會使Jmeter記錄來自服務器返回的每個取樣的數據。如果你在測試監聽器中選擇一個文件,這個數據將被寫入文件。如果你嘗試一個較小的測試來保證Jmeter配置正確並且你的服務器正在返回期望的結果,這是很有用的。這樣做的后果就是這個文件會快速的增大,並且Jmeter的效率會影響。
如果不記錄數據到文件,這個選項就沒有不同了。
Threads (Users)線程 用戶

雖然有三個添加線程組的選項,名字不一樣, 創建之后,其界面是完全一樣的。
測試片段(Test Fragment)
測試片段元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處於一個層級。它與線程組有所不同,因為它不被執行,除非它是一個模塊控制器或者是被控制器所引用時才會被執行。
JMeter有兩種類型的控制器:取樣器(sample)和邏輯控制器(Logic Controller),用這些原件來驅動處理一個測試。
取樣器(Sampler)
取樣器(Sampler)是性能測試中向服務器發送請求,記錄響應信息,記錄響應時間的最小單元,JMeter 原生支持多種不同的sampler , 如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、 JDBC Request Sampler 等,每一種不同類型的 sampler 可以根據設置的參數向服務器發出不同類型的請求。
在Jmeter的所有Sampler中,Java Request Sampler與BeanShell Requst Sampler是兩種特殊的可定制的Sampler。
邏輯控制器(Logic Controller)
邏輯控制器,包括兩類無件,一類是用於控制test plan 中 sampler 節點發送請求的邏輯順序的控制器,常用的有 如果(If)控制器 、 switch Controller 、Runtime Controller、循環控制器等。另一類是用來組織可控制 sampler 來節點的, 如 事務控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用於提供對靜態數據配置的支持。CSV Data Set config 可以將本地數據文件形成數據池 (Data Pool),而對應於HTTP Request Sampler和 TCP Request Sampler等類型的配制無件則可以修改 Sampler的默認數據。
例如:
- HTTP Cookie Manager 可以用於對 HTTP Request Sampler 的 cookie 進行管理。
- HTTP 請求默認值不會觸發Jmeter發送http請求,而只是定義HTTP請求的默認屬性。
定時器(Timer)
定時器(Timer)用於操作之間設置等待時間,等待時間是性能測試中常用的控制客戶端QPS的手段。類似於LoadRunner里面的“思考時間”。 JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同類型的Timer。
前置處理器(Per Processors)
前置處理器用於在實際的請求發出之前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修復符則可以實現URL重寫,當RUL中有sessionID 一類的session信息時,可以通過該處理器填充發出請求的實際的sessionID 。
后置處理器(Post Processors)
后置處理器是用於對Sampler 發出請求后得到的服務器響應進行處理。一般用來提取響應中的特定數據(類似LoadRunner測試工具中的關聯概念)。例如,XPath Extractor 則可以用於提取響應數據中通過給定XPath 值獲得的數據;正則表達式提取器,則可以提取響應數據中通過正則表達式獲得的數據。
斷言(Assertions)
斷言用於檢查測試中得到的相應數據等是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。
監聽器(Listener)
這個監聽器可不是用來監聽系統資源的元件。它是用來對測試結果數據進行處理和可視化展示的一系列元件。 圖形結果、查看結果樹、聚合報告、用表格察看結果都是我們經常用到的元件。
jemter使用
創建線程組

設置線程數

線程組:測試里每個任務都要線程去處理,所有我們后來的任務必須在線程組下面創建。可以在“Test Plan(鼠標右擊) -> 添加 ->Threads(Users) -> 線程組”來建立它,然后在線程組面板里有幾個輸入欄:線程數、Ramp-Up Period(in seconds)、循環次數,其中Ramp-Up Period(in seconds)表示在這時間內創建完所有的線程。如有8個線程,Ramp-Up = 200秒,那么線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對服務器有太大的負載。
Number of Threads(users): 一個用戶占一個線程, 100個線程就是模擬100個用戶
Ramp-Up Period(in seconds): 設置線程需要多長時間全部啟動。如果線程數為200 ,准備時長為10 ,那么需要1秒鍾啟動20個線程。也就是每秒鍾啟動20個線程。
Loop Count:每個線程發送請求的次數。如果線程數為200 ,循環次數為10 ,那么每個線程發送10次請求。總請求數為200*10=2000 。如果勾選了“永遠”,那么所有線程會一直發送請求,直到選擇停止運行腳本。
添加請求

設置請求方法

| 參考: |
