學習Jmeter,這一篇就夠了

ImTE發表於2020-10-10

Jmeter在軟體測試中的常用功能,看完你應該就會了

1、Jmeter的下載安裝

1.1  Jmeter的官方網址是:http://jmeter.apache.org/;下載最新的包到本地進行解壓,路徑按照自己的喜好自己設定;根據下圖官網的提示,Jmeter是要依賴Java8的哦,不同的版本不同,根據實際情況按照好對應的Java版本。

 

 

 

 1.2 解壓到本地之後,一般常用的有2種方式啟動:

 

 1.2.1

 

         直接啟動:開啟apache-jmeter-5.3\bin\jmeter.bat 批處理檔案,就可開啟Jmeter.

 

 1.2.2 命令列啟動:需要設定環境變數

 

        先設定 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3

 

        再在系統變數Path中新增: %JMETER_HOME%\bin

 

        最後還要在CLASSPATH中新增:

 

        %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.

         環境變數設定完畢之後,在命名行輸入jmeter即可開啟Jmeter.

  

 

 

 1.3 Jmeter中文顯示:初學者直接使用中文有助於很快理解很多功能;在bin目錄下開啟jmeter.properties檔案,將#language=en #註釋去掉,en修改為zh_CN,儲存之後重啟Jmeter

 

 

 2Jmeter的簡單認識

2.1 測試計劃:用來描述一個效能/介面測試指令碼和場景設計,包含與本次測試所有相關的功能。也就是說,使用JMeter進行測試的所有內容都是基於一個測試計劃的。

 

 

 2.2 執行緒組:每個測試需求的必備元件,用來模擬使用者併發的元件。Jmeter的每個任務都是用執行緒來處理的;

 

2.3 執行緒數:請求並非的數量。

 

Ramp-Up Period(in seconds)在多少秒內建立執行緒數中定義的所有執行緒;每秒併發數 = 執行緒數/RUP

迴圈次數:當前執行緒組中的測試指令碼迴圈執行次數;

2.4  HTTP Request Defaults:設定http請求預設值;

 

 

 

 

 

 2.5  HTTP Cookie Manager像瀏覽器一樣儲存和傳送cookie;如果傳送一個http請求的響應中包含Cookie,那麼 Cookes Manager就會自動地儲存這些Cookie並在所有後來傳送到該站點的請求中使用這些Cookie值。

 

 

 2.6 HTTP Header Manager

 

 

 2.7 HTTP Request

 

 

 2.8 Response Assertion(響應斷言):

 

 

 2.9 Flow Control Action(請求延遲):

 

 

 2.10 Uniform Random Timer(均勻隨機定時器):

 

 

 2.11 View Results Tree(檢視結果樹):

 

 

 3Jmeter實現簡單的介面測試,新增響應斷言,使用百度舉例。

 

 

 

 

 

 如下就是響應斷言,百度二下的斷言是失敗的;百度一下的斷言結果是成功的,所有未列印出來。

 

 

 3.1 新增HTTP資訊頭管理器:

 

 

 再此請求,執行完檢視結果樹,Request Headers中新增了Content-Type:application/json型別。

 

 

 3.2、通過httpbin.org (是一個開源的,支援HTTP請求和響應的測試網站)這個專案進一步做簡單的練習。

 

3.2.1  post請求:

         介面請求說明:

 

 

 檢視結果樹:

 

 

 

 

 

 3.2.3  put請求

 

 

 

 

 

 

   

 

4、執行緒使用者之setUptearDown

 

4.1 平時測試當個介面時,我們使用執行緒組;而setUptearDown執行緒組作用等同於unittest測試框架中的setUptearDownsetUp執行緒組一般用於登入等,而tearDown一般用於釋放資源等。

4.2  setUptearDown及介面測試的練習,根據結果樹的結果看,執行順序就是按照setUp->測試執行緒組->tearDown的順序執行。

 

 

 5、配置元件之CSV資料檔案配置

 

5.1 單執行緒讀取CSV資料檔案實現引數化

         建一個如下的CSV資料:

 

 

 JmeterCSV元件的配置:

 

 

 請求介面配置:

 

 

 執行結果:

 

 

 5.2 邏輯控制器

 

5.2.1邏輯控制器之迴圈控制器

根據上個章節的結果,一個執行緒執行一次只能讀取一行,如果一次要將所有行的資料都執行,就需要使用邏輯控制器的迴圈控制器。

 

 

 執行結果:

 

 

 5.2.2 邏輯控制器之if控制器

第一種寫法:去掉Interpret Condition as Variable Expression?的勾選,直接寫判斷條件

 

 

 第二種寫法:預設寫法(勾選Interpret Condition as Variable Expression?),使用帶有變數的表示式。

 

 

 6、監聽器之檢視結果樹+斷言結果 +聚合報告+圖形結果+用表格檢視結果。

 

6.1.1 檢視結果樹

 

         檢視結果樹上面的很多例子都有檢視結果樹,這裡就不做過多闡述了。

 

6.1.2 斷言結果

         之前的章節說過斷言,這裡要講的是斷言結果儲存到本地檔案中;可以選擇需要儲存的檔案格式,有三種檔案格式,Jmeter自身的檔案格式jtl,還有xmlCSV,在工作中根據需要選擇。

 

 

 開啟本地檔案,儲存的結果如下:

 

 

 6.1.3聚合報告

 

 

 6.1.4圖形結果

 

 

 6.1.5 用表格檢視結果

 

 

 7. 配置元件之使用者定義的變數+抽離公共資料

 

7.1 使用者自定義變數的2種方式

7.1.1第一種是手動新增元件,配置元件-->使用者自定義變數

 

 

 7.1.2第二種是測試計劃內部的使用者自定義變數

 

 

 7.2 引用變數,JMeter產生變數的方式有10多種,前置/後置/函式助手/CSV元件/使用者定義的變數/使用者引數/JDBC請求等等,但是,引用變數的方式只有一種。

 

 

 

 8. 引數傳遞

         在工作中介面測試的時候需要傳遞token,,此時就需要進行引數傳遞,Jmeter很方便的實現引數的傳遞,需要用到beanshell直譯器。

 

8.1 傳參方式

8.1.1 內建變數

 

 8.1.2 函式助手

 

 8.2 傳參形式

8.2.1 同執行緒組

 

 8.2.2 跨執行緒組

 

 8.3 以跨執行緒組舉例

       第一步,使用json提取器獲取token:

 

 第二步:使用BeanShell後置處理器將獲取的token儲存到Jmeter變數。

 

 第三步:引用上一步的變數即可。

 

 最後,檢視結果樹:傳遞token值成功。

 

 9. 後置處理器

 

9.1 json提取器

         jSON 後處理器使您能夠使用 JSON-PATH 語法從 JSON 響應中提取資料。此後處理器與正規表示式提取器非常相似。它必須作為 HTTP 取樣器或任何其他具有響應的取樣器的子級放置.

 

 可以在檢視結果樹裡面進行除錯。

 

 9.2 正規表示式提取器

         使用 Perl 型別的正規表示式(不過多贅述正規表示式的型別)從伺服器響應中提取值。作為後處理器,此元素將在其作用域中的 請求之後執行,應用正規表示式、提取請求的值、生成模板字串並將結果儲存到給定的變數名稱中。

 

 

 

 在檢視結果樹種進行除錯:

 

 9.3 邊界提取器

         允許使用者使用左和右邊界從伺服器響應中提取值。作為後處理器,此元素將在其作用域中的每個取樣器請求之後執行,測試邊界、提取請求的值、生成模板字串並將結果儲存到給定的變數名稱中。

 

 在檢視結果樹種除錯:

 

 9.4 其他提取器:

 

  //CSS提取器

 

https://jmeter.apache.org/usermanual/component_reference.html#CSS_Selector_Extractor

 

  //XPath提取器

 

https://jmeter.apache.org/usermanual/component_reference.html#XPath2_Extractor

 

  //結果狀態操作處理程式

https://jmeter.apache.org/usermanual/component_reference.html#Result_Status_Action_Handler

9.5 Json提取器+正規表示式提取器+邊界提取器的應用

 

 退出介面使用新增介面的響應資料,使用關聯引數:

 

 檢視結果樹:

 

 10. 前置處理器

 

       前置處理器主要用來處理請求前的一些準備工作,比如引數設定、環境變變數設定、加密等操作。本章介紹最常用的2種前置處理器。

 

10.1 JDBC預處理程式

 

       平時在我們做測試的過程的常用場景有:第一,準備了大量的測試資料,CSV檔案使用不方便,就放到資料庫裡,那麼,測試之前需要把測試資料讀取出來;第二,介面引數比較多,一個一個入參比較麻煩,從庫裡匯出準確資料,然後進行修改調整;

 

10.1.1 JDBC連線說明

       由於Jmeter預設沒有提供MySQL的驅動,所以要自行下載,將下載好的驅動放到:lib-->ext目錄下。

 

 10.1.2 連線示例

 

       地址寫法:

 

       //  jdbc:資料庫型別://地址

       jdbc:mysql://127.0.0.1:3306

 

 連線資料庫,這個步驟要注意:SQL語句和型別是否對應。

 

 示例:

 

 10.2 BeanShell預處理程式

       BeanShell 這個在調整亂碼的時候用到過,大家已經知道這個元件就是編寫Java程式碼的了,這個元件的使用場景有哪些?最直接的,介面資料加密(執行測試用例之前進行加密),常見的加密方式如下:

 

 加密前:

 

 加密後:

 

 11. 常用斷言

 

11.1 json斷言

 

         JSON斷言元件適用於返回資料是JSON格式的,JSON 文件執行驗證。首先,它將解析 JSON,如果資料不是 JSON,它將失敗。JSON斷言有兩種匹配規則:

 

a. 使用JsonPath的語法搜尋指定的路徑。如果未找到路徑,它將失敗。

b.如果在文件中找到 JSON 路徑,並且請求對預期值進行驗證,它將執行驗證。對於null值,GUI 中有一個特殊的核取方塊。

 

 11.2 大小斷言

         大小斷言測試每個響應中包含正確的位元組數。可以指定大小等於、大於、小於或不等於給定的位元組數。

 

 12.生成HTML報告

 

         Jmeter生成測試報告有2種方式,GUL生成和CLI生成。

 

12.1 GUL生成

         jmeter3.0 版本之後開始支援動態生成測試報表(3.0版本的Dashboard Report模組會中文亂碼)GUI 模式下,效能測試的結果往往誤差很大,因為 GUI 本身就會消耗一部分資源,所以不會使用GUI生成測試報告;功能測試下,通常只看察看結果樹,執行是否正確,然後就把指令碼拋到整合工具上了,也不會使用GUI生成測試報告。

 

                                                開啟位置

 

 12.2 CLI生成

 

 PS D:\apache-jmeter-5.3\test> jmeter -n -t test.jmx -l result.jtl -e -o html//命令

Creating summariser <summary>
Created the tree successfully using test.jmx
Starting standalone test @ Fri Jun 2611:02:51 CST 2020(1593140571507)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +     11in00:00:08=    1.3/s Avg:   729 Min:     1 Max:  1107 Err:     4(36.36%) Active:1 Started:3 Finished:2
summary +      7in00:00:05=    1.6/s Avg:   637 Min:     1 Max:   913 Err:     2(28.57%) Active:0 Started:1 Finished:1
summary =     18in00:00:13=    1.4/s Avg:   693 Min:     1 Max:  1107 Err:     6(33.33%)
Tidying up ...    @ Fri Jun 2611:03:04 CST 2020(1593140584695)

 

 

 由於測試報告是一個檔案,建議和配套的HTTP伺服器使用,把報告放到服務上。

 

 生成的報告:

 

 生成的測試報告(自帶的是效能測試報告,附帶很多資訊),官網詳解:

https://jmeter.apache.org/usermanual/generating-dashboard.html

 

 

 

 

 

 

 

1.2 解壓到本地之後,一般常用的有2種方式啟動:

 1.2.1

         直接啟動:開啟apache-jmeter-5.3\bin\jmeter.bat 批處理檔案,就可開啟Jmeter.

 1.2.2 命令列啟動:需要設定環境變數

        先設定 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3

        再在系統變數Path中新增: %JMETER_HOME%\bin

        最後還要在CLASSPATH中新增:

        %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.

         環境變數設定完畢之後,在命名行輸入jmeter即可開啟Jmeter.

        

1.3 Jmeter中文顯示:初學者直接使用中文有助於很快理解很多功能;在bin目錄下開啟jmeter.properties檔案,將#language=en #註釋去掉,en修改為zh_CN,儲存之後重啟Jmeter

 

相關文章