接口性能測試工具之Jmeter

Jmeter,一款開源的性能測試工具,提供比較詳細的用戶手冊、API文檔,與Loadrunner用法相似,也支持腳本錄製。這裏以知旅行淘寶下單請求與響應爲例,介紹一下jmeter如何做性能測試。

啓動Jmeter

啓動jmeter,Mac下允許JMETER_HOME/bin/jmeter.sh腳本,windows下運行JMETER_HOME/bin/jmeter.bat腳本。

添加線程組:

添加測試線程組,選擇測試計劃(右鍵)_添加_Threads_線程組,如圖

線程組配置,根據實際需求設置線程數、線程拉起時間、測試計劃執行時間,其中線程執行之間有三種可選:

  1. 設置循環測試;
  2. 配置調度器,設置執行起止時間段;
  3. 設定爲“永遠”,會一直執行直到強制中斷。如圖

在執行之前我們需要先調試接口,所以先將線程屬性都設置爲1

配置請求:

選中添加的線程組_添加_Sampler_HTTP請求,如圖

設置http請求,填寫服務器名稱or IP、端口號、響應超時時間、協議類型、請求方式,如圖

完整的連接172.16.10.157:8081/sc-taobao-war/taobao/callback.html

如果http請求是請求體,需要添加http信息頭管理器,選中線程組_添加_配置元件_http信息頭管理器,如圖

信息頭管理器配置如圖,點擊添加按鈕,然後添加信息頭中內容的名稱和值。

添加完信息頭管理器,就可以配置http請求,如圖選擇Body Data,然後就可以輸入請求體的內容。

本例子選擇的是直接添加參數發送的方式,可根據接口文檔直接添加參數名稱和值,如圖,淘寶給出的接口文檔

在Jmeter添加對應的參數,如圖

配置好各項參數,在執行之前需要添加監聽,不然查看不到執行結果。

添加監聽器

Jmeter有多個監聽器供選擇,選中線程組_添加_監聽器_,客戶端/服務端的請求響應,最常見的監聽器是察看結果樹、聚合報告(圖形結果對性能測試的結果有一定影響)。

添加完監聽之後,我們就可以嘗試執行請求了。

執行之後點擊察看結果樹,察看執行結果

此時取樣器結果顯示的應答碼是200,應答信息是OK,所以結果判斷是成功的。我們繼續看請求和響應數據,如圖

響應數據是300,表明這個請求失敗了,但是結果樹顯示卻是成功。如何讓結果樹顯示我們需要的正確結果了?這時我們需要用到另一樣東西,響應斷言。

 

響應斷言:

選中線程組_添加_斷言_響應斷言

選擇添加,然後輸入需要判斷成功的響應數據;再次執行請求,察看結果樹。

當響應數據正確時,如圖

此時表示結果能正確顯示,同時該接口也調試成功。

 

本例中的參數值是固定值,也可以使用函數或者參數化,如例子中的時間可以用時間函數${__time(yyyy-MM-dd HH:mm:ss,)} 2016-10-25 17:28:16  來顯示當前時間。

 

參數化設定:

Jmeter參數化有多種方法,這裏介紹一種比較使用的方法,採用文件讀取方式,選中線程組_添加_配置元件_CSV Data Set Config,如圖

CSV Data Set Config參數化配置,以行爲單位讀取參數化文件,比參數化函數_CSVRead()和_StringFromFile()更方便使用,具體配置如圖

Filename: 參數項文件,可以採用絕對路徑和相對路徑;

File Encoding: 文件的編譯方法,可以爲UTF-8或者是GB2312等,需要與參數化文件的        

            編碼方式一致

Variable Names:文件中各列所表叔的參數項,如:mobile,name,num,各項之間用逗

             號隔開,參數項名稱應與HTTP請求中的參數項保持一致。

Delimiter: 參數分隔符,如文件中使用的是逗號分隔符則填寫逗號;如使用TAB鍵,則

         填寫\t

Allow quoted data?:是否允許引用數據,設置爲flase,避免引起亂碼;

Recycle on EOF?:當讀取到文件尾處,是否從頭讀取,可以爲true或者flase;

Stop thread on EOF?:當Recycle on EOF?一項爲false時起效;true=當讀取到文件結尾,停

                 止進程

Sharing mode:共享組,方便起見,選擇“ALL threads”。

CSV文件內容如圖

HTTP請求參數配置如圖

聚合報告:

    性能測試結果最主要的結論來源就是聚合報告。

 

#Samples:請求總數,表示你這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這裏顯示100

Average:平均響應時間

Median:中位數,也就是 50% 用戶的響應時間

90% Line90 用戶的響應時間

Min:最小響應時間

Max:最大響應時間

Error%本次測試中出現錯誤的請求的數量/請求的總數

Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

KB/Sec:每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章