JMeter使用簡介


接口測試工具-目錄

JMeter簡介

在完成接口功能測試后,根據接口需求我們要對接口的性能進行測試。
JMeter是目前比較流行的開源性能測試工具。免費,靈活並支持眾多插件。同時支持分布式壓力測試。
JMeter以Test Plan(測試計划)為基本單位。Test Plan下添加線程組作為運行控制器。
Test Plan(測試計划)默認包含以下3種線程組。

  • setup線程組: 可選,進行整個計划的測試准備
  • 線程組:運行控制
  • teardown線程組:可選,進行整個計划的測試清理

JMeter中包含很多元件,常用元件及大致作用順序如圖2-28所示。

圖2-28  JMeter處理流程

采樣器是JMeter的核心元件,負責數據的發送和采集,如HTTP請求。在采樣器前后可以添加前置處理和后置處理器,對請求數據進行預處理以及對響應數據進行變量提取操作。同時還可以在配置管理器類型元件中添加默認配置或使用數據文件等。
斷言元件用於對比響應結果和預期結果的對比,監聽器用於查看響應及測試結果。

中文及編碼設置

JMeter默認為英文界面,可以在菜單語言選項中臨時切換為簡體中文語言。想要永久生效可以修改JMeter安裝目錄bin目錄中的jmeter.properties文件。
修改language屬性值為zh_CN,並保存。同時為確保響應數據中的中文可以正常顯示,可以修改sampleresult.default.encoding為UTF-8格式。如果2.29和2.30所示。

圖2.29  JMeter 中文界面配置

圖2.30  JMeter UTF-8編碼配置

修改完配置后保存,重啟JMeter即可。

發送請求

使用JMeter發送請求,只要使用采樣器元件中的HTTP請求元件並填寫對應的請求數據即可。

發送GET請求

首先在JMeter測試計划中添加線程組,線程組使用默認配置即可。在線程組上點擊右鍵,選擇采樣器,選擇HTTP請求,修改請求名為GET請求,填寫協議、服務器地址、方法、路徑及參數值,如圖2.31所示。

圖2.31  JMeter 發送GET請求

如果參數中包含中文,可以在內容編碼處加上utf-8,同時在參數剛勾選編碼(URL編碼)。
如果想要查看響應結果,可以在線程組上點擊右鍵,在監聽器中選擇結果樹。點擊工具欄上的三角按鈕發送請求后,便可在請求樹中看到響應的響應數據。

發送POST-表單格式請求

同樣,發送POST請求需要添加采樣器-HTTP請求元件,按需求填寫請求數據,點擊發送圖標即可,如圖2.32所示。

圖2.32  JMeter 發送POST-表單請求

POST請求的參數表格對應請求體中的參數而不是URL參數,如果接口需要傳遞URL參數,可以填寫到接口路徑中。
同樣,如果參數中包含中文,可以勾選上編碼。發送完請求后,可以在結果樹中查看響應結果,如圖2.33所示。

圖2.33  JMeter 結果樹-查看響應數據

在結果樹請求列表上方,可以切換顯示格式(如切換為JSON格式),以相應的格式查看響應數據。同時也可以查看請求數據或響應頭數據等。

發送POST-JSON格式請求

發送JSON格式的POST請求,首先添加采樣器HTTP請求元件,填寫請求數據,請求體數據切換到消息體數據,填寫相應的JSON格式的數據,點擊發送即可。如圖2.34所示。

圖2.34  JMeter 發送POST-JSON請求

消息體數據要符合JSON語法格式,否則文本框中對應行前會顯示出錯提示。如果消息體中包含中文,要聲明內容編碼為utf-8。
4.發送POST-XML格式請求
發送XML格式的POST請求與JSON一樣,在消息體數據中填入XML格式的請求數據,點擊發送即可。如圖2.35所示。

圖2.35  JMeter POST-XML請求

同樣,消息體數據中如果包含中文,需要聲明內容編碼utf-8。

發送POST-上傳文件請求

在HTTP請求元件的中可以通過文件上傳選項卡發送上傳文件類型的POST請求。首先添加HTTP請求元件,填寫請求數據,勾選對POST使用multipart/form-data,點擊瀏覽,選擇文件上傳,選擇文件路徑,填寫對應的參數名稱,和文件MIME類型,點擊發送按鈕即可。如圖2.36所示。

圖2.36  JMeter上傳文件

注意要勾選上面的對POST請求使用multipart/form-data即混合表單格式。每個上傳的文件一般對應一個參數,同時要填寫文件格式對應的MIME類型。支持添加多個文件。

斷言

斷言是接口測試以及性能測試中必不可少的一部分。斷言幫我們自動判斷請求的成功與否。JMeter中支持多種格式的斷言,可以在斷言元件中添加。

響應斷言

響應斷言是對請求、響應數據(包含請求頭、響應頭數據)進行的一種基本斷言。添加方法為在線程組上點擊右鍵,選擇斷言,選擇響應斷言即可。如圖2.37所示。

圖2.37  JMeter 響應斷言-包含指定文本

如上圖,要斷言響應體數據中包含指定文本,可以在響應斷言中選擇響應文本,選擇包含,填寫要包含的文本(如“登錄成功”),並可以自定義該條斷言失敗時的消息內容。
響應文本的斷言支持使用正則表達式匹配,如圖2.38所示。

圖2.38  JMeter 響應斷言-正則表達式

如上圖,選擇響應文本,選擇匹配,填寫相應文本應匹配的正則表達式即可。

JSON響應斷言

對於JSON格式的響應,可以使用JSON斷言驗證其中指定的字段的值符合預期。添加方法為,右鍵點擊線程組,點擊斷言,選擇JSON斷言即可。
JMeter中JSON斷言中使用JSONPath語法來提取響應的指定字段。我們可以首先利用結果樹元件來驗證我們的JSONPath語法是否能提取到對應字段。如圖2.39所示。

圖2.39  JMeter 結果樹-JSONPath驗證

發送完請求,在結果樹中選擇“JSON Path Tester”,在“JSON Path Expression”中輸入JSONPath表達式,如“\(.form.name”。“\)”代表JSON響應的根節點。使用“.”取下級節點,如果是Array數組,可以使用“[N]”來取第N項數據。
點擊Test按鈕驗證能獲取到指定的數據后。在JMeter中對應的請求下添加JSON斷言,輸入JSONPath表達式。勾選“Additionally assert value”,輸入“Expected Value”期望結果即可。如圖2.40所示。

圖2.40  JMeter 添加JSONPath斷言

注意如果不勾選Additionally assert value則只要能根據該JSONPath表達式匹配出有值即視為通過。勾選后可以斷言JSONPath表達式對應字段的值。

如果要對多個字段進行斷言,要添加多個JSON斷言研究。
點擊發送請求,即可在結果樹中查看請求通過與否。

XPath斷言

XPath即XML路徑選擇語言,適用於XML和HTML格式的文本。對於XML或HTML格式的響應數據,我們可以使用XPath提取節點進行斷言。
添加方式為,線程組上點擊右鍵,點擊斷言,選擇XPath斷言即可。
同樣,對於XPath,我們可以使用結果樹先來驗證XPath表達式。如圖2.41所示。

圖2.41 JMeter 結果樹-XPath驗證
發送請求后,在結果樹中選擇XPath Tester,在XPath query中輸入對應的XPath表達式,點擊Test即可。XPath使用“/”表示根路徑,“//”表示任意路徑,后面h1是標簽名。
在驗證完XPath表達式后,在對應的請求下添加XPath斷言,填寫指定的XPath表達式即可,如圖2.42所示。

圖2.42  JMeter 添加XPath斷言

以上XPath斷言只能驗證響應中該XPath表達式能匹配出結果。

Bean Shell斷言

Bean Shell是一套符合Java語法的腳本語言,同過Bean Shell可以使用代碼,靈活的對響應數據進行各種操作及判斷。
Bean Shell中可以通ResponseCode、ResponseHeaders及prev.getResponseDataAsString()來獲取String格式的狀態碼、響應頭以及響應體數據。通過if判斷進行斷言,斷言中通過設置變量Failure=false或Failure=true來設置斷言通過或失敗,同時還可以通變量FailureMessage設置失敗原因。
添加方式為,線程組上點擊右鍵,點擊斷言,選擇Bean Shell斷言即可,如圖2.43所示。

圖2-43  JMeter Bean shell斷言

關聯

關聯,指將上一個接口的響應數據中的某個值用於下一個接口,又稱為接口依賴。關聯包含兩個部分的操作,一是上一個接口響應數據變量的提取和保存,二是下一個接口中使用參數化變量使用提取和存儲的變量值。
以百度OCR接口為例。該接口首先需要根據個人的id秘鑰獲取token值,以供百度OCR接口使用。
-(1)在JMeter中添加一個邏輯控制器,簡單控制器元件,在下面添加兩個HTTP請求,如圖2.44所示。

圖2.44  JMeter 發送所依賴請求

-(2)在第一個接口獲取百度token請求下添加后置處理器元件JSON提取器,使用JSONPath提取變量並設置保存的變量名為access_token。如圖2.45所示。

圖2.45  JMeter 使用JSON提取器提取關聯變量

-(3)在下一個接口百度orc的路徑中使用${access_token}來使用上面保存的變量。如圖2.46所示。

圖2.46  JMeter 使用關聯變量

填寫完其他請求數據,點擊發送即可在結果樹中查看兩個請求狀態。

數據驅動

對於同一個請求,我們經常要使用不同的數據進行測試。此時可以使用數據驅動的方式進行處理。
JMeter中默認支持使用CSV文件進行數據驅動,添加方法為在線程組上點擊右鍵,點擊前置處理器,選擇CSV配置元件即可。
-(1)添加CSV配置元件並選擇數據文件,如圖2.47所示。

圖2.47  JMeter 添加CSV數據文件

CSV數據文件不需要有標題行,要在CSV配置元件中聲明每一列對應的編碼名,以英文逗號隔開,如name,password,分隔符根據文件中的分割符設置,這里是英文逗號。
-(2)在HTTP請求中使用\({name}和\){password}來參數化變量。如圖2.48所示。

圖2-48  JMeter 使用CSV數據文件變量

-(3)修改線程組迭代次數為數據文件數據行數。點擊運行,即可在在結果樹中查看每一組數據的請求結果。

壓力測試及生成報告

JMeter一般用於壓力測試,相對於調試接口請求,壓力測試時的配置稍有不同。

請求設置

壓力測試時HTTP請求一般要不勾選“跟隨重定向”和“使用Keep Alive”,即如果接口進行的重定向,只請求當前接口,並且不使用Keep Alive,每次請求后斷開TCP連接,以便下次請求模擬新用戶重新建立TCP連接發送請求。如圖2.49所示。

圖2.49  JMeter 去除重定向和Keepalive

為避免大量的請求日志可以在結果樹中勾選“僅錯誤日志”,如圖2.50所示。

圖2.50  JMeter 僅輸出錯誤日志

線程組設置

壓測時需要根據實際的業務需求如並發量,壓測時間等來設置線程組參數。如以200並發壓測5分鍾。設置如圖2.51所示。

圖2.51  JMeter 設置線程組-並發量和持續時間

Ramp-Up即准備時間,填0即可(同時啟動200個線程),循環次數勾選永遠,同時勾選調度器,持續時間填寫300秒。

GUI運行

設置完請求、斷言和線程組后,即可開始壓測。壓測分為GUI使用圖形界面運行和非GUI使用命令行運行兩種。一般推薦使用非GUI模式運行,客戶機性能會更好一點。
如果使用GUI運行,可以在請求中添加監聽器元件中的聚合報告,如圖2.52所示。

圖2.52  JMeter GUI運行-查看聚合報告

在聚合報告元件中可填寫報告保存的路徑,可以使用csv格式。
點擊運行便可在聚合報告中查看到實時的平均響應時間,出錯率和吞吐量等數據。

生成報告

聚合報告生成的csv結果數據文件要經過轉換才能生成漂亮的HTML格式測試報告。選擇菜單欄Tools中的Generate HTML report報告工具。選擇聚合報告的結果文件,JMeter當前用戶配置(bin目錄下的user.properties文件)以及報告輸出目錄。點擊Generate report按鈕生成報告,如圖2.53所示。

圖2.53  JMeter 生成HTML報告

生成成功后便可以打開輸出目錄中的index.html,查看本次壓測的結果報告,如圖2.54所示。

圖2.54  JMeter HTML壓測報告


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM