如何將Postman API測試轉換為JMeter以進行擴充套件

2021-04-28 09:01:05

許多測試工程師使用Postman進行API測試自動化。他們發現端點,發出請求,建立測試資料,執行迴歸測試,使用Newman等實現API測試的持續整合。但是,Postman有一定的測試限制。希望獲得更多負載測試能力的開發人員,DevOps和QA工程師可以將其Postman測試轉換為JMeter。這篇部落格文章將解釋何時建議將Postman轉換為JMeter,並逐步說明如何實現。

Postman API Testing Limitations

 

可延伸性

Postman測試無法擴充套件。如果您的集合中有很多請求,Postman / Newman將使用1個執行緒(使用者)並按順序執行這些請求,而不是使用多個執行緒並行執行。

 

效能測試能力

由於可延伸性限制,Postman不適合API效能測試。效能測試要求同時針對多個執行緒(使用者)執行測試,以確保系統在重負載下不會中斷。

何時將Postman測試轉換為JMeter測試

您可能希望將現有的Postman測試轉換為JMeter以獲得以下好處:

      • 多執行緒執行

      • 獲取API的效能指標

      • 獲得高階報告,並將不斷增加的負載與響應時間,錯誤數量等相關聯。 

      • 查詢瓶頸和最慢的API端點

如何將Postman API測試轉換為JMeter測試

以下是將現有Postman測試轉換為JMeter的步驟:

 

第1步-準備JMeter進行錄製

JMeter隨附有HTTP(S)測試指令碼記錄器,該記錄器充當瀏覽器(或使用HTTP協定並支援代理的任何其他應用程式)的代理。因此,您可以使用它來攔截瀏覽器生成的請求。在我們的例子中,您可以使用它來攔截Postman,並將請求轉換為HTTP Request取樣器。

JMeter的設定非常簡單-尤其是在使用JMeter模板功能時:

    1.轉到JMeter主選單,然後選擇「檔案」->「模板」->「記錄」 ,然後單擊「建立」。

     

    2.選擇HTTP(S)測試指令碼記錄器,然後單擊「開始」。

  

     

    3.提供您的API主機,以便JMeter將其置於HTTP Request Defaults下。

第2步-準備Postman進行記錄 

        1.首先,將JMeter證書匯入Postman。啟動JMeter的HTTP(S)測試指令碼記錄器時,JMeter生成一個自簽名證書,該證書使JMeter可以解密HTTPS請求。該檔案稱為ApacheJMeterTemporaryRootCA.crt ,它將在JMeter安裝的「 bin」資料夾下開始生成。 

         

        2.開啟Postman設定,然後轉到「證書」索引標籤

         

        3.切換在為「CA證書」,並找到ApacheJMeterTemporaryRootCA.crt

         

        就是這樣,現在Postman將使用JMeter的證書,並且JMeter將能夠解密捕獲的請求

         

        設定Postman以使用JMeter作為代理

         

        現在,您需要「告訴」Postman通過JMeter的HTTP(S)測試指令碼記錄器傳送請求。

         

        4.轉到Postman的設定,然後開啟「代理」索引標籤。

         

        5.在用於傳送請求的代理設定下,選中「新增自定義代理設定」框。

         

        6.選擇「 HTTP」和「 HTTPS」協定。

         

        7.使用「localhost」作為代理伺服器(如果你有不同的主機上執行的JMeter -使用該主機的IP地址或DNS主機名代替)。

         

        8.使用「 8888」作為代理埠。


步驟3-記錄您的測試

恭喜你!Postman和JMeter終於建立了聯絡。當您開始請求或收集時,JMeter將捕獲它併為每個請求生成一個HTTP請求取樣器。如果存在任何HTTP檔頭,JMeter將新增一個HTTP檔頭管理器以將檔頭新增到請求中。

這是一個有關其工作原理的小范例:

 

將Postman轉換為JMeter時的提示,技巧和侷限性

命令列記錄

如果要在Windows上記錄Newman測試,請遵循Windows作業系統代理設定。因此,在Internet Explorer或Chrome瀏覽器中執行設定就足夠了。這將設定紐曼將使用的系統級代理。 

對於Linux / Unix / MacOS,可以通過HTTP_PROXY環境變數提供代理,例如:

HTTP_PROXY = http:// localhost:8888 && newman -c your_collection.json

 

BlazeMeter代理記錄器

代替本地JMeter代理,您可以使用基於雲的BlazeMeter代理記錄器,該記錄器:

  • 簡化證書的建立,尤其是在記錄移動應用程式流量方面。

  • 具有動態引數自動關聯的功能。

侷限性

請記住,這種方法僅適用於僅記錄請求。您在「先決條件」下定義的所有指令碼。或Postman中的「測試」標籤將不被考慮。因此,如果您具有測試資料準備或宣告邏輯,則需要使用JSR223測試元素和Groovy語言對其進行復制.

推薦閱讀