性能測試是一種非功能測試技術(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é)果,從而幫助您對(duì)應(yīng)用程序進(jìn)行回歸測試。為了獲得最大的靈活性,JMeter 允許您使用正則表達(dá)式創(chuàng)建這些斷言。請(qǐ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ā)送請(qǐng)求,并通過表格、圖表等返回顯示目標(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)建它,請(qǐng)右鍵單擊 JMeter GUI 左側(cè)窗格中的“Test Plan”并添加所需的元素(圖 2)。
【圖2 | JMeter的測試元素]
Apache JMeter 如何模擬多個(gè)用戶?
讓我們看一下網(wǎng)頁請(qǐng)求是如何從用戶的瀏覽器發(fā)送到網(wǎng)絡(luò)服務(wù)器的,以及網(wǎng)頁最終是如何顯示的。理解這個(gè)工作流程將使我們有機(jī)會(huì)想象 JMeter 如何適應(yīng)這個(gè)工作流程,以及它如何能像瀏覽器一樣做同樣的事情。
步驟 1:用戶在瀏覽器中執(zhí)行操作,即鍵入站點(diǎn)地址、單擊鏈接或填寫表單并按提交。
在 JMeter 中,這不是必需的。
第 2 步:瀏覽器創(chuàng)建 HTTP 格式的請(qǐng)求并將其發(fā)送到服務(wù)器。
在 JMeter 中,這成為一個(gè) HTTP 請(qǐng)求采樣器。HTTP 請(qǐng)求采樣器以 HTTP 格式發(fā)送請(qǐng)求。
第 3 步:Web 服務(wù)器接收 HTTP 請(qǐng)求,創(chuàng)建 HTML 響應(yīng),并將 HTML 發(fā)送回瀏覽器。
在 JMeter 中,對(duì)于服務(wù)器來說,它是相同的請(qǐng)求。
第 4 步:瀏覽器接收 HTML。
在 JMeter 中,HTTP 請(qǐng)求采樣器接收 HTML 響應(yīng)并將其記錄下來以供分析。
第 5 步:瀏覽器在屏幕上呈現(xiàn) HTML,以便用戶可以看到文本和顏色 (GUI)。
JMeter 不會(huì)像瀏覽器那樣呈現(xiàn) HTML。
那么,就 JMeter 而言,是什么促成了一次用戶事務(wù)呢?
HTTP 請(qǐng)求采樣器以 HTTP 格式發(fā)送請(qǐng)求。》 服務(wù)器接收 HTTP 請(qǐng)求,創(chuàng)建 HTML 響應(yīng)并將 HTML 發(fā)送回 HTTP 請(qǐng)求采樣器。》 HTTP 請(qǐng)求采樣器接收 HTML 響應(yīng)并記錄它以供分析。
當(dāng)我們?cè)?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 請(qǐng)求采樣器使所有接收到的數(shù)據(jù)都可用于進(jìn)一步分析。View Tree Listener 用于可視化接收到的響應(yīng)。View Tree Listener 是了解發(fā)送了什么請(qǐng)求、響應(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ò)展性測試。
審核編輯:郭婷
評(píng)論