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 '33[32m--------Jmeter---------------33[0m'  echo "kill掉jmeter-server 進程................... n"  kill -9 `ps aux | grep jmeter | grep -v grep | awk '{print $2}'`  sleep 3  cd /root/tools/apache-jmeter-3.3/bin/  echo "啟動jmeter-server"  nohup ./jmeter-server &  echo -e '33[32m------------歡迎使用-----------------33[0m'