1酬凳、什么是JMeter
Apache JMeter是Apache組織開(kāi)發(fā)的基于Java的壓力測(cè)試工具互纯。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試迎变,但后來(lái)擴(kuò)展到其他測(cè)試領(lǐng)域充尉。?JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載衣形,來(lái)自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能驼侠。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試谆吴,通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證你的程序返回了你期望的結(jié)果倒源。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言句狼。?Apache jmeter 可以用于對(duì)靜態(tài)的和動(dòng)態(tài)的資源(文件笋熬,Servlet,Perl腳本腻菇,java 對(duì)象胳螟,數(shù)據(jù)庫(kù)和查詢,FTP服務(wù)器等等)的性能進(jìn)行測(cè)試筹吐。它可以用于對(duì)服務(wù)器糖耸、網(wǎng)絡(luò)或?qū)ο竽M繁重的負(fù)載來(lái)測(cè)試它們的強(qiáng)度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負(fù)載測(cè)試你的服務(wù)器/腳本/對(duì)象丘薛。
? ? JMeter可作為接口測(cè)試工具嘉竟,性能測(cè)試工具。
1.1洋侨、為什么使用Jmeter
1.開(kāi)源許可: Jmeter 是完全免費(fèi)的舍扰,并提供了源碼可供自定義開(kāi)發(fā)。
2.圖形界面:提供了方便的圖形界面來(lái)編輯和開(kāi)發(fā)測(cè)試腳本希坚。
3.圖形測(cè)試結(jié)果:提供了圖表边苹、表格、樹(shù)吏够、文件等格式的結(jié)果顯示勾给。
4.多協(xié)議支持:支持 http滩报、jdbc、ldap播急、soap脓钾、jms、ftp 等等協(xié)議桩警。
5.多線程框架:通過(guò)線程組可训,能夠輕易的設(shè)置不同測(cè)試的并發(fā)用戶。
6.操作簡(jiǎn)單:用戶可以通過(guò)JMeter組件捶枢,輕易的完成測(cè)試工作握截。
7.高擴(kuò)展性:jmeter 支持用戶自定義測(cè)試腳本,同樣還提供了各種插件烂叔。
1.2谨胞、JMeter工作原理
?Jmeter只是作為發(fā)起請(qǐng)求的客戶端(可以理解為前端),Jmeter是作為組裝請(qǐng)求報(bào)文結(jié)構(gòu)的容器蒜鸡,例如:請(qǐng)求行胯努、請(qǐng)求頭、請(qǐng)求數(shù)據(jù)逢防;并可將響應(yīng)結(jié)果進(jìn)行可視化展示叶沛。對(duì)于接口的復(fù)雜邏輯Jmeter有豐富的插件進(jìn)行支持,前/后置處理忘朝,斷言元件灰署、第三方插件、也可以自行開(kāi)發(fā)插件局嘁。
2溉箕、如何使用JMeter
2.1、JMeter下載及安裝
1.環(huán)境搭建
由于JMeter基于Java開(kāi)發(fā)导狡,因此在JMeter安裝前提供Java環(huán)境约巷。Java系統(tǒng)環(huán)境變量配置偎痛。
2.JMeter下載
下載地址:http://jmeter.apache.org/download_jmeter.cgi旱捧,(Windows版本下載.zip,Linux版本下載.tgz)
下載后無(wú)需安裝踩麦,解壓后即可使用枚赡。解壓后目錄如下:
運(yùn)行Jmeter,雙擊jmeter.bat文件
2.2、認(rèn)識(shí)JMeter組件
JMeter共有10大組件:線程谓谦、取樣器贫橙、邏輯控制器、前置處理器反粥、后置處理器卢肃、斷言疲迂、定時(shí)器、測(cè)試片斷莫湘、配置元件尤蒿、監(jiān)聽(tīng)器。
線程:線程組元素是任何測(cè)試計(jì)劃的起點(diǎn)幅垮。所有控制器和采樣器必須在線程組下腰池。其他元素(例如,偵聽(tīng)器)可以直接放在測(cè)試計(jì)劃下忙芒,在這種情況下示弓,它們將應(yīng)用于所有線程組。顧名思義呵萨,線程組元素控制JMeter將用于執(zhí)行測(cè)試的線程數(shù)奏属。
取樣器:采樣器告訴JMeter將請(qǐng)求發(fā)送到服務(wù)器并等待響應(yīng)。它們按照它們?cè)跇?shù)中出現(xiàn)的順序進(jìn)行處理潮峦∨钠ぃ控制器可用于修改采樣器的重復(fù)次數(shù)。
JMeter采樣器包括:FTP請(qǐng)求跑杭、HTTP請(qǐng)求(也可用于SOAP或REST Web服務(wù))铆帽、JDBC請(qǐng)求、Java對(duì)象請(qǐng)求德谅、JMS請(qǐng)求爹橱、JUnit測(cè)試請(qǐng)求、LDAP要求窄做、郵件要求愧驱、操作系統(tǒng)進(jìn)程請(qǐng)求、TCP請(qǐng)求椭盏。
邏輯控制器:邏輯控制器使您可以自定義JMeter用于確定何時(shí)發(fā)送請(qǐng)求的邏輯组砚。邏輯控制器可以更改來(lái)自其子元素的請(qǐng)求的順序。
前置處理器:前置處理器顧名思義就是在取樣器之前執(zhí)行相關(guān)操作掏颊。
后置處理器:后置處理器顧名思義就是在取樣器之前執(zhí)行相關(guān)操作糟红。
斷言:斷言使您可以斷言有關(guān)從被測(cè)試服務(wù)器收到的響應(yīng)的事實(shí)。使用斷言乌叶,您基本上可以“測(cè)試”您的應(yīng)用程序正在返回期望的結(jié)果盆偿。
定時(shí)器:默認(rèn)情況下,JMeter線程按順序執(zhí)行采樣器而不會(huì)暫停准浴。我們建議您通過(guò)將可用計(jì)時(shí)器之一添加到線程組來(lái)指定延遲事扭。如果不添加延遲,JMeter可能會(huì)在很短的時(shí)間內(nèi)發(fā)出太多請(qǐng)求乐横,從而使服務(wù)器不堪重負(fù)求橄。
測(cè)試片斷:
配置文件:配置元素與采樣器緊密配合今野。盡管它不發(fā)送請(qǐng)求(HTTP(S)測(cè)試腳本記錄器除外),但它可以添加或修改請(qǐng)求罐农。
監(jiān)聽(tīng)器:用于取樣器發(fā)送請(qǐng)求后響應(yīng)的結(jié)果可視化腥泥。
2.3、JMeter作用域
在jmeter中啃匿,元件的作用域是靠測(cè)試計(jì)劃的的樹(shù)型結(jié)構(gòu)中元件的父子關(guān)系來(lái)確定的蛔外。
配置元件(config?elements?)
元件會(huì)影響其作用范圍內(nèi)的所有元件。
前置處理程序(Per-processors)
元件在其作用范圍內(nèi)的每一個(gè)sampler元件之前執(zhí)行溯乒。
定時(shí)器(timers?)
元件對(duì)其作用范圍內(nèi)的每一個(gè)sampler?有效
后置處理程序(Post-processors)
元件在其作用范圍內(nèi)的每一個(gè)sampler元件之后執(zhí)行夹厌。
斷言(Assertions)
元件對(duì)其作用范圍內(nèi)的每一個(gè)sampler?元件執(zhí)行后的結(jié)果執(zhí)行校驗(yàn)。
監(jiān)聽(tīng)器(Listeners)
元件收集其作用范圍的每一個(gè)sampler元件的信息并呈現(xiàn)裆悄。
>取樣器(sampler)元件不和其它元件相互作用矛纹,因此不存在作用域的問(wèn)題。
>邏輯控制器(Logic?Controller)元件只對(duì)其子節(jié)點(diǎn)中的取樣器?和?邏輯控制器作用光稼。
>除取樣器?和邏輯控制器?元件外或南,其他6類元件,如果是某個(gè)sampler的子節(jié)點(diǎn)艾君,則該元件公對(duì)其父子節(jié)點(diǎn)起作用采够。
>除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點(diǎn)不是sampler?冰垄,則其作用域是該元件父節(jié)點(diǎn)下的其他所有后代節(jié)點(diǎn)(包括子節(jié)點(diǎn)蹬癌,子節(jié)點(diǎn)的子節(jié)點(diǎn)等)。
簡(jiǎn)單舉個(gè)小例子:
取樣器(HTTP請(qǐng)求1?虹茶、HTTP請(qǐng)求2逝薪、HTTP請(qǐng)求3)、定時(shí)器(固定定時(shí)器)蝴罪、 邏輯控制器(循環(huán)控制器) 董济、斷言(響應(yīng)斷言)、監(jiān)聽(tīng)器(察看結(jié)果樹(shù)1要门、察看結(jié)果樹(shù)2)
*??HTTP請(qǐng)求1?虏肾、HTTP請(qǐng)求2?、HTTP請(qǐng)求3?元件沒(méi)有作用域的概念暂衡。
*固定定時(shí)器元件作用域HTTP請(qǐng)求1 询微。
*響應(yīng)斷言元件作用域HTTP請(qǐng)求1?、HTTP請(qǐng)求2 狂巢。
*循環(huán)控制器?元件作用域名是其子節(jié)點(diǎn)HTTP請(qǐng)求2、HTTP請(qǐng)求3?书聚。
*察看結(jié)果樹(shù)1?元件的作用域是是HTTP請(qǐng)求2唧领、HTTP請(qǐng)求3藻雌。
*察看結(jié)果樹(shù)2元作的作用域是HTTP請(qǐng)求1?、HTTP請(qǐng)求2?斩个、HTTP請(qǐng)求3
2.4胯杭、簡(jiǎn)單Web測(cè)試
1.創(chuàng)建線程組
2.添加HTTP取樣器
3.查看響應(yīng)結(jié)果
4.運(yùn)行
5.響應(yīng)結(jié)果
左側(cè):綠色為響應(yīng)成功上遥,紅色為響應(yīng)失敗铭段。
右側(cè):可查看響應(yīng)的結(jié)果和請(qǐng)求數(shù)據(jù)等內(nèi)容蹬屹。