




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
JMETER中文手冊分享
1.簡介
ApacheJMeter是100%純java桌面應(yīng)用程序,被設(shè)計用來測試C/S結(jié)構(gòu)的軟件(例如
web應(yīng)用程序)。它可以用來測試包括基于靜態(tài)和動態(tài)資源程序的性能,例如靜態(tài)文件,Java
Servlets,Java對象,數(shù)據(jù)庫,F(xiàn)TP服務(wù)器等等。JMeter可以用來在一個服務(wù)器、網(wǎng)絡(luò)或者
對象上模擬重負(fù)載來測試它的強度或者分析在不同的負(fù)載類型下的全面性能。
另外,JMeter能夠通過讓你們用斷言創(chuàng)建測試腳本來驗證我們的應(yīng)用程序是否返回了
我們期望的結(jié)果,從而幫助我們回歸測試我們的程序。為了最大的靈活性,JMeter允許我
們使用正則表達式創(chuàng)建斷言。
1.1歷史
Apache軟件組織的StefanoMazzocchi是JMeter的創(chuàng)始人。他編寫它起初是為了測試
ApacheJServ的性能(一個已經(jīng)被ApacheTomcat工程所替代的工程)。我們重新設(shè)計JMeter
來增強用戶界面并增加功能測試的能力。
1.2未來
我們希望看到作為開發(fā)者利用它的可插入架構(gòu)使JMeter的功能快速擴展。未來發(fā)展的
主要目標(biāo)是在沒有影響JMeter的負(fù)載測試能力的情況下盡可能使JMeter成為最實用的回歸
測試工具。
2.入門
開始使用JMeter最容易的方法是首先下載最新版并且安裝它。這個版本包含所有你在
構(gòu)建和運行Web,FTP,JDBC,和JND1等測試時使用需要的所有文件。
如果你想執(zhí)行JDBC測試,你當(dāng)然需要從供應(yīng)商得到適當(dāng)?shù)腏DBC驅(qū)動。JMeter沒有提
供任何JDBC驅(qū)動。你可能需要下載的其它軟件:
BeanShell-BeanShell函數(shù)和測試元件需要
JavaActivationFramework-JavaMail需要
JavaMail-Mail可視化,MailReader和WebService(SOAP)取樣器需要
JMS-JMS取樣器需要
下一步,開始使用JMeter并且參見用戶手冊創(chuàng)建一個測試計劃一章使自己更加熟悉
JMeter基礎(chǔ)(例如,添加和刪除元件)。
最后,參見如何構(gòu)建一個明確類型的測試用例的適合章節(jié)。例如,如果你對Web應(yīng)用
測試感興趣,那就參見創(chuàng)建一個Web測試計劃。其他具體的測試計劃章節(jié)是:高級Web測
試計劃、JDBC、FTP、JMS點到點、JMS主題、LDAP
2.1需求
JMeter需要最小需求的運行環(huán)境。
2.1.1Java版本
JMeter需要一個完全適當(dāng)?shù)腏VM1.4或者更高
因為JMeter僅使用Java標(biāo)準(zhǔn)API,請不要把因為JRE實現(xiàn)版本而無法運行JMeter的bug
報告提交。
2.1.2操作系統(tǒng)
JMeter是100%純Java應(yīng)用程序并且能夠正確的在任何有適當(dāng)?shù)腏ava實現(xiàn)的操作系統(tǒng)
上運行。
JMeter在下列環(huán)境已經(jīng)被測試:
Unix(Solaris,Linux,等)、Windows(98,NT2000,xp)、OpenVMSAlpha7.3+
2.2可選
如果你計劃做JMeter開發(fā)或者想使用SUN的java標(biāo)準(zhǔn)擴展包,你將需要下列更多的可
選包。
2.2.1Java編譯器
如果你想編譯JMeter源代碼或者開發(fā)JMeter插件,你將需要一個完整的適當(dāng)?shù)腏DK1.4
或者更高。
2.2.2SAXXML解析器
JMeter使用Apache的XercesXML解析器,你可以選擇告訴JMeter使用一個不同的
XML解析器。這樣做,把第三方的解析器的類包包含在JMeter的classpath中,并更新rties
文件里的解析器實現(xiàn)的全類名。
2.2.3Email支持
JMeter有有限的Email能力。它能夠發(fā)送基于測試結(jié)果的Email,并且支持POP/IMAP
取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email,需要添加Sun的JavaMail包和
activation包至!JJMeterclasspath。
2.2.4SSL力口密
為了測試一個使用SSL加密(HPPS)的web服務(wù)器,JMeter需要一個提供SSL實現(xiàn)
(例如Sun的JavaSecureSocketsExtension-JSSE)。包含需要的加密包到JMeter的
classpath?同樣,通過注冊SSL提供者更新rties文件。
JMeter默認(rèn)協(xié)議等級TLS(傳輸層安全性)。這可以通過修改在ties或者rties文件中
的"Itocol"來改變。
JMeter被配置接受所有的證書,不管是否信賴和合法時間等。這允許在測試服務(wù)器最
大靈活性。如果服務(wù)器需要一個客戶端證書,這是可以提供的。為了更好的管理證書,也要
有一個SSL管理器。
2.2.5JDBC驅(qū)動
如果你需要JDBC測試,需要添加廠商的JDBC驅(qū)動到classpatho確認(rèn)文件是一個jar
文件,而不是zip。
2.2.6ApacheSOAP
ApacheSOAP需要和.你需要下載并拷貝這兩個jar文件到你jmeter/lib目錄.一旦文件
放到那里,JMeter會自動找到它們。
2.2.7BeanShell
為了運行BeanShell函數(shù)或者任何BeanShell測試元件(取樣器,定時器等),你需要
從下載beanshell的jar文件并拷貝jar文件至I]jmeter/lib目錄,JMeter會自動找到它。
2.2.8ActiveMQ3.0類庫
詳細(xì)參見
,詳細(xì)參見JMeterClasspath一章安裝附加的jar包
2.3安裝
我們推薦大多數(shù)用戶運行最新版本。要安裝一個構(gòu)建版本,簡單解壓zip/tar文件到你
想安裝JMeter的目錄。保證一個JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOME,其它
不需要做什么了。
安裝目錄接口應(yīng)該看到的像這樣一些東西(2.3.1版本):
jakarta-jmeter-2.3.1
jakarta-jmeter-2.3.1/bin
jakarta-jmeter-2.3.1/docs
jakarta-jmeter-2.3.1/extras
jakarta-jmeter-2.3.1/lib/
jakarta-jmeter-2.3.1/lib/ext
jakarta-jmeter-2.3.1/lib/junit
jakarta-jmeter-2.3.1/printable_docs
如果你想的話你可以重命名父目錄(例如jakarta-jmeter-2.3.1),但是不要改變?nèi)魏?/p>
子目錄命。父目錄路徑中不能包含任何空格;如果包含,你運行客戶端?服務(wù)器模式會有問
題。
2.4運行JMeter
要運行JMeter;運行(forWindows)或者jmeter(forUnix)文件。那些文件在bin
目錄下。稍微暫停后,JMeterGUI會顯示出來。
在bin目錄你會發(fā)現(xiàn)有些附加腳本很有用。Windows腳本文件(CMD文件需要Win2K
或者更新):
-運行JMeter(默認(rèn)在GUI模式)
-使用一個JMX文件運行非GUI測試
-使用一個JMX文件遠程運行一個非GUI測試
-在GUI模式使用一個JMX文件
-以服務(wù)器模式啟動JMeter
注意:LAST可以在,和中使用,意味著最后一次測試會運行.
Unix腳本文件可以運行在大多Linux/Unix系統(tǒng).
jmeter-運行JMeter(默認(rèn)在GUI模式)
jmeter-server-以服務(wù)器模式啟動JMeter
2.4.1JMeterClasspath
JMeter自動從下列目錄中的jar文件發(fā)現(xiàn)類。
JMETER_HOME/lib-用來放使用的jar文件
JMETER_HOME/lib/ext-用來放JMeter組件和擴展
如果你開發(fā)新品JMeter組件,你可以壓縮它們成jar包并拷貝到JMeter的/lib/ext目錄。
JMeter將會自動發(fā)現(xiàn)在這里的任何jar文件中的JMeter組件。
支持的jar文件(類庫)應(yīng)該放在lib目錄.
如果你不想把擴展jar包放到lib/ext目錄,可以在rties中定義search_paths屬性。不
要使用lib/ext給那些公用的jar包;它僅僅是存放JMeter組件。
其他jar包(例如JDBC,和任何JMeter代碼需要支持的類庫)應(yīng)該被代替放在lib目錄,
而不是lib/ext目錄。
你可以在$爐丫人》01^/旌/1切6*1安裝有用的jar文件,或者(自從2.1.1版本)你可
以在rties中設(shè)置path屬性。
注意設(shè)置CLASSPATH環(huán)境變量將不起作用。這是因為JMeter使用“java-jar”啟動,并
且java命令無記錄忽略CLASSPATH變量,并且當(dāng)使用-jar選項時?classpath/?cp選項也被使
用。
2.4.2使用代理服務(wù)器
如果你從防火墻/代理服務(wù)器后測試,你需要提供給JMeter防火墻/代理服務(wù)器的主機
名和端口號。這樣做,從命令行使用以下參數(shù)運行/jmeter文件:
-H[代理服務(wù)器主機名或者ip地址]
-P[代理服務(wù)器端口]
-N[非代理主機](例如:*.|bcalhost)
-u[代理證書用戶名-如果需要]
-a[代理證書密碼-如果需要]
例如:jmeter-Hmy.r-P8000-uusername-apassword-Nlocalhost
或者,你使用-proxyHost,—proxyPort,—username,and-password
JMeter也有自己的內(nèi)建HTTP代理服務(wù)器,來記錄HTTP(不是
HTTPS)瀏覽器會話。這是和上面的代理設(shè)置描述不混淆的,它是在
JMeter發(fā)出HTTP或者HTTPS請求時使用的。
2.4.3非用戶界面模式(命令行模式)
為了不相互影響測試,你可以選擇運行沒有用戶界面的JMeter。這樣做,使用下列命令
選項:
-n這是指定JMeter在非用戶界面模式運行
-t[包含測試計劃的JMX文件的名字]
-1[記錄取樣結(jié)果的JTL文件的名字]
-r運行在rties文件里所有的遠程服務(wù)器(或者通過在命令行覆蓋屬性指定遠程服務(wù)
器)這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:
-H[代理服務(wù)器主機名或者ip地址]
-P[代理服務(wù)器端口]
例如:jmeter-n-tmy_-1-Hmy.r-P8000
2.4.4服務(wù)器模式
為了分布測試,在服務(wù)器模式運行JMeter,并且通過用戶界面控制每一臺服務(wù)器.
jmeter-server/腳本使用適當(dāng)?shù)腸lasspath為你開始遠程注冊。如果
失敗,參見關(guān)于JMeter服務(wù)器啟動細(xì)節(jié)。
運行jmeter-server/,加上下列選項命令:
這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:
-H[代理服務(wù)器主機名或者ip地址]
-P[代理服務(wù)器端口]
例如:jmeter-server-Hmy.r-P8000
2.4.5通過命令行覆蓋屬性
Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過命令行直接覆蓋(代替更改rties文
件)。這樣做,使用下列選項:
-D[prop_name]=[value]-定義一個java系統(tǒng)屬性值。
-J[propname]=[value]-覆蓋一個JMeter屬性。
-L[category]=[priority]-覆蓋一個日志設(shè)置,設(shè)置一個特殊目錄為給定的優(yōu)先級。
-L標(biāo)志也可以使用沒有目錄名來設(shè)置根目錄日志等級。
例如:
jmeter=/home/mstover/jmeter_stuff\
-Jremote_hosts=e=DEBUG
jmeter-LDEBUG
注意:命令行參數(shù)在啟動時較早被處理,但是在日志系統(tǒng)被設(shè)置以
后。嘗試使用?J標(biāo)志更新bgjevel或者k)g_file屬性無效。
2.4.6日志和錯誤信息
如果JMeter發(fā)現(xiàn)一個錯誤,一個消息將被寫入日志文件。日志文件名在jmeter.
properties文件中定義。一般定義為。并且在JMeter啟動目錄,例如bin。
當(dāng)在Windows下運行時,如果你不設(shè)置Windows顯示文件擴展名,文件名會僅顯示為
JMetero
還有記錄錯誤,文件記錄一些測試運行信息。例如:
10/17/200312:19:20PMINFO-r:Version1.9.
10/17/200312:19:45PMINFO-.:Loadingfile:c:\mytestfiIes\
10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Runningthetest!
10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Starting1threadsforgroupBSH.
Rampup=1.
10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Continueonerror
10/17/200312:19:52PMINFO-ds.JMeterThread:ThreadBSH1-1started
10/17/200312:19:52PMINFO-ds.JMeterThread:ThreadBSH1-1isdone
10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Testhasended
日志文件對發(fā)現(xiàn)錯誤原因很有幫助,作為JMeter不會打斷一個測試來顯示一個錯誤對
話框。
2.4.7命令行選項目錄
調(diào)用JMeter的"jmeter-?"命令將打印所有命令選項的一個列表。列表如下:
-h,-help打印使用信息并退出
-v,??version打印版本信息并推出
-p,-propfile{argument}使用的JMeter屬性文件
?q,-addprop{argument}附加的屬性文件
-t,-testfile{argument}運行的JMeter測試文件(.jmx)
-I-logfile{argument)日志取樣文件
-n,-nongui非用戶界面運行JMeter
-s,-server運行JMeter服務(wù)器
-H,--proxyHost{argument}設(shè)置JMeter使用的代理服務(wù)器
-B-proxyPort{argument}設(shè)置JMeter使用的代理服務(wù)器端口
-u,-username{argument}設(shè)置JMeter使用的代理服務(wù)器用戶名
-a,-password{argument}設(shè)置JMeter使用的代理服務(wù)器密碼
?J,??jmeterproperty{argument}={value}定義附力II的JMeter屬性
-D,--systemproperty{argument}={value}定義附加的System屬性
?S,-systemPropertyFile{filename}一個扇性文件被做為系統(tǒng)屬性添加
-L,-bglevel{argument}={value}定義日志等級:[category=]level
例如jorphan=INFOor=DEBUG
-n-runremote從非用戶界面模式啟動遠程服務(wù)器
-d,-homedir{argument}使用的JMeter目錄
2.5配置JMeter
如果你希望改變JMeter運行時的屬性你需要改變在/bin目錄下的rties文件,或者創(chuàng)建
你自己的rties文件并且在命令行指定它。
注意咱從2.1.2,你能夠通過JMeter屬性rties在文件中定義附加的
JMeter屬性,rties默認(rèn)值是rties?如果在當(dāng)前目錄被發(fā)現(xiàn),這個文件
被自動加載。,rties被用來更新系統(tǒng)屬性。
參數(shù):
屬性描述
你可以為你的SSL實現(xiàn)指定類。如果你想使用來自
sun的JSSE,是這樣:...Provi
derder°JMeter默認(rèn)提供https支持。如果你正在使用JDK1.4,
或者你使用帶JSSE類的jar文件在JMeter的classpath里
的JDK1.4。
JMeter默認(rèn)提供https支持是在你使用JDK1.4或者你
..internal
使用把JSSE類的jar包放到JMeterclasspath中的JDK1.3
.der
時候。
你可以指明一個你的XML解析器實現(xiàn)。默認(rèn)值是:
r
e.rs.SAXParser
逗號分割遠程JMeter主機列表。如果你在一個分布
remote_hosts式環(huán)境運行JMeter,列出你用JMeter遠程主機運行的機
器。這允許你使用機器的用戶界面控制那些服務(wù)器。
在JMeter選項屏中你不想看到的組件列表。如果
JMeter被添加越來越多的組件,你會希望定制JMeter只
notjn.menu出現(xiàn)那些你感興趣的組件。你可以在這兒列出那些類名和
他們的類標(biāo)簽(JMeter的用戶界面出現(xiàn)的字符串),它們
將在選項屏中不出現(xiàn)。
列出那些JMeter搜索JMeter附加類的路徑(以;分
search_paths割);例如附加的取樣器。被添加到lib/ext目錄的任何
jar包都被發(fā)現(xiàn)。
JMeter搜索的公用類庫的路徑列表。被添加到lib目
P錄的任何jar包都被發(fā)現(xiàn)。
附加的JMeter屬性文件名。初始化屬性文件后它們
被添加,但是在刃和-J選項被處理之前。
rties附加的系統(tǒng)屬性文件名。-S和-D選項被執(zhí)行前添加。
3.創(chuàng)建一個測試計劃
一個測試計劃描述了一系列Jmeter運行時要執(zhí)行的步驟。一個完整的測試計劃包含一
個或者多個線程組,邏輯控制器,取樣發(fā)生控制,監(jiān)聽器,定時器,斷言和配置元件。
3.1添加和刪除元件
在一個樹上通過右擊可以添加元件到一個測試計劃,并且從“添加”列表中選擇一個新
元件。另外,元件可以從文件加載并且通過選擇“打開"選項添加。
為了刪除元件,確保元件被選中,正確在元件上右擊,并且選擇"刪除"選項。
3.2加載和保存元件
為了從文件加載元件,右擊將要加載元件到的己經(jīng)存在的樹元件,并選擇"打開"選項。
選擇你的元件保存的文件。JMeter會加載元件到樹中。
為了保存樹元件,在一個元件上右擊,選擇"保存"選項。JMeter會保存已選的元件,加
上所有下面的子元件。用這種方法,你能夠保存測試樹的片段,單獨元件,或者整個測試計
劃。
3.3配置樹元件
在測試樹中的任何元件都在JMeter的右側(cè)框架顯示配置。那些配置允許你配置測試元
件的細(xì)節(jié)行為,對于一個元件什么能被配置依賴于它是一個什么類型的元件。
3.4保存測試計劃
雖然這不是必須的,我們推薦你在運行前保存測試計劃。為了保存測試計劃,從文件菜
單選擇保存測試計劃(使用最新版本,你不再需要首先選擇測試計劃元件)。
JMeter允許你保存整個測試計劃樹或者僅它的一部分。為了僅保存
測試計劃樹中特殊"支"位置的元件,從從這個“支"開始的地方選擇樹中
的測試計劃元件,然后右擊鼠標(biāo)訪問保存菜單項。另外選擇合適的測試
計劃元件并從編輯菜單選擇保存。
3.5運行一個測試計劃
為了運行一個測試計劃,從“運行”菜單項選擇"開始"。為了停止你的測試計劃,從同樣
的菜單選擇"停止"。JMeter不會自動給它是否正在運行任何顯示.如果]Meter運行,一些
監(jiān)聽器使它變明顯,但是唯一確定的方法是檢查“運行"菜單。如果“開始"不可用,"停止”可
用,證明JMeter正在運行你的測試計劃(或者至少它認(rèn)為它是)。
有兩個類型的停止命令:
停止(Control+-立刻停止所有的線程
關(guān)閉(Control+,;)-請求所有線程在當(dāng)前任務(wù)結(jié)束后停止
3.6元件作用域及執(zhí)行順序
3.6.1作用域規(guī)則
JMeter中共有8類可被執(zhí)行的元件(測試計劃與線程組不屬于元件),這些元件中,
取樣器是典當(dāng)?shù)牟慌c其它元件發(fā)生交互作用的元件,邏輯控制器只對其子節(jié)點的取樣器有
效,而其它元件(configelements>timers>post-processorsassertions>listeners、)需
要與取樣器(sampler)等元件交互。
配置元件(configelements):元件會影響其作用范圍內(nèi)的所有元件。
前置處理程序(Per-processors):元件在其作用范圍內(nèi)的每一個sampler元件之前執(zhí)
行。
定時器(timers):元件對其作用范圍內(nèi)的每一個sampler有效
后置處理程序(Post-processors):元件在其作用范圍向的每一個sampler元件之后執(zhí)
行。
斷言(Assertions):元件對其作用范圍內(nèi)的每一個sampler元件執(zhí)行后的結(jié)果執(zhí)行校
驗。
監(jiān)聽器(Listeners):元件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。
在jmeter中,元件的作用域是靠測試計劃的的樹型結(jié)構(gòu)中元件的父子關(guān)系來確定的,
作用域的原則是:
取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。
邏輯控制器(LogicController)元件只對其子節(jié)點中的取樣器和邏輯控制器作用。
除取樣器和邏輯控制器元件外,其他6類元件,如果是某個sampler的子節(jié)點,則該
元件公對其父子節(jié)點起作用。
除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點不是sampler,則其作
用域是該元件父節(jié)點下的其他所有后代節(jié)點(包括子節(jié)點,子節(jié)點的子節(jié)點等)。
3.6.2元件的執(zhí)行順序
了解了元件有作用域之后,來看看元件的執(zhí)行順序,元件執(zhí)行順序的規(guī)則很簡單,在同
一作用域名范圍內(nèi),測試計劃中的元件按照如下順序執(zhí)行。
(1)配置元件(configelements)
(2)前置處理程序(Per-processors)
(3)定時器(timers)
(4)取樣器(Sampler)
(5)后置處理程序(Post-processors)(除非Sampler得到的返回結(jié)果為空)。
(6)斷言(Assertions)(除非Sampler得到的返回結(jié)果為空)°
(7)監(jiān)聽器(Listeners)(除非Sampler得到的返回結(jié)果為空)。
關(guān)于執(zhí)行順序,有三點需要注意:
*前置處理器、后置處理器和斷言等元件只能對取樣器作用,因此如果在它們的作用域
內(nèi)沒有任何取樣器,則不會被執(zhí)行。
*如果在同一作用域范圍內(nèi)有多個同一類型的元件,則這些元件按照它們在測試計劃中
的上下順序依次執(zhí)行。
*一個斷言在測試樹中是分等級的。如果它的父元件是請求,它就被應(yīng)用于那個請求。
如果它的父元件是控制器,它就影響所有那個控制器下的所有請求。
91TestPlan
9應(yīng)'ThreadGroup
One
9:為SimpleController
Two
/Three
/?Four
請求的順序是One,Two,Three,Four。
一些控制器影響它的子元件的順序,你可以在組件參考讀到特定的控制器。
<?&TestPlan
92ThreadGroup
0/One
□Assertion#1
中⑥SimpleController
/Two
4*Three
QAssertion#2
Four
Assertion#1僅被應(yīng)用于請求One,Assertion#2僅被應(yīng)用于請求Two和Three。
9匚TestPlan
9盤ThreadGroup
One
9⑥SimpleController
/Two
Timer#1
9.Three
PlAssertion#1
9,⑥SimpleController
「Four
Five
ETimer#2
在這個例子里,請求的命名表現(xiàn)它們被執(zhí)行的順序。Timer#1應(yīng)用于請求Two,Three,
和Four(注意對于分等級的元件怎樣的順序是不相關(guān)的)。Assertion#1應(yīng)用于請求Three。
Timer#2對所有請求有效。
元件首部管理器,Cookie管理器和授權(quán)管理器的配置和默認(rèn)元件的配置被視為是不同
的默認(rèn)元件配置的設(shè)置被并入取樣器可以到達的一組值里了。然而來自管理器的設(shè)置沒有并
入。如果多于一個管理器在一個取樣器范圍中,僅僅一個被使用,但是現(xiàn)在沒有辦法指定那
個被使用。
3.7錯誤報告
JMeter把警告和錯誤信息報告在文件中,也有一些測試運行本身的信息.只是偶爾地,
JMeter對于某些錯誤是無法補捉和記錄的,這些信息會顯示在命令臺上。如果一個測試的
執(zhí)行并不是你所期待的,請檢查日志,也許錯誤會被報告(例如:也許在函數(shù)調(diào)用上有語法
錯誤)。
取樣錯誤(例如:HTTP404-找不至U文件)是不會被正常的記錄在日志中的,取而代之
的,他們會被當(dāng)作取樣結(jié)果的屬性來儲存,取樣結(jié)果的狀態(tài)能被許多不同的監(jiān)聽器所得到。
4.測試計劃元件
測試計劃對象有一個叫做“功能測試”復(fù)選框。如果被選擇,它會使JMeter記錄來自服
務(wù)器返回的每個取樣的數(shù)據(jù)。如果你在測試監(jiān)聽器中選擇一個文件,這個數(shù)據(jù)將被寫入文
件。如果你嘗試一個較小的測試來保證JMeter配置正確并且你的服務(wù)器正在返回期望的結(jié)
果,這是很有用的。這樣的后果就是這個文件會快速的增大,并且JMeter的效率會影響。
如果你不做壓力測試這個選項應(yīng)該關(guān)閉(默認(rèn)關(guān)閉)。
如果你不記錄數(shù)據(jù)到文件,這個選項就沒有不同了。
4.1線程組
線程組元件是任何測試計劃的起點。一個測試計劃的所有元件必須在一個線程組下。由
名字可以看出,線程組元件控制JMeter運行測試時使用的線程數(shù)。線程組管理允許你:
設(shè)置線程數(shù)
設(shè)置ramp-upperiod
設(shè)置執(zhí)行測試的次數(shù)
每個線程會作為一個整體執(zhí)行測試計劃并完全獨立于他測試線程。多線程用來模擬到達
服務(wù)器程序的同步連接。
Ramp-upperiod告訴JMeter多久開始"ramp-up"選擇的全部線程。如果使用10個線程,
ramp-upperiod是100秒,那么JMeter用100秒彳吏所有10個線程啟動并運行。每個線程
會在上一個線程啟動后10秒(100/10)啟動。如果有30個線程和一個120秒的ramp-up
period,那么每個連續(xù)的線程會延遲4秒。
Ramp-up需要要充足長以避免在啟動測試時有一個太大的工作負(fù)載,并且要充足小以
至于最后一個線程在第一個完成前啟動(除非你想那樣發(fā)生)。
使用ramp-up=線程數(shù)啟動,并上下調(diào)整到所需的。
默認(rèn),線程組被配置僅循環(huán)一次。
1.9版本引入了一個測試運行*調(diào)度器*。單擊在線程組面板底部的復(fù)選框來顯示額外的
文本域,在里面你可以輸入啟動和結(jié)束時間。當(dāng)測試啟動時,如果必須JMeter會等待啟動
時間到達。在每個周期結(jié)束,JMeter檢驗結(jié)束時間是否到達,如果是,運行停止,如果不
是測試被允許繼續(xù),直到迭代限制到達。
另外你可以使用啟動延遲和持續(xù)時間文本域。注意啟動延遲會覆蓋啟動時間,持續(xù)時間
會覆蓋結(jié)束時間。
4.2控制器
JMeter有兩種控制器:取樣器和邏輯控制器。
取樣器告訴JMeter發(fā)送請求到服務(wù)器。例如,如果你要JMeter發(fā)送一個HTTP請求添
加一個HTTP請求取樣器。你也可以通過添加一個或者多個配置元件到一個取樣器來定制一
個請求。更多信息,見取樣器。
邏輯控制聯(lián)立你定制當(dāng)發(fā)送請求時JMeter使用的判斷邏輯.例如,你可以添加交替控
制器來在兩個HTTP請求取樣器之間交替。更多信息,見邏輯控制器。
4.2.1取樣器(Sampler)
取樣器告訴JMeter發(fā)送請求到服務(wù)器。JMeter取樣器包括:
FTP請求
HTTP請求
JDBC請求
Javaobject請求
LDAP請求
SOAP/XML-RPC請求
WebService(SOAP)請求
每個取樣器有一些你可以設(shè)置的屬性。你可以通過添加一個或多個配置元件到取樣器來
進一步定制它。注意JMeter發(fā)送請求按照取樣器出現(xiàn)在樹中的順序。
如果你想發(fā)送多個相同類型的請求(例如,HTTPRequest)到相同的服務(wù)器,可以考
慮使用一個默認(rèn)配置元件。每個控制器有一個或者多個默認(rèn)配置元件(見下)。
記得添加一個監(jiān)聽器到線程組來查看/保存你的請求結(jié)果到磁盤。
如果你對使用JMeter平臺的基礎(chǔ)驗證器到你的請求響應(yīng)感興趣,添加一個斷言到請求
控制器。例如,在壓力測試一個web程序時,服務(wù)器會返回一個成功的HTTP響應(yīng)代碼,
但是這個頁面有錯誤或者被忽略部分。你可以添加斷言來檢查某個HTML標(biāo)簽,一些錯誤
字符串,等等。JMeter允許你使用正則表達式創(chuàng)建斷言。
JMeter內(nèi)建取樣器
4.2.2邏輯控制器
保持
邏輯控制器讓你定制當(dāng)發(fā)送請求時JMeter使用的判斷邏輯。邏輯控制器還可以作為下列任
何元件的子元件:取樣器(請求)、配置元件、和其他邏輯控制器。邏輯控制器可以改變來
自它們的子元件的請求順序。它們可以修改請求本身,導(dǎo)致JMeter重復(fù)請求,等。
理解邏輯控制器在測試計劃中的效果,考慮下列測試樹:
測試計劃
線程組
僅一次控制器
登錄請求(一個HTTP請求)
加載搜索頁面(HTTP取樣器)
InterleaveController
搜索"A"(HTTP取樣器)
搜索"B"(HTTP取樣器)
HTTP默認(rèn)請求(配置元件)
HTTP默認(rèn)請求(配置元件)
Cookie管理器(配置元件)
這個測試的第一件事就是登錄請求僅在第一次經(jīng)過時被執(zhí)行。隨后的迭代會忽略它。這
應(yīng)使用僅一次控制器。
登陸后,下一個取樣器加載搜索頁面(假設(shè)一個用登錄的web應(yīng)用程序,并到達搜索
頁面去搜索)。這僅是一個簡單的請求,不會被任何邏輯控制器過濾。
加載搜索頁面后,我們要做一個搜索。事實上,我們想做兩個不同的搜索。然而,在每
個搜索之間我們想要自己重新加載搜索頁面。我們通過4個簡單HTTP元件這樣做。(bad
search,search"A",loadsearch,search"B").Instead,weusetheInterleaveControllerwhich
passesononechildrequesteachtimethroughthetest.Itkeepstheordering(ie-itdoesn't
passoneonatrandom,but"remembers"itsplace)ofitschildelements.Interleaving2child
requestsmaybeoverkill,buttherecouldeasilyhavebeen8,or20childrequests.
注意HTTP默認(rèn)請求屬于插入控制器。假如"SearchA"和"SearchB”共享同樣的PATH信
息(一個HTTP請求說明中包括域,端口,方法,協(xié)議路徑和參數(shù),附加其他可選項)。兩
個搜索請求訪問同樣的后端搜索引擎(比方說Servle,或者cgi腳本),這樣是說得通的。
與其兩者都配置使用相同信息的HTTP取樣器,我們可以抽象那些新到一個單獨的配置元
件。當(dāng)內(nèi)部控制器通過"SearchA"或者"SearchB"傳遞時,它會從HTTP默認(rèn)請求配置元件
中獲得值填充空白。所以我們可以為那些請求保留PATH域為空,然后把那些信息放到配置
元件。在這個例子中,這至多是一個很小的好處,但它顯示了這個特性。
在這個樹中下一個元件是另一個HTTP默認(rèn)請求,這個時間被添加到線程組本身。這個
線程組有一個內(nèi)建的邏輯控制器,因此它正好使用這個配置元件做為上面的描述。它填充
任何穿過的請求的空白。在web程序中你所有的HTTP取樣器元件DOMAIN域為空,這是
極度有用的,替代的,把那些信息放到HTTP默認(rèn)請求元件中,添加到線程組。通過這樣做,
你可以在一個同的服務(wù)器通過改變你測試計劃中的一個域來測試你的程序。另外,你必須編
輯每個取樣器。
最后一個元件是一個HTTPCookie管理器。一個Cookie管理器應(yīng)該添加到所有web測
試上-否則JMeter會忽略Cookie。通過在線程組級添加它,我們可以確定所有的線程分享同
樣的Cookie(>
邏輯控制器可以組合達到不同的結(jié)果。見內(nèi)建邏輯控制器列表。
4.3監(jiān)聽器
監(jiān)聽器提供訪問JMeter收集當(dāng)JMeter運行的關(guān)于測試計劃的信息。
圖形結(jié)果監(jiān)聽器在一張圖上繪制響應(yīng)時間。
"查看結(jié)果樹"監(jiān)聽器顯示了請求和響應(yīng)取樣器的細(xì)節(jié),并且以基礎(chǔ)的HTML和XML顯
示響應(yīng)表現(xiàn)。
其他監(jiān)聽器提供了摘要或者集合信息。
另外,監(jiān)聽器可以指導(dǎo)它們收集的數(shù)據(jù)到一個文件供以后用.在JMeter中每一個監(jiān)聽
器提供一個域來指出存儲數(shù)據(jù)的文件。
在測試中監(jiān)聽器可以添加到任何位置。它們僅僅會從它們等級或者它們以下等級的元件
收集數(shù)據(jù)。
伴隨JMeter有很多有趣的監(jiān)聽器。
4.4定時器
默認(rèn),JMeter線程發(fā)送請求時不在請求間暫停。我們建議你通過添加一個可用的定時
器到你的線程組來指定一個延遲。如果你不添加延遲,JMeter會在短時間內(nèi)產(chǎn)生太多請求,
可能會壓倒你的服務(wù)。
定時器會使JMeter在一個線程開始每個請求間延遲一段時間。
如果你選擇添加多于一個定時器到一個線程組,JMeter會在執(zhí)行取樣器前獲得定時器
數(shù)量并暫停那個時間量。
4.5斷言
斷言允許你斷言關(guān)于從測試服務(wù)器收到的響應(yīng)的行為。使用斷言你本質(zhì)上你可以測試你
的應(yīng)用程序返回你期望的結(jié)果。
例如,你可以斷言一個查詢的響應(yīng)會包含一些特殊的文本。你指定的文本可能是Perl
風(fēng)格的正則表達式,并且你可以指出這個響應(yīng)是包含這個文本,還是匹配整個響應(yīng)。
你可以添加一個斷言到任何取樣器。例如你可以添加一個斷言到HTTP請求檢查文本
"</HTML>",JMeter會檢查在HTTP響應(yīng)中表現(xiàn)的文本。如果JMeter沒有找到這個文本,
它會標(biāo)記這個為一個失敗的請求。
為了查看斷言結(jié)果,添加一個斷言監(jiān)聽器到線程組。
Assertion--斷言,通常是用于對每一個requestsampler進行額外驗證的工具。下面通過
―■個例子來介紹一下常用的幾個Assertionso
假設(shè)現(xiàn)在要進行一個登陸的壓力測試,下面是對pass的幾個定義:
1.正確bgin后,必須收到返回的身份驗證和用戶個人信息下載的完成信息;
2.響應(yīng)時間不能超過150毫秒
3.返回的結(jié)果大小不能小于750bytes
根據(jù)以上的要求,我們在對應(yīng)的requestsampler下面添加了以下的Assertions?
?aBadboyTestPlan
?腎ThreadGroup
,修HTTPCookieManager
|_jUserParameters
q通Step1
f/DoLogin
CSVDataSetConfig
ResponseAssertion
SizeAssertion
回AggregateReport
回ViewResultsTree
國WorkBench
A.ResponseAssertion
ResponseAssertion
Name:ResponseAssertion
________________________________________________________________________________________
ResponseFieldtoTest
?TextResponseURLSampledResponseCodeResponseMessageResponseHeadersIgnoreStatus
PatternMatchingRules
色Contains(MatchesCEquals[Not
PatternstoTest
ResponseFieldtoTest■■標(biāo)示被檢查對象是什么?
PatternMatchingRules-標(biāo)明被檢查對象與驗證內(nèi)容之間的關(guān)系,Contains(包含關(guān)
系);Matches(匹配關(guān)系);Equals(相等關(guān)系);Not(非關(guān)系)
PatterntoTest-需要驗證的內(nèi)容列表
B.DurationAssertion
DurationAssertion
Name:DurationAssertion
Comments:
DurationtoAssert
Durationinmilliseconds:123
DurationtoAssert-允許的響應(yīng)時間的最大值
C.SizeAssertion
SizeAssertion
Name:IsizeAssertion
Comments:
SizetoAssert
TypeofComparison
0ss
O!=
Sizeint)ytes:10⑥〉
O<
o>=
o<=
SizetoAssert-對于返回結(jié)果文件大小的標(biāo)準(zhǔn)定義
二、結(jié)果分析
添加了以上的Assertions后,我運行了一次腳本。以下是存放結(jié)果的.jtl文件的內(nèi)容:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success/
ailureMessage,bytes,Latency
11/04/0813:22:03,172,DoLogin,200,OK,ThreadGroupfalse,Theoperationlasted
toobng:Ittook172milliseconds,butshouldnothavelastedlongerthan150
milliseconds.,835,172
11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?2,text,false,Testfailed:text
expectedtocontain/bginMsg="OK"/,633,156
11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?3,text,false,Theoperationlasted
toobng:Ittook156milliseconds,butshouldnothavelastedlongerthan150
milliseconds.,839,156
11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?4,text,false,Theoperationlasted
toolong:Ittook156milliseconds,butshouldnothavelastedlongerthan150
milliseconds.,836,156
11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroupl?5,text,true〃779,78
11/04/0813:22:03,63,DoLogin,200,OK,ThreadGroup1?7,text,false,Testfailed:textexpected
tocontain/foginMsg="OK"/,570,63
11/04/0813:22:03,141,DoLogin,200,OK,ThreadGroup1?6,text,false,Theresultwasthe
wrongsize:Itwas721bytes,butshouldhavebeengreaterthan750bytes.,721,141
11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroup1?9,text,false,Theresultwasthe
wrongsize:Itwas724bytes,butshouldhavebeengreaterthan750bytes.,724,78
11/04/0813:22:03,204,DoLogin,200,0K,ThreadGroup1-10,text,false,Theoperationlasted
toobng:Ittook204milliseconds,butshouldnothavelastedlongerthan150
milliseconds.,1137,204
11/04/0813:22:03,2985,DoLogin,200,OK,ThreadGroup1?8,text,false,Testfailed:text
,
expectedtocontain/foginMsg='OK'7/570,2985
我?可以看到,每一個Sampler都會經(jīng)過Assertions的判斷,只要有一個不符合條件的
都會標(biāo)示為False。
4.6配置元件
配置元件配合取樣器工作。雖然它不發(fā)送請求(除了HTTP代理服務(wù)器),但是它可以
力口可^q多j青^
一個質(zhì)置元件進能訪問有所代替元件所在的樹分支的內(nèi)部。例如,如果你在一個簡單邏
輯控制器里面設(shè)置一個HTTPCookie管理器,Cookie管理器很容易訪問“webPage1"和“web
Page2"HTTP請求。但是不能訪問"webPage3"。
同樣,一個在樹枝內(nèi)部的配置元件比在父支的同樣元件有更高的優(yōu)先級。例如,我們定
義兩個HTTP默認(rèn)請求元件,“WebDefaults1”和"WebDefaults2%如果我們把“WebDefaults
1”放置在一個循環(huán)控制器內(nèi)部,僅"WebPage2”可以訪問它。另一HTTP請求會使用“Web
Defaults2”,如果我們把它放置在線程組(所有其他分支的父支)。
9.TestPlan
?rThreadGroup
9迪SimpleController
捷^HTTPCookieManager
JWebPage1
9fjf;LoopController
WebPage2
加JWebDefaults1
,?WebPage3
^t|WebDefaults2
UJ|WorkBench
圖1-測試計劃展示配置元件的可達性
4.7前置處理器元件
前置處理器在取樣器請求建立前執(zhí)行一些行為。如果前置處理器附屬于取樣器元件,那
么它會僅在那個取樣器元件運行前執(zhí)行。前置處理器最常用來在取樣請求運行前修改它的設(shè)
置,或者更新不能從響應(yīng)文本提取的變量。當(dāng)前置處理器執(zhí)行時,詳細(xì)信息見作用域規(guī)則。
4.8后置處理器元件
后置控制器在取樣器請求建立后執(zhí)行一些行為。如果后置處理器附屬于取樣器元件,那
么它會僅在那個取樣器元件運行后執(zhí)行。后置處理器最常用來處理響應(yīng)數(shù)據(jù),常用來從它里
面提取數(shù)值。\\\\\\詳細(xì)見作用域規(guī)則關(guān)于前置處理器執(zhí)行。
4.9執(zhí)行順序
配額制元件
前置處理器
定時器
取樣器
后置處理器(如果SampleResult不為空)
斷言(如果SampleResult不為空)
監(jiān)聽器(如果SampleResult不為空)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆武漢市新洲區(qū)三年級數(shù)學(xué)第一學(xué)期期末綜合測試模擬試題含解析
- 兒童手繪服裝設(shè)計基礎(chǔ)
- 2025年備考市政工程考試的注意事項與試題及答案
- 古代樂器美術(shù)課件
- 眼鏡專業(yè)知識培訓(xùn)課件
- 2025年工程項目管理案例分析與解答試題及答案
- 項目管理的信息交流試題及答案
- 水利水電工程非技術(shù)風(fēng)險試題及答案
- 小學(xué)生反詐宣傳教育
- 綜合性水利水電工程試題與答案介紹
- 《外科感染》課件
- 《亞洲文化概覽》課件
- 門窗銷售勞動合同
- 環(huán)衛(wèi)規(guī)范作業(yè)培訓(xùn)
- AI系列培訓(xùn)課件-人工智能技術(shù)及應(yīng)用課件第3章
- 2025年貴州都勻市城鎮(zhèn)供水有限公司招聘筆試參考題庫含答案解析
- 2025年江西宜春市豐城發(fā)展投資控股集團有限公司招聘筆試參考題庫附帶答案詳解
- 《中央空調(diào)系統(tǒng)培訓(xùn)資料》課件
- 2025年新興際華集團有限公司招聘筆試參考題庫含答案解析
- 2025年華潤電力招聘筆試參考題庫含答案解析
- 山東省城市園林綠化鄉(xiāng)土適生植物名錄2024
評論
0/150
提交評論