軟件測試 | JMeter
Apache JMeter是100%的Java桌面應(yīng)用程序,用于對軟件做壓力測試。它最初被設(shè)計(jì)用于Web應(yīng)用測試,但后來擴(kuò)展到其他測試領(lǐng)域。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗(yàn)證被測程序返回了期望的結(jié)果。為了保證最大限度的靈活性,JMeter允許正則表達(dá)式創(chuàng)建斷言。
Apache JMeter可以用對于靜態(tài)和動態(tài)資源(文件、Server、Perl腳本、Java對象、數(shù)據(jù)庫和查詢、FTP服務(wù)器等)的性能進(jìn)行測試。它可以用于對服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M繁重的負(fù)載來測試他們的強(qiáng)度或分析不同壓力類型下的整體性能。測試人員可以使用它做性能圖形分析或者測試服務(wù)器/腳本/對象在大并發(fā)負(fù)載下的表現(xiàn)。
1.JMeter的歷史
Apache Software Foundation的Stefano Mazzocchi是JMeter的最初開發(fā)人員。起初是為了測試Apache JServ的性能(一個(gè)后來被Apache Tomcat項(xiàng)目替代的項(xiàng)目)。后續(xù)的開發(fā)者重新設(shè)計(jì)了JMeter,增強(qiáng)了GUI并添加了對功能測試的支持。
2.JMeter遠(yuǎn)景
隨著開發(fā)人員利用插件架構(gòu)的優(yōu)勢,JMeter的能力迅速擴(kuò)展。將來開發(fā)的主要目標(biāo)是使得JMeter盡可能地變成一個(gè)有用的衰退測試工具,而無損JMeter的壓力測試能力。
JMeter主要特點(diǎn)
JMeter的主要特點(diǎn)包括如下。
(1)支持對多種服務(wù)類型進(jìn)行測試,包括:
Web-HTTP,HTTPS
SOAP
Database via JDBC
LDAP
JMS
Mail-POP3(S)and IMAP(S)
(2)支持通過錄制/回放方式獲取測試腳本
(3)具備高可移植性,是100%純Java程序。
(4)采用多線程框架,允許通過多個(gè)線程并取樣及通過獨(dú)立的線程組對不同的功能同樣取樣。
(5)精心設(shè)計(jì)的GUI支持高速用戶操作和精確計(jì)時(shí)。
(6)支持緩存和離線的方式分析/回放測試結(jié)果。
(7)具備高擴(kuò)展性,包括:
插拔式的取樣器支持無限制擴(kuò)充測試能力。
提供各種負(fù)載統(tǒng)計(jì)表和可插拔的計(jì)時(shí)器。
數(shù)據(jù)分析和可視化插件提供動態(tài)輸入數(shù)據(jù),以及通過預(yù)置函數(shù)對測試數(shù)據(jù)進(jìn)行操作。
支持用腳本構(gòu)造采樣器(1.9.2及以上版本支持BeanShell).
盡管從Web服務(wù)器或者其他遠(yuǎn)程服務(wù)的角度,JMeter看上去很像是一款瀏覽器,但實(shí)際上它并不是瀏覽器,因?yàn)樗鼉H支持瀏覽器的部分操作。例如,JMeter不會執(zhí)行HTML頁面中包含的JavaScript,而且JMeter對于HMTL頁面的處理方式也與瀏覽器不同(JMeter有可能會以HTML方式讀取服務(wù)器響應(yīng),但其所耗時(shí)間不會被計(jì)算到任何一次采樣中)。
JMeter常用術(shù)語
采樣器(Samplers):采樣器是JMeter測試腳本的基礎(chǔ)單元,用戶可以用它來向服務(wù)器發(fā)出一個(gè)特定的請求,采樣器會在超時(shí)前等待服務(wù)器的響應(yīng)。
邏輯控制器(Logic Controllers):用戶通過邏輯控制器來控制JMeter測試腳本的執(zhí)行順序,以便測試能夠按照用戶期望的順序和邏輯執(zhí)行。
監(jiān)聽器(Listeners):監(jiān)聽器被用來手機(jī)測試結(jié)果信息,并以用戶指定的方式加以展示。
配置元件(Configuration Elements):配置元件被用來設(shè)置一些JMeter測試腳本公用的信息。
斷言(Assertions):斷言被用來驗(yàn)證服務(wù)器實(shí)際返回的信息與用戶期望的情況是否相符。
定時(shí)器(Timers):定時(shí)器被用來保存JMeter測試腳本與時(shí)間相關(guān)的一些信息,例如思考時(shí)間(Think Time)
前置處理器(Pre-Processors):在前置處理器的作用范圍內(nèi),任何采樣器被執(zhí)行前,都要先執(zhí)行前置處理器。
后置處理器(Post-Processors):在后置處理器的作用范圍內(nèi),任何采樣器被執(zhí)行后,都要執(zhí)行對應(yīng)的后置處理器。
測試計(jì)劃(Test Plan):測試計(jì)劃是JMeter測試腳本的根節(jié)點(diǎn),關(guān)于整個(gè)測試腳本的一些基礎(chǔ)設(shè)置,可以在測試計(jì)劃中設(shè)定,例如用戶定義變量。
線程組(Thread Group):線程組定義了一個(gè)虛擬用戶池,其中每一個(gè)虛擬用戶都使用同樣的測試腳本。
工作臺(WorkBench):工作臺被用來保存暫時(shí)不適用的測試元素,當(dāng)測試人員保存測試計(jì)劃時(shí),工作臺中的內(nèi)容不會被一起保存。
JMeter測試結(jié)果字段的意義
JMeter測試結(jié)果字段的意義如下,
Label:定義HTTP請求名稱
Samples:表示這次測試中一共發(fā)出了多少個(gè)請求。
Average:平均響應(yīng)時(shí)長——默認(rèn)情況下是單個(gè)Request的平均響應(yīng)時(shí)長,當(dāng)使用了Transaction Controller時(shí),也可以以Transaction為單位顯示平均響應(yīng)時(shí)長。
Mediam:中位數(shù),也就是50%用戶的響應(yīng)時(shí)長。
90%Line:90%用戶的響應(yīng)時(shí)長。
搜索微信公眾號:TestingStudio霍格沃茲的干貨都很硬核