性能測試是一種非功能測試技術(shù),用于確定系統(tǒng)參數(shù)在各種工作負(fù)載下的響應(yīng)性和穩(wěn)定性。性能測試衡量系統(tǒng)的質(zhì)量屬性,例如可擴(kuò)展性、可靠性和資源使用情況。性能測試幫助產(chǎn)品所有者確定產(chǎn)品解決方案的基準(zhǔn)。性能測試的目標(biāo)不僅是發(fā)現(xiàn)代碼中的錯(cuò)誤,而且要找出瓶頸。在性能測試中,質(zhì)量工程師使用任何可用于性能測試的工具來模擬真實(shí)的用戶場景。
Apache JMeter 是一個(gè)開源 Java 桌面應(yīng)用程序,旨在執(zhí)行負(fù)載測試和檢查 Web 應(yīng)用程序的功能行為。質(zhì)量工程師可以使用 JMeter 來分析和測量 Web 應(yīng)用程序或各種服務(wù)(包括 Rest API)的響應(yīng)時(shí)間。它可用于模擬服務(wù)器、網(wǎng)絡(luò)或?qū)ο笊系闹刎?fù)載,以測試其強(qiáng)度或分析不同負(fù)載類型下的整體性能。JMeter 與 JDK 5 或更高版本兼容。
此外,JMeter 通過讓您創(chuàng)建帶有斷言的測試腳本來驗(yàn)證您的應(yīng)用程序是否返回了您期望的結(jié)果,從而幫助您對應(yīng)用程序進(jìn)行回歸測試。為了獲得最大的靈活性,JMeter 允許您使用正則表達(dá)式創(chuàng)建這些斷言。請注意,JMeter 不是瀏覽器——它在協(xié)議級(jí)別工作。
JMeter 支持的協(xié)議包括:
HTTP、HTTPS 站點(diǎn)
網(wǎng)頁服務(wù)
通過 JDBC 驅(qū)動(dòng)程序的數(shù)據(jù)庫
目錄 – LDAP
ETC
SMTP
FTP 服務(wù)
JMeter 特點(diǎn):
它有一個(gè)簡單且用戶友好的 GUI。
它獨(dú)立于平臺(tái)。在 Windows 上,可以使用 JMeter.bat 文件啟動(dòng) JMeter 測試,在 Unix/Linux 上,通過單擊 JMeter Shell Scripts 啟動(dòng)測試。
它以 XML 格式創(chuàng)建和存儲(chǔ)其測試計(jì)劃。這表明我們可以使用文本編輯器生成或創(chuàng)建測試計(jì)劃。
它是一個(gè)多線程框架,用于使用多個(gè)線程進(jìn)行并發(fā)采樣。
它有助于自動(dòng)化功能測試。
它是如何工作的?
JMeter 模擬一組用戶向目標(biāo)服務(wù)器發(fā)送請求,并通過表格、圖表等返回顯示目標(biāo)服務(wù)器/應(yīng)用程序性能/功能的統(tǒng)計(jì)信息(圖 1、3-5)。
【圖1 | JMeter模擬]
要使用 JMeter,必須定義測試計(jì)劃,這意味著必須指定:
要訪問的 http 或其他 URL 或要運(yùn)行的 SQL 查詢
如何存儲(chǔ)/顯示結(jié)果
運(yùn)行多少線程來創(chuàng)建所需的負(fù)載/壓力
在 JMeter 術(shù)語中,這些稱為線程、采樣器、偵聽器等。完整的測試計(jì)劃包含所有這些。要?jiǎng)?chuàng)建它,請右鍵單擊 JMeter GUI 左側(cè)窗格中的“Test Plan”并添加所需的元素(圖 2)。
【圖2 | JMeter的測試元素]
Apache JMeter 如何模擬多個(gè)用戶?
讓我們看一下網(wǎng)頁請求是如何從用戶的瀏覽器發(fā)送到網(wǎng)絡(luò)服務(wù)器的,以及網(wǎng)頁最終是如何顯示的。理解這個(gè)工作流程將使我們有機(jī)會(huì)想象 JMeter 如何適應(yīng)這個(gè)工作流程,以及它如何能像瀏覽器一樣做同樣的事情。
步驟 1:用戶在瀏覽器中執(zhí)行操作,即鍵入站點(diǎn)地址、單擊鏈接或填寫表單并按提交。
在 JMeter 中,這不是必需的。
第 2 步:瀏覽器創(chuàng)建 HTTP 格式的請求并將其發(fā)送到服務(wù)器。
在 JMeter 中,這成為一個(gè) HTTP 請求采樣器。HTTP 請求采樣器以 HTTP 格式發(fā)送請求。
第 3 步:Web 服務(wù)器接收 HTTP 請求,創(chuàng)建 HTML 響應(yīng),并將 HTML 發(fā)送回瀏覽器。
在 JMeter 中,對于服務(wù)器來說,它是相同的請求。
第 4 步:瀏覽器接收 HTML。
在 JMeter 中,HTTP 請求采樣器接收 HTML 響應(yīng)并將其記錄下來以供分析。
第 5 步:瀏覽器在屏幕上呈現(xiàn) HTML,以便用戶可以看到文本和顏色 (GUI)。
JMeter 不會(huì)像瀏覽器那樣呈現(xiàn) HTML。
那么,就 JMeter 而言,是什么促成了一次用戶事務(wù)呢?
HTTP 請求采樣器以 HTTP 格式發(fā)送請求?!?服務(wù)器接收 HTTP 請求,創(chuàng)建 HTML 響應(yīng)并將 HTML 發(fā)送回 HTTP 請求采樣器?!?HTTP 請求采樣器接收 HTML 響應(yīng)并記錄它以供分析。
當(dāng)我們在 JMeter 測試計(jì)劃中添加一個(gè) HTTP Request Sampler 時(shí),它會(huì)存儲(chǔ)一個(gè)網(wǎng)頁調(diào)用和接收序列。我們可以將其稱為單用戶事務(wù)。一旦我們將這個(gè)告訴 JMeter,它就可以做同樣的事情 n – 次數(shù)。它還同時(shí)多次執(zhí)行此操作。
最后,JMeter 通過制作采樣器的副本并在單獨(dú)的線程中運(yùn)行它們來模擬多個(gè)用戶。
因?yàn)?JMeter 不完全是瀏覽器,所以 HTTP 請求采樣器使所有接收到的數(shù)據(jù)都可用于進(jìn)一步分析。View Tree Listener 用于可視化接收到的響應(yīng)。View Tree Listener 是了解發(fā)送了什么請求、響應(yīng)是什么以及事務(wù)結(jié)果的好方法。
為什么選擇 JMeter?
JMeter 是一個(gè)開源工具,擁有眾多虛擬用戶的支持。
腳本在 JMeter 中不是必需的,但像 Loadrunner 這樣的工具需要在 C 中編寫腳本。
與其他工具相比,它可以輕松進(jìn)行參數(shù)化和關(guān)聯(lián)。
虛擬用戶的設(shè)置不需要額外的配置,因?yàn)樗鼤?huì)在 JVM 上自動(dòng)生成 v-users。
JMeter 是跨平臺(tái)的。
【圖4 | 以表格形式報(bào)告]
【圖5 | 以圖形格式報(bào)告]
結(jié)論
JMeter 工具易于用于在 Web 應(yīng)用程序服務(wù)器上注入負(fù)載。開發(fā)和質(zhì)量工程師可以使用 JMeter 工具輕松模擬服務(wù)器上的繁重負(fù)載,無需為虛擬用戶進(jìn)行額外設(shè)置,無需額外的腳本編寫工作,并且可以以圖表和表格摘要的形式測量準(zhǔn)確的響應(yīng)時(shí)間。JMeter 結(jié)果圖表有助于定位瓶頸并提高 Web 服務(wù)器應(yīng)用程序的性能。質(zhì)量工程師可以通過分析 JMeter 結(jié)果圖表來識(shí)別罪魁禍?zhǔn)?RestAPI。JMeter 工具還用于執(zhí)行服務(wù)器基準(zhǔn)測試和可擴(kuò)展性測試。
審核編輯:郭婷
評論