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