Jmeter簡單玩一把
- 2019 年 11 月 3 日
- 筆記
jmeter作為瀏覽器與web伺服器之間的代理,可以捕獲瀏覽器的請求和web伺服器的響應,通過執行緒來模擬真實用戶對web伺服器的訪問壓力。基本原理是建立一個執行緒池,多執行緒運行取樣器產生大量負載,在運行過程中通過斷言來驗證結果的正確性,可以通過監聽來記錄測試結果。
下載安裝
http://jmeter.apache.org/download_jmeter.cgi
目錄介紹
起步使用
點擊~/bin/jmeter.bat
後台啟動進程,並且提示通過命令執行方式【jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder】
顯示:
創建執行緒組
在TestPlan位置點擊右鍵選擇新建執行緒組如圖:
執行緒組是一系列執行緒的集合,每一個執行緒代表著一個正在使用應用程式的用戶。在jmeter 中,每個執行緒意味著模擬一個真實用戶向伺服器發起請求。在 jmeter 中,執行緒組組件運行用戶設置執行緒數量、初始化方式等等配置。
成功顯示:
解釋說明:
作用:是一個測試計劃執行的開始點,裡面包含sampler,controller等等。
參數:
Ø Name:執行緒組的名稱,可以隨意修改
Ø Comments:備註資訊,記錄一些參數設置的原因和策略可填可不填
Ø Action to be taken after a Sampler error:
執行緒內的取樣器失敗後,接下來採取的動作:
Ø Continue:繼續執行接下來的操作
Ø Start Next Thread Loop:執行下一個執行緒循環
Ø Stop Thread:退出該執行緒,不在執行該執行緒的任何操作
Ø Stop Test:等待該執行緒的取樣結束後,結束整個測試,不會立即停止
Ø Stop Test Now:立即停止整個測試
Thread Properites:執行緒屬性
Ø Number of Threads(users):執行緒數,也就是一共要啟動多少執行緒用來並發執行
Ø Ramp-uo Period(in seconds):多長時間將上一步設置的執行緒數啟動完畢。設置不同的值可以驗證在不同並發的情況下驗證系統的性能
Ø Loop Count:設置sampler循環的次數,勾上Forever後就會死循環一直執行
Ø Scheduler:調度器,日程表。選上之後才能設置執行時間
Ø Number of Threads * Loop Count就是Sampler執行的次數,可以在View Results Tree中看到。
Scheduler Configuration:
Ø Duration(seconnds):請求的執行時間(Loop Count的Forever必須勾上才有效)
Ø Startup delay(seconds):延遲時間,一般不用。但是如果想在指定的時間執行測試,可以用此配置。
Ø setUp Thread Group、Thread Group和tearDown Thread Group3種執行緒組都可以設置。
Thread Group中的執行規則
Ø setUp、Thread Group和tearDown 串列執行
編寫http請求
成功顯示:
解釋:
用來向伺服器發送HTTP/HTTPS請求
參數說明:
Ø Name:組件名,可以修改
Ø Comment:注釋資訊,可寫可不寫
Web Server:
Ø Protocol[http]:不寫就是默認的HTTP,可以根據實際情況指定
Ø Server Name or IP:IP或者域名,比如cn.bing.com(不要加http://,默認就帶;不能有路徑)
HTTP Request:
Ø Port Number:HTTP默認為80,https為443
Ø Path:/表示根目錄
Ø Content encoding:內容編碼,如果請求有亂碼的話可以將其配置為UTF-8或者ANSI
Ø 配置項:默認值即可
Ø Paramters:配置請求參數,比如添加key–àvalue、編碼格式(url encode)、文件類型
Ø Body data:當選擇body Data時候並且輸入json請求體後Parameters選項不能點擊。【parameters and Body Data and Files Upload】不能同時選擇。
Ø Files upload:上傳文件,一般不用。
添加查看結果樹
點擊運行
顯示結果
說明
查看結果的常用方式
Ø Text:默認的顯示方式,原始的HTML文本
Ø HTML:以類似瀏覽器的格式查看響應數據
Ø RegExp Tester:支援正則用來做檢查點或者關聯使用;(在做關聯的時候可以在這裡做調試是否寫得是否正確)
Ø XPath Tester:xpath方式提取內容;(在做關聯的時候可以在這裡做調試是否寫得是否正確)
Ø Scroll automatically:請求很多時可以自動滾屏
顯示資訊
Ø Sampler Result:本次請求的匯總資訊
Ø 請求資訊:分為請求數據和請求頭
Ø 響應資訊:分為響應數據和響應頭
Filename:可以將執行結果保存到Filename指定的文件中,注意:默認保存在jmeter的bin目錄下。如果勾選了後面的Errors,那麼只保存錯誤資訊;如果勾選了Success,那麼只保存執行成功的資訊;都不勾選的話保存所有的資訊
Browser:可以打開之前保存過的測試文件,將測試資訊顯示到下面的result欄中。如果勾選了後面的Errors,那麼只顯示錯誤資訊;如果勾選了Success,那麼只顯示執行成功的資訊;都不勾選的話顯示所有的資訊
Sampler result結果說明:
Summary RePort展示
顯示結果
解釋聚合報告標籤的含義:
Ø Label每個jmeter的element都有一個那麼屬性,這個顯示name屬性的值
Ø #sampler:表示在本次測試中一共發出請求數,11個用戶,循環1次就是1
Ø Average:平均響應時間,,默認情況下是單個request的平均響應時間,當使用了transaction controller時,也可以以transaction為單位顯示平均響應時間
Ø Median:中位數,50%用戶的訪問時間在這個時間以下
Ø 90%line:90%用戶的訪問時間在這個時間以下
Ø min:最小響應時間
Ø max:最大響應時間
Ø error%:本次測試出現的錯誤數/總的請求數
Ø Throughput:吞吐量,默認情況下表示每秒完成的請求數(Request per second)
Ø KB/sec:每秒從伺服器接受到的數據量,相當於LR中Throughput/sec
單位毫秒。
參數化小試
Jmeter參數CSV Data Set Config用文件做參數化
選擇配置原件中的CSV Data Set Config
顯示
參數說明:
Ø Filename:文件路徑。可以是相對路徑也可以是絕對路徑。可以是.txt文件也可以是.csv文件
Ø File encoding:文件編碼,默認問ANSI,其它編碼根據實際情況配置
Ø Variables Names(comma-delimited):變數名,表示將每一列賦值給一個變數,有多個列時同逗號分隔,後續通過${}引用
Ø Ignore first line:忽略首行
Ø Delimiter(use "t" for tab):分隔符,默認為逗號
Ø Allow quoted data?:數據是否帶引號,默認為false,如果數據中有引號的話就會把數據連同引號一起賦值給變數;如果為Flase的話就會把引號去掉
Ø Recycle on EOF?:遇到文件結束符是否再次循環,默認為True,也就是繼續從文件開頭取值
Ø Stop thread on EOF?:遇到文件結束符是否結束執行緒,默認為False也就是不停止。注意:當【Recycle on EOF?】設置為True時,此項設置無效;當【Recycle on EOF?】設置為False,此項也設置為False,那麼到達文件最後在引用變數就會變為<EOF>
Ø Sharing mode:共享模式。默認為all threads,還支援current thread group /current thread /edit
共享模式小結
Ø all treatds:csv文件中的數據是共享的,不管是執行緒數還是循環次數,都會觸發介面請求參數來使用csv文件中不同行的變數數據
Ø current thread group:在執行緒組內,執行緒數和循環次數都會觸發介面請求參數變化
Ø current thread:循環了數據就會變化,執行緒數不能決定更新csv文件中的數據,循環次數才可以
參數文件使用小指導
編寫內容
獲取結果
顯示結果:
Html報告
如果想生成html報告可以參考,如下命令生成即可:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder
Bean Shell小說明
一、在造數據時候,需要獲取結果到保存到本地 有兩種方式:第一種直接通過獲取結果保存到本地,第二種通過資料庫導出 今天介紹第一種,通過jmeter中正則表達式獲取: 步驟一:
第二步:
第三步
參考程式碼
FileOutputStream fps=new FileOutputStream("${outfile_online}",true); OutputStreamWriter osw=new OutputStreamWriter(fps); BufferedWriter bw=new BufferedWriter(osw); bw.append("${mobile}t${User}t${User}t${fd}n"); if(bw!=null){bw.close();} if(osw!=null){osw.close();} if(fps!=null){fps.close();}
第四步
獲取結果
正則表達式 Regular Expression Extractor
簡單寫法:
正則表達式提取器說明:
Ø Apply to:應用範圍
Ø 要檢查的響應欄位:樣本數據源。
Ø 引用名稱:其他地方引用時的變數名稱,我這裡寫的phone,可自定義設置,引用方法:${引用名稱}
Ø 正則表達式:數據提取器,()括弧里為你要獲取的的值。"phone":"( 相當於LR左邊界, )","name"相當於LR右邊界。而括弧里d+為正則表達式,用來匹配所需要獲取的數據,何謂正則表達式文章末尾會附上說明
Ø 模板:$$對應正則表達式提取器類型。-1全部,0 隨機,1第一個2第二個,以此類推,若只有一個正則一般就填寫$1$
Ø 匹配數字:正則表達式匹配數據的所有結果可以看做一個數組,匹配數字即可看做是數組的第幾個元素。-1表示全部,0隨機,1第一個,2第二個,以此類推。若只要獲取到匹配的第一個值,則填寫1
Ø 預設值:匹配失敗時的默認值。可以不寫。若需用於後續邏輯判斷,可簡單寫為 ERROR。
Jmeter常用快捷鍵參考:
快捷鍵 |
功能 |
備註 |
---|---|---|
Ctrl + C |
複製 |
可複製組件 |
Ctrl + V |
粘貼 |
可粘貼組件 |
Ctrl + Shift + C |
複製粘貼當前組件到下一行 |
|
Ctrl + R |
運行測試計劃 |
|
Ctrl + E |
清空運行結果 |
|
Ctrl + T |
啟用/禁用當前組件 |
可以多選 |
Ctrl + F |
全文搜索 |
一般用來搜索組件, 搜索完成後可點擊Search -> Reset Search恢復 |
Ctrl + – |
全部收起 |
「-「為主鍵盤的減號 |
Ctrl + Shift + – |
全部展開 |
「-「為主鍵盤的減號 |
Ctrl + 0 |
創建執行緒組 |
|
Ctrl + 1 |
新增HTTP請求 |
|
Ctrl + 2 |
正則表達式提取器 |
|
Ctrl + 3 |
響應斷言 |
|
Ctrl + 4 |
固定定時器 |
|
Ctrl + 5 |
Test Action 5.0更改為Flow Control Action |
JMeter流量控制動作 |
Ctrl +6 |
JSR223 PostProcessor(後處理程式) |
---|---|
Ctrl + 7 |
JSR223 PreProcessor(預處理器)vars.put("key",value):將value存到jmeter變數key中,在後續請求中使用${「key」}進行引用。 |
Ctrl + 8 |
Debug Sampler |
Ctrl + 9 |
查看結果樹 |
小結
以上是Jmeter小用介紹。其實沒什麼都是常用命令。
Linux 啟動參考命令
#!/bin/bash #jmeter kill and start echo -e '