目錄
一、下載下傳安裝方式
二、頁面操作說明:
1.添加線程組
2.線上程組中添加取樣器Sampler
3.添加監聽器
4.添加Http Cookie管理器
5.Jmeter參數化(三種方式)
6.同步定時器(集合點)
7.正規表達式提取器
8.Json提取器
9.響應斷言
10.壓力測試
11.Jmeter生成多元度HTML報告
一些常用小工具,非必須
12.Jmeter函數助手之__time函數(擷取目前時間)
Apache JMeter是Apache組織開發的基于Java的壓力測試工具。純java開發的。
一、下載下傳安裝方式
1.下載下傳安裝JDK(java環境,開源的,網上很容易下載下傳),安裝後配置環境變量
java添加到環境變量
2.下載下傳解壓Jmeter壓縮包(無需安裝,直接解壓即可)
打開jmeter/bin/jmeter.bat(批處理檔案),直接輕按兩下即可打開Jmeter
二、頁面操作說明:
1.添加線程組
測試計劃右鍵添加線程組
線程組頁面說明
2.線上程組中添加取樣器Sampler
右鍵測試計劃添加Sampler
請求必填項
3.添加監聽器
常用的為:檢視結果樹、聚合報告
添加監聽器
檢視結果樹
4.添加Http Cookie管理器
儲存上一步取樣器結果中傳回的Cookie值供下一步使用,不用額外配置,一次自上而下的操作認為是一個使用者,都會添加同一個Cookie。
5.Jmeter參數化(三種方式)
方法1:添加
前置處理器——使用者參數,使用‘${參數名}’進行調用
右鍵測試計劃在前置處理器裡添加使用者參數
在使用者參數中添加值
方法2:使用
函數讀取.csv檔案中的資料(.csv可以用Excel建或者用notepad++)
_CSVRead函數原理:先去讀取csv檔案,然後讀取其中的列,挨個指派給取樣器中的參數。
操作步驟:
點選選項→函數助手對話框(快捷鍵ctrl+shift+F1)→選擇CSVRead函數→第一個參數值放檔案路徑名稱,第二個參數是開始的列,0代表第一列→點選生成
然後複制生成的參數化的字元串到Sampler中粘貼即可,注意改下列号
問題排查:如果請求裡的參數取的有問題,把.csv檔案編碼改為‘以utf-8無BOM格式進行編碼’(在nodepad裡可以改編碼)
方法3:使用元件讀取CSV Data參數(類似方法1使用函數調用.csv檔案資料)
添加csv讀取元件
設定參數解讀
Delimiter:變量之間的分隔符,.csv檔案用‘,’分隔
Allow quoted data?(是否支援引号,預設選False就可以):選擇True,可用雙引号來識别内部包含逗号或雙引号的資料;
比如資料檔案中為1,2,"3,"4",5",為false時,則識别為5個資料a=1,b=2,c=“3,d=“4”,e=5”;為True識别為3個資料a=1,b=2,c=3,"4",5。
Recycle on EOF?:True時讀取檔案到結尾時,再從頭讀取;False時讀取到檔案結尾停止讀取。
Stop thread on EOF?:和上一個Recycle on EOF相關,當Recycle on EOF為False時,當讀取不到資料時是否停止線程,True為停止,False為繼續。Recycle on EOF為True時此項無意義,因為一直能讀到資料。
參數調用
6.同步定時器(Synchronizing Timer),也叫集合點(就是大家在集合好了一起走)
定時器→同步定時器中添加,目的是并發測試,讓多個使用者同時調用接口,原理是等待n個使用者,滿足後才一起運作。
添加同步定時器
同步定時器參數含義
7.正規表達式提取器(屬于後置處理器,請求結束後拿的響應的資料):并不直接涉及請求測試,但是對
資料傳遞起着很大作用。
添加方式:右鍵添加→後置處理器→正規表達式提取器,位于具體的請求裡面,代表擷取這個請求傳回的結果中的值。
正規表達式提取器添加路徑
正規表達式頁面
說明
引用名稱:下一個請求要引用的參數名稱,上圖中名稱為uid,其他請求使用${uid}調用這個參數值。
正規表達式:()起來的部分是要提取的内容,()前後為定位用的内容,一般把目标值前後多複制一些,然後把目标值用()取代
.代表比對任何字元串,不對一些特殊字元做處理,全部取回
+一次或多次
?比對到第一個比對項後就停止
(.+?)經常一起用,代表隻取第一個值
模闆:正規表達式也可以寫多個,用;隔開,$1$代表取第一個模闆的正規表達式
擴充
但是,在JDBC請求後的響應結果中,往往需要關聯的内容是隻有左邊界而沒有右邊界的,此時,我們怎麼去關聯呢?
實作的關鍵就在正規表達式的編寫,提取一段字元串後所有内容用 [^"]+ 實作,這裡的具體執行個體是n([^"]+)n,意思是提取cpgroupname後面所有内容,加上n是因為這裡有換行(空格用s)
8.Json提取器:對于響應結果是Json體的就可以用
Json表達式提取器
Compute concatenation var(suffix_ALL):用于比對到多個結果時,勾選此項會生成一個名稱為“變量名_ALL”的清單,一般不用。
說明:如果json路徑有層級結構,格式
$.key1.key2[0].key3
.區分層級,清單的話用[]下标
9.響應斷言
添加斷言
注意:響應代碼取的的是“取樣器結果”中的Response Code,不是“響應資料”中的。
響應資訊取的是“取樣器結果”中的Response message
響應文本取的是“響應資料”中的資訊
比對模式:包括是包含即可,比對是完全一樣
斷言中也可以使用變量${}作為預期結果,需要跟着使用者改變的話直接加到使用者參數中即可。
10.壓力測試linux伺服器上安裝插件,幫助統計伺服器資源使用情況回報回來,相當于資源擷取器
java -jar /home/AIbert/ServerAgent-2.2.1/CMDRunner.jar(插件位址) --tool PerfMonAgent --udp-port 7777 --tcp-port 4445(配置設定端口)
服務需要每次開啟,測試完成後Crtl+C退出;
Jmeter中添加監聽器
說明:PerfMon Metrics Collector資源監聽器
Response Times Over Time響應時間監聽器
11.Jmeter生成多元度HTML報告- 關閉Jmeter
- 如果沒有.jtl檔案,進入Jmeter下/bin目錄,按住shift+右鍵,選擇在此處打開指令視窗;Ctrl+C退出;
- 運作指令:jmeter -n -t source.jmx -l result.jtl -e -o /tmp/ResultReport
參數說明:-n以非GUI方式運作Jmeter
-t source.jmx腳本路徑(改成你的測試計劃的路徑)
-l result.jtl運作結果儲存路徑(.jtl),此檔案必須不存在
-e 在腳本運作結束後生成HTML報告
-o 用于存放HTML報告的目錄(建議放在根目錄下,目錄中無漢字)
指令行
生成檔案
HTML圖表
圖表說明:
Apdex參數越接近1說明性能表現越好,反之越接近0則越差。
聚合報告
聚合報告圖表,和Jmeter聚合報告資料一緻
錯誤統計頁面
12.Jmeter函數助手之__time函數(擷取目前時間)功能:__time函數可以擷取到目前的時間并傳參供調用
使用方式:1.打開函數助手,找到__time這個函數,可以看到該函數有兩個參數,即格式和參數名稱,兩者都不是必填項。
- 格式 :格式如果不填那麼就是預設擷取目前時間的毫秒數(此項也常被用于接口參數中那些不允許重複的字段);
- 參數名稱 :非必填項,如果填了,則生成的時間會被放到該參數中,可以在任意地方調用這個參數,常用于多接口中某個值使用同一個時間參數的情況;
${__time(,)}:擷取目前時間的毫秒數;
${__time(,time_ms)}:擷取目前時間的毫秒數并存入參數time_ms中;
${__time(/1000,)}:擷取目前時間的秒數;
${__time(/1000,time_s)}:擷取目前時間的秒數并存入參數time_s中;
${__time(yyyy-MM-dd,)}:擷取目前日期;
${__time(yyyy-MM-dd,time_date1)}:擷取目前日期并存入參數time_date1中;
${__time(yyyy-MM-dd HH:mm:ss,)}:擷取目前時間,固定格式;
${__time(yyyyMMddHHmmss,time_2)}:擷取目前時間,固定格式,并存入參數time_2中;
${__time(YMDHMS,)}:擷取目前時間,固定格式
2.點選生成按鈕即可生成函數字元串,copy後放到需要的位置即可;