一、JMeter?介紹
?Apache JMeter是100%純JAVA桌面應(yīng)用程序,被設(shè)計為用于測試客戶端/服務(wù)端結(jié)構(gòu)的軟件(例如web應(yīng)用程序)晌杰。它可以用來測試靜態(tài)和動態(tài)資源的性能奈附,例如:靜態(tài)文件隔缀,Java Servlet,CGI Scripts,Java Object,數(shù)據(jù)庫和FTP服務(wù)器等等。JMeter可用于模擬大量負載來測試一臺服務(wù)器鹦赎,網(wǎng)絡(luò)或者對象的健壯性或者分析不同負載下的整體性能谍椅。
同時,JMeter可以幫助你對你的應(yīng)用程序進行回歸測試古话。通過你創(chuàng)建的測試腳本和assertions來驗證你的程序返回了所期待的值雏吭。為了更高的適應(yīng)性,JMeter允許你使用正則表達式來創(chuàng)建這些assertions.
JMeter與LoadRunner比較
JMeter?是一款開源(有著典型開源工具特點:界面不美觀)測試工具陪踩,雖然與LoadRunner相比有很多不足杖们,比如:它結(jié)果分析能力沒有LoadRunner詳細悉抵;很它的優(yōu)點也有很多:
? 開源,他是一款開源的免費軟件摘完,使用它你不需要支付任何費用姥饰,
? 小巧,相比LR的龐大(最新LR11將近4GB)孝治,它非常小巧媳否,不需要安裝,但需要JDK環(huán)境荆秦,因為它是使用java開發(fā)的工具。
? 功能強大力图,jmeter設(shè)計之初只是一個簡單的web性能測試工具步绸,但經(jīng)過不段的更新擴展,現(xiàn)在可以完成數(shù)據(jù)庫吃媒、FTP瓤介、LDAP、WebService等方面的測試赘那。因為它的開源性刑桑,當然你也可以根據(jù)自己的需求擴展它的功能。
兩者最大的區(qū)別:jmeter不支持IP欺騙募舟,而LR支持祠斧。
JMeter缺點
使用JMeter無法驗證JS程序,也無法驗證頁面UI拱礁,所以要須要和Selenium配合來完成Web2.0應(yīng)用的測試琢锋。
二、JMeter?下載安裝
1)JMeter安裝
1. http://jmeter.apache.org/下載最新版本的JMeter呢灶,解壓文件到任意目錄
2.?安裝JDK吴超,配置環(huán)境變量JAVA_HOME.
3.?系統(tǒng)要求:JMeter2.11 需要JDK1.6以上的版本支持運行
4.?JMeter可以運行在如下操作系統(tǒng)上:Unix,Windows和Open VMS.
5.?避免在一個有空格的路徑安裝JMeter鸯乃,這將導(dǎo)致遠程測試出現(xiàn)問題鲸阻。
2)JMeter插件安裝
1.?插件下載地址:http://jmeter-plugins.org/downloads/all/
2.?插件下載后解壓:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目錄。
三缨睡、JMeter?運行
1. 進入bin目錄運行jmeter.bat啟動jmeter
注意:打開的時候會有兩個窗口鸟悴,JMeter的命令窗口和JMeter的圖形操作界面,不可以關(guān)閉命令窗口奖年。
2.?JMeter的classpath:
? ?如果你想添加其他JAR文件到JMeter的classpath中遣臼,你必須復(fù)制他們到lib目錄中;
? ?如果你開發(fā)了一個JMeter特定組件或有效的jar文件,復(fù)制到lib目錄下的ext目錄中拾并。
3. 打開之后顯示的是中文揍堰,如果你想使用其他語言鹏浅,比如英文,那么通過菜單選項->選擇語言->英文即可屏歹,當然轉(zhuǎn)為中文也是同樣操作隐砸。
四、JMeter?測試計劃元件?
打開Jmeter頁面:包括測試計劃+工作臺蝙眶。
1季希、Test?Plan?(測試計劃):用來描述一個性能測試,包含與本次性能測試所有相關(guān)的功能幽纷。也就說本的性能測試的所有內(nèi)容是于基于一個計劃的式塌。
右鍵單擊“測試計劃”彈出菜單:
注意:
“函數(shù)測試模式”復(fù)選框,如果被選擇友浸,它會使Jmeter記錄來自服務(wù)器返回的每個取樣的數(shù)據(jù)峰尝。如果你在測試監(jiān)聽器中選擇一個文件,這個數(shù)據(jù)將被寫入文件收恢。如果你嘗試一個較小的測試來保證Jmeter配置正確并且你的服務(wù)器正在返回期望的結(jié)果武学,這是很有用的。這樣做的后果就是這個文件會快速的增大伦意,并且Jmeter的效率會影響火窒。
如果不記錄數(shù)據(jù)到文件,這個選項就沒有不同了驮肉。
2熏矿、Threads?(Users)線程?用戶
雖然有三個添加線程組的選項,名字不一樣离钝,?創(chuàng)建之后曲掰,其界面是完全一樣的。之前的版本只有一個線程組的名字∧纬剑現(xiàn)在多一個setUp?theread?Group?與terDown?Thread?Group
1)?setup?thread?group?
一種特殊類型的ThreadGroup的栏妖,可用于執(zhí)行預(yù)測試操作。這些線程的行為完全像一個正常的線程組元件奖恰。不同的是吊趾,這些類型的線程執(zhí)行測試前進行定期線程組的執(zhí)行。
setUp Thread Group類似于lr的init.可用于執(zhí)行預(yù)測試操作瑟啃。
2)?teardown?thread?group.?
一種特殊類型的ThreadGroup的论泛,可用于執(zhí)行測試后動作。這些線程的行為完全像一個正常的線程組元件蛹屿。不同的是屁奏,這些類型的線程執(zhí)行測試結(jié)束后執(zhí)行定期的線程組。
tearDown Thread Group類似于lr的end.可用于執(zhí)行測試后動作错负。
3)?thread?group(線程組).
?????這個就是我們通常添加運行的線程坟瓢。通俗的講一個線程組,勇边,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶折联。線程組中包含的線程數(shù)量在測試執(zhí)行過程中是不會發(fā)生改變的粒褒。
線程組:
名稱:就如字面意思,起個有意義的名字就行
注釋:
線程數(shù):這里選擇5
Ramp-Up Period:單位是秒诚镰,默認時間是1秒奕坟。它指定了啟動所有線程所花費的時間,比如清笨,當前的設(shè)定表示“在5秒內(nèi)啟動5個線程月杉,每個線程的間隔時間為1秒”。如果你需要Jmeter立即啟動所有線程抠艾,將此設(shè)定為0即可
循環(huán)次數(shù):表示每個線程執(zhí)行多少次請求苛萎。
3、測試片段(Test?Fragment)
???? 測試片段元素是控制器上的一個種特殊的線程組跌帐,它在測試樹上與線程組處于一個層級。它與線程組有所不同绊率,因為它不被執(zhí)行谨敛,除非它是一個模塊控制器或者是被控制器所引用時才會被執(zhí)行。
控制器
JMeter有兩種類型的控制器:取樣器(sample)和邏輯控制器(Logic?Controller)滤否,用這些原件來驅(qū)動處理一個測試脸狸。
4、取樣器(Sampler)
??? 取樣器(Sampler)是性能測試中向服務(wù)器發(fā)送請求藐俺,記錄響應(yīng)信息炊甲,記錄響應(yīng)時間的最小單元,JMeter?原生支持多種不同的sampler?欲芹, 如?HTTP?Request?Sampler?卿啡、?FTP??Request?Sampler 、TCP??Request?Sampler 菱父、 JDBC?Request?Sampler?等颈娜,每一種不同類型的?sampler?可以根據(jù)設(shè)置的參數(shù)向服務(wù)器發(fā)出不同類型的請求。
??? 在Jmeter的所有Sampler中浙宜,Java Request Sampler與BeanShell Requst Sampler是兩種特殊的可定制的Sampler.
5官辽、邏輯控制器(Logic?Controller)
??? 邏輯控制器,包括兩類無件粟瞬,一類是用于控制test?plan?中?sampler?節(jié)點發(fā)送請求的邏輯順序的控制器同仆,常用的有?如果(If)控制器?、 switch?Controller?裙品、Runtime?Controller俗批、循環(huán)控制器等俗或。另一類是用來組織可控制?sampler?來節(jié)點的, 如?事務(wù)控制器扶镀、吞吐量控制器蕴侣。
6、配置元件(Config?Element)
??? 配置元件(config?element)用于提供對靜態(tài)數(shù)據(jù)配置的支持臭觉。CSV?Data?Set?config?可以將本地數(shù)據(jù)文件形成數(shù)據(jù)池 (Data?Pool)昆雀,而對應(yīng)于HTTP?Request?Sampler和?TCP?Request?Sampler等類型的配制無件則可以修改 Sampler的默認數(shù)據(jù)。
例如蝠筑,HTTP?Cookie?Manager?可以用于對?HTTP?Request?Sampler?的 cookie?進行管理狞膘。
HTTP 請求默認值不會觸發(fā)Jmeter發(fā)送http請求,而只是定義HTTP請求的默認屬性什乙。
7挽封、定時器(Timer)
定時器(Timer)用于操作之間設(shè)置等待時間,等待時間是性能測試中常用的控制客戶端QPS的手段臣镣。類似于LoadRunner里面的“思考時間”辅愿。 JMeter?定義了Bean?Shell?Timer、Constant?Throughput?Timer忆某、固定定時器等不同類型的Timer点待。
8、前置處理器(Per?Processors)
??? 前置處理器用于在實際的請求發(fā)出之前對即將發(fā)出的請求進行特殊處理弃舒。例如癞埠,HTTP?URL重寫修復(fù)符則可以實現(xiàn)URL重寫,當RUL中有sessionID?一類的session信息時聋呢,可以通過該處理器填充發(fā)出請求的實際的sessionID?苗踪。
9、后置處理器(Post?Processors)
??? 后置處理器是用于對Sampler?發(fā)出請求后得到的服務(wù)器響應(yīng)進行處理削锰。一般用來提取響應(yīng)中的特定數(shù)據(jù)(類似LoadRunner測試工具中的關(guān)聯(lián)概念)通铲。例如,XPath??Extractor?則可以用于提取響應(yīng)數(shù)據(jù)中通過給定XPath?值獲得的數(shù)據(jù);正則表達式提取器器贩,則可以提取響應(yīng)數(shù)據(jù)中通過正則表達式獲得的數(shù)據(jù)测暗。
10、斷言(Assertions)
斷言用于檢查測試中得到的相應(yīng)數(shù)據(jù)等是否符合預(yù)期磨澡,斷言一般用來設(shè)置檢查點碗啄,用以保證性能測試過程中的數(shù)據(jù)交互是否與預(yù)期一致。
11稳摄、監(jiān)聽器(Listener)
這個監(jiān)聽器可不是用來監(jiān)聽系統(tǒng)資源的元件稚字。它是用來對測試結(jié)果數(shù)據(jù)進行處理和可視化展示的一系列元件。圖形結(jié)果、查看結(jié)果樹胆描、聚合報告瘫想、用表格察看結(jié)果都是我們經(jīng)常用到的元件。
五昌讲、工作臺
在測試中我們可能需要暫時更改一些組件国夜,可以把一些需要更改的組件保存在工作臺中,測試完成后再恢復(fù)短绸,但是切記:不能退出jmeter.一旦退出jmeter车吹,工作臺中的內(nèi)容就會消失。
1醋闭、工作臺-非測試元件-Property Display窄驹,此元件相當于是jmeter.properties的GUI。
六证逻、幫助
http://jmeter.apache.org/usermanual/component_reference.html
最好的幫助是:菜單-“幫助”-“幫助”乐埠。
到此,我們已經(jīng)簡單了解了jmeter的基本組成原件囚企,我們后序的測試工作也就是使用這些元件來完成測試任務(wù)丈咐。