前言
物聯網正在以爆炸式的增長勢頭飛速發展。隨着設備規模的不斷增長和業務邏輯的愈發復雜,物聯網平台在正式上線前,需要通過對平台大量接入設備時的可用性和可靠性進行驗證以確保系統質量。物聯網性能測試的價值與必要性因此逐漸凸顯。
一方面,性能測試為評估物聯網系統提供依據,從設計指標、可擴展性和可靠性多個維度加以驗證;另一方面,性能測試也有助於物聯網系統的優化,幫助及早發現系統性能瓶頸,提供調優建議。此外,性能測試還可以輔助容量計划的制定,為未來擴容計划提供參考。
而物聯網系統接入設備量大、協議多樣化、集成架構復雜、跨部門開發協作頻繁這些特點,也使物聯網性能測試面臨着重重挑戰。本系列文章將以基於 EMQ X 的物聯網平台為例,介紹如何使用性能測試工具進行平台相關質量指標的驗證與測試。
測試工具的選擇——JMeter 簡介
我們選擇 JMeter 作為本次的測試工具。
JMeter 是 Apache 基金會旗下一款開源軟件,主要通過模擬並發負載來實現性能測試,是目前開源社區的主流性能測試工具。其主要具有以下優勢:
- 內置多種協議的測試支持,如 TCP、HTTP/HTTPS 等。
- 提供靈活的插件擴展機制,支持第三方擴展其他的協議。對於物聯網系統中種類繁多的協議,只需按 JMeter 的框架要求定制開發所需協議業務邏輯,就能方便地放入 JMeter 的插件庫,使用 JMeter 既有功能進行該協議的性能測試。
- 具有良好的社區支持。
JMeter 的安裝
目前 JMeter 最新穩定版本是 5.4.1,由於 JMeter 是基於 Java 的,5.4.1 版本的 JMeter 需要預先安裝 Java 8 及以上的支持(可從以下地址獲取:https://www.oracle.com/java/technologies/downloads )。
安裝完 Java 后,從官網下載 JMeter:https://jmeter.apache.org/download_jmeter.cgi 。
下載完成后解壓,並進入解壓后目錄下的 bin 子目錄。根據操作系統的不同,運行 jmeter.bat(Windows系統)或 jmeter(Unix系統)。如果一切順利,JMeter 的腳本編輯界面將會呈現在您的面前:
接下來,我們以 HTTP 為例,看一下如何使用 JMeter 來構建並運行一個簡單的測試用例。
-
添加虛擬用戶組(Thread Group):右擊測試計划 > 添加 > 線程(用戶)> 線程組
JMeter 使用單個線程來模擬一個用戶,用戶組 Thread Group 就是指一組用戶,作為模擬訪問被測系統的虛擬用戶組。
「線程屬性」中的「線程數」可用於配置虛擬用戶組的並發用戶數,數值越高,並發量越大;「循環次數」可用於配置每個虛擬用戶執行多少次的測試。
-
添加被測 HTTP 頁面:右擊線程組 > 添加 > 取樣器 > HTTP請求
示例測試腳本中我們只使用默認的 HTTP 請求設置,對 bing 網站發起 HTTP 請求,您可以根據實際情況進行相關的配置。
-
添加結果監聽器:右擊線程組 > 添加 > 監聽器 > 察看結果樹
監聽器在實際運行性能測試中並不是必須的,但在編寫腳本的過程中可以幫助直觀看到測試結果,方便調試。在這個樣例腳本中我們將使用「察看結果樹」來幫助查看請求的響應信息。
-
運行測試。
保存測試腳本后,點擊操作欄中的「啟動」按鈕,就開始運行測試腳本了。建議線程組中的線程數和循環次數設置得小一些(比如10以內),以免被 ban。
以上,我們就完成了一個簡單的 HTTP 測試腳本。大家可以舉一反三,試試其他協議的測試。下一篇文章中,我們將更詳細地介紹 JMeter 的各種測試元件,配合使用就能構建更復雜的測試場景。
版權聲明: 本文為 EMQ 原創,轉載請注明出處。
原文鏈接:https://www.emqx.com/zh/blog/introduction-to-the-open-source-testing-tool-jmeter
技術支持:如對本文或 EMQ 相關產品有疑問,可訪問 EMQ 問答社區 https://askemq.com 提問,我們將會及時回復支持。
更多技術干貨,歡迎關注我們公眾號【EMQ 中文社區】。