完整的JMETER使用手冊-適合初學(xué)者_第1頁
完整的JMETER使用手冊-適合初學(xué)者_第2頁
完整的JMETER使用手冊-適合初學(xué)者_第3頁
完整的JMETER使用手冊-適合初學(xué)者_第4頁
完整的JMETER使用手冊-適合初學(xué)者_第5頁
已閱讀5頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)文件,JavaServlets,Java對象,數(shù)據(jù)庫,F(xiàn)TP服務(wù)器等等。JMeter可以用來在一個服務(wù)器、網(wǎng)絡(luò)或者對象上模擬重負載來測試它的強度或者分析在不同的負載類型下的全面性能。另外,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ā)展的主要目標是在沒有影響JMeter的負載測試實力的狀況下盡可能使JMeter成為最好用的回來測試工具。2.入門起先運用JMeter最簡潔的方法是首先下載最新版并且安裝它。這個版本包含全部你在構(gòu)建和運行Web,F(xiàn)TP,JDBC,和JNDI等測試時運用須要的全部文件。假如你想執(zhí)行JDBC測試,你當(dāng)然須要從供應(yīng)商得到適當(dāng)?shù)腏DBC驅(qū)動。JMeter沒有供應(yīng)任何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主題、LDAP2.1需求JMeter須要最小需求的運行環(huán)境。2.1.1Java版本JMeter須要一個完全適當(dāng)?shù)腏VM1.4或者更高因為JMeter僅運用Java標準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,NT,2000,xp)、OpenVMSAlpha7.3+2.2可選假如你安排做JMeter開發(fā)或者想運用SUN的java標準擴展包,你將須要下列更多的可選包。2.2.1Java編譯器假如你想編譯JMeter源代碼或者開發(fā)JMeter插件,你將須要一個完整的適當(dāng)?shù)腏DK1.4或者更高。2.2.2SAXXML解析器JMeter運用Apache的XercesXML解析器,你可以選擇告知JMeter運用一個不同的XML解析器。這樣做,把第三方的解析器的類包包含在JMeter的classpath中,并更新perties文件里的解析器實現(xiàn)的全類名。2.2.3Email支持JMeter有有限的Email實力。它能夠發(fā)送基于測試結(jié)果的Email,并且支持POP/IMAP取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email,須要添加Sun的JavaMail包和activation包到JMeterclasspath。2.2.4SSL加密為了測試一個運用SSL加密(HPPS)的web服務(wù)器,JMeter須要一個供應(yīng)SSL實現(xiàn)(例如Sun的JavaSecureSocketsExtension-JSSE)。包含須要的加密包到JMeter的classpath。同樣,通過注冊SSL供應(yīng)者更新perties文件。JMeter默認協(xié)議等級TLS(傳輸層平安性)。這可以通過修改在erties或者perties文件中的"tocol"來變更。JMeter被配置接受全部的證書,不管是否信任和合法時間等。這允許在測試服務(wù)器最大敏捷性。假如服務(wù)器須要一個客戶端證書,這是可以供應(yīng)的。為了更好的管理證書,也要有一個SSL管理器。2.2.5JDBC驅(qū)動假如你須要JDBC測試,須要添加廠商的JDBC驅(qū)動到classpath。確認文件是一個jar文件,而不是zip。2.2.6ApacheSOAPApacheSOAP須要mail.jar和activation.jar.你須要下載并拷貝這兩個jar文件到你jmeter/lib書目.一旦文件放到那里,JMeter會自動找到它們。2.2.7BeanShell為了運行BeanShell函數(shù)或者任何BeanShell測試元件(取樣器,定時器等),你須要從下載beanshell的jar文件并拷貝jar文件到j(luò)meter/lib書目,JMeter會自動找到它。2.2.8ActiveMQ3.0類庫具體參見具體參見JMeterClasspath一章安裝附加的jar包2.3安裝我們舉薦大多數(shù)用戶運行最新版本。要安裝一個構(gòu)建版本,簡潔解壓zip/tar文件到你想安裝JMeter的書目。保證一個JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOME,其它不須要做什么了。安裝書目接口應(yīng)當(dāng)看到的像這樣一些東西(2.3.1版本):

假如你想的話你可以重命名父書目(例如jakarta-jmeter-2.3.1),但是不要變更任何子書目命。父書目路徑中不能包含任何空格;假如包含,你運行客戶端-服務(wù)器模式會有問題。2.4運行JMeter要運行JMeter,運行jmeter.bat(forWindows)或者jmeter(forUnix)文件。那些文件在bin書目下。略微暫停后,JMeterGUI會顯示出來。在bin書目你會發(fā)覺有些附加腳本很有用。Windows腳本文件(CMD文件須要Win2K或者更新):jmeter.bat-運行JMeter(默認在GUI模式)jmeter-nd-運用一個JMX文件運行非GUI測試jmeter-n-rd-運用一個JMX文件遠程運行一個非GUI測試jmeter-td-在GUI模式運用一個JMX文件jmeter-server.bat-以服務(wù)器模式啟動JMeter留意:LAST可以在jmeter-nd,jmeter-td和jmeter-n-rd中運用,意味著最終一次測試會運行.Unix腳本文件可以運行在大多Linux/Unix系統(tǒng).jmeter-運行JMeter(默認在GUI模式)jmeter-server-以服務(wù)器模式啟動JMeter2.4.1JMeterClasspathJMeter自動從下列書目中的jar文件發(fā)覺類。JMETER_HOME/lib-用來放運用的jar文件JMETER_HOME/lib/ext-用來放JMeter組件和擴展假如你開發(fā)新的JMeter組件,你可以壓縮它們成jar包并拷貝到JMeter的/lib/ext書目。JMeter將會自動發(fā)覺在這里的任何jar文件中的JMeter組件。支持的jar文件(類庫)應(yīng)當(dāng)放在lib書目.假如你不想把擴展jar包放到lib/ext書目,可以在perties中定義search_paths屬性。不要運用lib/ext給那些公用的jar包;它僅僅是存放JMeter組件。其他jar包(例如JDBC,和任何JMeter代碼須要支持的類庫)應(yīng)當(dāng)被代替放在lib書目,而不是lib/ext書目。你可以在$JAVA_HOME/jre/lib/ext安裝有用的jar文件,或者(自從2.1.1版本)你可以在perties中設(shè)置user.classpath屬性。留意設(shè)置CLASSPATH環(huán)境變量將不起作用。這是因為JMeter運用"java--jar"啟動,并且java吩咐無記錄忽視CLASSPATH變量,并且當(dāng)運用-jar選項時-classpath/-cp選項也被運用。2.4.2運用代理服務(wù)器假如你從防火墻/代理服務(wù)器后測試,你須要供應(yīng)應(yīng)JMeter防火墻/代理服務(wù)器的主機名和端口號。這樣做,從吩咐行運用以下參數(shù)運行jmeter.bat/jmeter文件:

-H[代理服務(wù)器主機名或者ip地址]-P[代理服務(wù)器端口]-N[非代理主機](例如:*.|localhost)-u[代理證書用戶名-假如須要]-a[代理證書密碼-假如須要]例如:jmeter-Hxy.server-P8000-uusername-apassword-Nlocalhost或者,你運用--proxyHost,--proxyPort,--username,and--passwordJMeter也有自己的內(nèi)建代理服務(wù)器,來記錄(不是S)閱讀器會話。這是和上面的代理設(shè)置描述不混淆的,它是在JMeter發(fā)出或者S懇求時運用的。2.4.3非用戶界面模式(吩咐行模式)為了不相互影響測試,你可以選擇運行沒有用戶界面的JMeter。這樣做,運用下列吩咐選項:-n這是指定JMeter在非用戶界面模式運行-t[包含測試安排的JMX文件的名字]-l[記錄用樣結(jié)果的JTL文件的名字]-r運行在perties文件里全部的遠程服務(wù)器(或者通過在吩咐行覆蓋屬性指定遠程服務(wù)器)這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H[代理服務(wù)器主機名或者ip地址]-P[代理服務(wù)器端口]例如:jmeter-n-tmy_test.jmx-llog.jtl-Hxy.server-P80002.4.4服務(wù)器模式為了分布測試,在服務(wù)器模式運行JMeter,并且通過用戶界面限制每一臺服務(wù)器。jmeter-server/jmeter-server.bat腳本運用適當(dāng)?shù)腸lasspath為你起先遠程注冊。假如失敗,參見關(guān)于JMeter服務(wù)器啟動細微環(huán)節(jié)。運行jmeter-server/jmeter-server.bat,加上下列選項吩咐:這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H[代理服務(wù)器主機名或者ip地址]-P[代理服務(wù)器端口]例如:jmeter-server-Hxy.server-P80002.4.5通過吩咐行覆蓋屬性Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過吩咐行干脆覆蓋(代替更改perties文件)。這樣做,運用下列選項:-D[prop_name]=[value]-定義一個java系統(tǒng)屬性值。-J[propname]=[value]-覆蓋一個JMeter屬性。-L[category]=[priority]-覆蓋一個日志設(shè)置,設(shè)置一個特殊書目為給定的優(yōu)先級。-L標記也可以運用沒有書目名來設(shè)置根書目日志等級。例如:jmeter-Duser.dir=/home/mstover/jmeter_stuff\-Jremote_hosts=-Ljmeter.engine=DEBUGjmeter-LDEBUG留意:吩咐行參數(shù)在啟動時較早被處理,但是在日志系統(tǒng)被設(shè)置以后。嘗試運用-J標記更新log_level或者log_file屬性無效。2.4.6日志和錯誤信息假如JMeter發(fā)覺一個錯誤,一個消息將被寫入日志文件。日志文件名在perties文件中定義。一般定義為jmeter.log。并且在JMeter啟動書目,例如bin。當(dāng)在Windows下運行時,假如你不設(shè)置Windows顯示文件擴展名,文件名會僅顯示為JMeter。還有記錄錯誤,jmeter.log文件記錄一些測試運行信息。例如:

10/17/200312:19:45PMINFO-jmeter.gui.action.Load:Loadingfile:c:\mytestfiles\BSH.jmx

10/17/200312:19:52PMINFO-jmeter.engine.StandardJMeterEngine:Runningthetest!

10/17/200312:19:52PMINFO-jmeter.engine.StandardJMeterEngine:Starting1threadsforgroupBSH.Rampup=1.

10/17/200312:19:52PMINFO-jmeter.engine.StandardJMeterEngine:Continueonerror

10/17/200312:19:52PMINFO-jmeter.threads.JMeterThread:ThreadBSH1-1started

10/17/200312:19:52PMINFO-jmeter.threads.JMeterThread:ThreadBSH1-1isdone

10/17/200312:19:52PMINFO-jmeter.engine.StandardJMeterEngine:Testhasended日志文件對發(fā)覺錯誤緣由很有幫助,作為JMeter不會打斷一個測試來顯示一個錯誤對話框。2.4.7吩咐行選項書目調(diào)用JMeter的"jmeter-?"吩咐將打印全部吩咐選項的一個列表。列表如下:-h,--help打印運用信息并退出-v,--version打印版本信息并推出-p,--propfile{argument}運用的JMeter屬性文件-q,--addprop{argument}附加的屬性文件-t,--testfile{argument}運行的JMeter測試文件(.jmx)-l,--logfile{argument}日志取樣文件-n,--nongui非用戶界面運行JMeter-s,--server運行JMeter服務(wù)器-H,--proxyHost{argument}設(shè)置JMeter運用的代理服務(wù)器-P,--proxyPort{argument}設(shè)置JMeter運用的代理服務(wù)器端口-u,--username{argument}設(shè)置JMeter運用的代理服務(wù)器用戶名-a,--password{argument}設(shè)置JMeter運用的代理服務(wù)器密碼-J,--jmeterproperty{argument}={value}定義附加的JMeter屬性-D,--systemproperty{argument}={value}定義附加的System屬性-S,--systemPropertyFile{filename}一個屬性文件被做為系統(tǒng)屬性添加-L,--loglevel{argument}={value}定義日志等級:[category=]level例如jorphan=INFOorjmeter.util=DEBUG-r,--runremote從非用戶界面模式啟動遠程服務(wù)器-d,--homedir{argument}運用的JMeter書目2.5配置JMeter假如你希望變更JMeter運行時的屬性你須要變更在/bin書目下的perties文件,或者創(chuàng)建你自己的perties文件并且在吩咐行指定它。留意:自從2.1.2,你能夠通過JMeter屬性perties在文件中定義附加的JMeter屬性,perties默認值是perties。假如在當(dāng)前書目被發(fā)覺,這個文件被自動加載。類似的,perties被用來更新系統(tǒng)屬性。參數(shù):屬性描述viderder。JMeter默認供應(yīng)s支持。假如你正在運用JDK1.4,或者你運用帶JSSE類的jar文件在JMeter的classpath里的JDK1.4。.ssl.ProviderJMeter默認供應(yīng)s支持是在你運用JDK1.4或者你運用把JSSE類的jar包放到JMeterclasspath中的JDK1.3時候。xml.parser你可以指明一個你的XML解析器實現(xiàn)。默認值是:org.apache.xerces.parsers.SAXParserremote_hosts逗號分割遠程JMeter主機列表。假如你在一個分布式環(huán)境運行JMeter,列出你用JMeter遠程主機運行的機器。這允許你運用機器的用戶界面限制那些服務(wù)器。not_in_menu在JMeter選項屏中你不想看到的組件列表。假如JMeter被添加越來越多的組件,你會希望定制JMeter只出現(xiàn)那些你感愛好的組件。你可以在這兒列出那些類名和他們的類標簽(JMeter的用戶界面出現(xiàn)的字符串),它們將在選項屏中不出現(xiàn)。search_paths列出那些JMeter搜尋JMeter附加類的路徑(以;分割);例如附加的取樣器。被添加到lib/ext書目的任何jar包都被發(fā)覺。user.classpathJMeter搜尋的公用類庫的路徑列表。被添加到lib書目的任何jar包都被發(fā)覺。perties附加的JMeter屬性文件名。初始化屬性文件后它們被添加,但是在-q和-J選項被處理之前。perties附加的系統(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è)框架顯示配置。那些配置允許你配置測試元件的細微環(huán)節(jié)行為,對于一個元件什么能被配置依靠于它是一個什么類型的元件。3.4保存測試安排雖然這不是必需的,我們舉薦你在運行前保存測試安排。為了保存測試安排,從文件菜單選擇保存測試安排(運用最新版本,你不再須要首先選擇測試安排元件)。JMeter允許你保存整個測試安排樹或者僅它的一部分。為了僅保存測試安排樹中特殊"支"位置的元件,從從這個"支"起先的地方選擇樹中的測試安排元件,然后右擊鼠標訪問保存菜單項。另外選擇合適的測試安排元件并從編輯菜單選擇保存。3.5運行一個測試安排為了運行一個測試安排,從"運行"菜單項選擇"起先"。為了停止你的測試安排,從同樣的菜單選擇"停止"。JMeter不會自動給它是否正在運行任何顯示。假如JMeter運行,一些監(jiān)聽器使它變明顯,但是唯一確定的方法是檢查"運行"菜單。假如"起先"不行用,"停止"可用,證明JMeter正在運行你的測試安排(或者至少它認為它是)。有兩個類型的停止吩咐:停止(Control+'.')-馬上停止全部的線程關(guān)閉(Control+',')-懇求全部線程在當(dāng)前任務(wù)結(jié)束后停止3.6元件作用域及執(zhí)行依次3.6.1作用域規(guī)則JMeter中共有8類可被執(zhí)行的元件(測試安排與線程組不屬于元件),這些元件中,取樣器是典型的不與其它元件發(fā)生交互作用的元件,邏輯限制器只對其子節(jié)點的取樣器有效,而其它元件(config

elements

、timers

、post-processors、assertions、listeners、)須要與取樣器(sampler)等元件交互。配置元件(config

elements

):元件會影響其作用范圍內(nèi)的全部元件。前置處理程序(Per-processors):元件在其作用范圍內(nèi)的每一個sampler元件之前執(zhí)行。定時器(timers

):元件對其作用范圍內(nèi)的每一個sampler

有效后置處理程序(Post-processors):元件在其作用范圍內(nèi)的每一個sampler元件之后執(zhí)行。斷言(Assertions):元件對其作用范圍內(nèi)的每一個sampler

元件執(zhí)行后的結(jié)果執(zhí)行校驗。監(jiān)聽器(Listeners):元件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。在jmeter中,元件的作用域是靠測試安排的的樹型結(jié)構(gòu)中元件的父子關(guān)系來確定的,作用域的原則是:

取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。

邏輯限制器(Logic

Controller)元件只對其子節(jié)點中的取樣器

邏輯限制器作用。

除取樣器

和邏輯限制器

元件外,其他6類元件,假如是某個sampler的子節(jié)點,則該元件公對其父子節(jié)點起作用。

除取樣器和邏輯限制器元件外的其他6類元件,假如其父節(jié)點不是sampler

,則其作用域是該元件父節(jié)點下的其他全部后代節(jié)點(包括子節(jié)點,子節(jié)點的子節(jié)點等)。

3.6.2元件的執(zhí)行依次了解了元件有作用域之后,來看看元件的執(zhí)行依次,元件執(zhí)行依次的規(guī)則很簡潔,在同一作用域名范圍內(nèi),測試安排中的元件依據(jù)如下依次執(zhí)行。(1)配置元件(config

elements

)(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)有多個同一類型的元件,則這些元件依據(jù)它們在測試安排中的上下依次依次執(zhí)行。*

一個斷言在測試樹中是分等級的。假如它的父元件是懇求,它就被應(yīng)用于那個懇求。假如它的父元件是限制器,它就影響全部那個限制器下的全部懇求。懇求的依次是One,Two,Three,F(xiàn)our。一些限制器影響它的子元件的依次,你可以在組件參考讀到特定的限制器。Assertion#1僅被應(yīng)用于懇求One,Assertion#2僅被應(yīng)用于懇求Two和Three。在這個例子里,懇求的命名表現(xiàn)它們被執(zhí)行的依次。Timer#1應(yīng)用于懇求Two,Three,和Four(留意對于分等級的元件怎樣的依次是不相關(guān)的)。Assertion#1應(yīng)用于懇求Three。Timer#2對全部懇求有效。元件首部管理器,Cookie管理器和授權(quán)管理器的配置和默認元件的配置被視為是不同的默認元件配置的設(shè)置被并入取樣器可以到達的一組值里了。然而來自管理器的設(shè)置沒有并入。假如多于一個管理器在一個取樣器范圍中,僅僅一個被運用,但是現(xiàn)在沒有方法指定那個被運用。3.7錯誤報告JMeter把警告和錯誤信息報告在jmeter.log文件中,也有一些測試運行本身的信息.只是間或地,JMeter對于某些錯誤是無法補捉和記錄的,這些信息會顯示在吩咐臺上。假如一個測試的執(zhí)行并不是你所期盼的,請檢查日志,或許錯誤會被報告(例如:或許在函數(shù)調(diào)用上有語法錯誤)。取樣錯誤(例如:404-找不到文件)是不會被正常的記錄在日志中的,取而代之的,他們會被當(dāng)作取樣結(jié)果的屬性來儲存,取樣結(jié)果的狀態(tài)能被很多不同的監(jiān)聽器所得到。4.測試安排元件測試安排對象有一個叫做"功能測試"復(fù)選框。假如被選擇,它會使JMeter記錄來自服務(wù)器返回的每個取樣的數(shù)據(jù)。假如你在測試監(jiān)聽器中選擇一個文件,這個數(shù)據(jù)將被寫入文件。假如你嘗試一個較小的測試來保證JMeter配置正確并且你的服務(wù)器正在返回期望的結(jié)果,這是很有用的。這樣的后果就是這個文件會快速的增大,并且JMeter的效率會影響。假如你不做壓力測試這個選項應(yīng)當(dāng)關(guā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-upperiod,那么每個連續(xù)的線程會延遲4秒。Ramp-up須要要足夠長以避開在啟動測試時有一個太大的工作負載,并且要足夠小以至于最終一個線程在第一個完成前啟動(除非你想那樣發(fā)生)。運用ramp-up=線程數(shù)啟動,并上下調(diào)整到所需的。默認,線程組被配置僅循環(huán)一次。1.9版本引入了一個測試運行*調(diào)度器*。單擊在線程組面板底部的復(fù)選框來顯示額外的文本域,在里面你可以輸入啟動和結(jié)束時間。當(dāng)測試啟動時,假如必需JMeter會等待啟動時間到達。在每個周期結(jié)束,JMeter檢驗結(jié)束時間是否到達,假如是,運行停止,假如不是測試被允許接著,直到迭代限制到達。另外你可以運用啟動延遲和持續(xù)時間文本域。留意啟動延遲會覆蓋啟動時間,持續(xù)時間會覆蓋結(jié)束時間。4.2限制器JMeter有兩種限制器:取樣器和邏輯限制器。取樣器告知JMeter發(fā)送懇求到服務(wù)器。例如,假如你要JMeter發(fā)送一個懇求添加一個懇求取樣器。你也可以通過添加一個或者多個配置元件到一個取樣器來定制一個懇求。更多信息,見取樣器。邏輯限制器讓你定制當(dāng)發(fā)送懇求時JMeter運用的推斷邏輯。例如,你可以添加交替限制器來在兩個懇求取樣器之間交替。更多信息,見邏輯限制器。4.2.1取樣器(Sampler)取樣器告知JMeter發(fā)送懇求到服務(wù)器。JMeter取樣器包括:FTP懇求懇求JDBC懇求Javaobject懇求LDAP懇求SOAP/XML-RPC懇求WebService(SOAP)懇求每個取樣器有一些你可以設(shè)置的屬性。你可以通過添加一個或多個配置元件到取樣器來進一步定制它。留意JMeter發(fā)送懇求依據(jù)取樣器出現(xiàn)在樹中的依次。假如你想發(fā)送多個相同類型的懇求(例如,Request)到相同的服務(wù)器,可以考慮運用一個默認配置元件。每個限制器有一個或者多個默認配置元件(見下)。記得添加一個監(jiān)聽器到線程組來查看/保存你的懇求結(jié)果到磁盤。假如你對運用JMeter平臺的基礎(chǔ)驗證器到你的懇求響應(yīng)感愛好,添加一個斷言到懇求限制器。例如,在壓力測試一個web程序時,服務(wù)器會返回一個勝利的響應(yīng)代碼,但是這個頁面有錯誤或者被忽視部分。你可以添加斷言來檢查某個HTML標簽,一些錯誤字符串,等等。JMeter允許你運用正則表達式創(chuàng)建斷言。JMeter內(nèi)建取樣器4.2.2邏輯限制器保持

邏輯限制器讓你定制當(dāng)發(fā)送懇求時JMeter運用的推斷邏輯。邏輯限制器還可以作為下列任何元件的子元件:取樣器(懇求)、配置元件、和其他邏輯限制器。邏輯限制器可以變更來自它們的子元件的懇求依次。它們可以修改懇求本身,導(dǎo)致JMeter重復(fù)懇求,等。理解邏輯限制器在測試安排中的效果,考慮下列測試樹:測試安排線程組僅一次限制器登錄懇求(一個懇求)加載搜尋頁面(取樣器)InterleaveController搜尋"A"(取樣器)搜尋"B"(取樣器)默認懇求(配置元件)默認懇求(配置元件)Cookie管理器(配置元件)這個測試的第一件事就是登錄懇求僅在第一次經(jīng)過時被執(zhí)行。隨后的迭代會忽視它。這應(yīng)運用僅一次限制器。登陸后,下一個取樣器加載搜尋頁面(假設(shè)一個用登錄的web應(yīng)用程序,并到達搜尋頁面去搜尋)。這僅是一個簡潔的懇求,不會被任何邏輯限制器過濾。加載搜尋頁面后,我們要做一個搜尋。事實上,我們想做兩個不同的搜尋。然而,在每個搜尋之間我們想要自己重新加載搜尋頁面。我們通過4個簡潔元件這樣做。(loadsearch,search"A",loadsearch,search"B").Instead,weusetheInterleaveControllerwhichpassesononechildrequesteachtimethroughthetest.Itkeepstheordering(ie-itdoesn'tpassoneonatrandom,but"remembers"itsplace)ofitschildelements.Interleaving2childrequestsmaybeoverkill,buttherecouldeasilyhavebeen8,or20childrequests.留意默認懇求屬于插入限制器。假如"SearchA"和"SearchB"共享同樣的PATH信息(一個懇求說明中包括域,端口,方法,協(xié)議路徑和參數(shù),附加其他可選項)。兩個搜尋懇求訪問同樣的后端搜尋引擎(比方說Servle,或者cgi腳本),這樣是說得通的。與其兩者都配置運用相同信息的取樣器,我們可以抽象那些新到一個單獨的配置元件。當(dāng)內(nèi)部限制器通過"SearchA"或者"SearchB"傳遞時,它會從默認懇求配置元件中獲得值填充空白。所以我們可以為那些懇求保留PATH域為空,然后把那些信息放到配置元件。在這個例子中,這至多是一個很小的好處,但它顯示了這個特性。在這個樹中下一個元件是另一個默認懇求,這個時間被添加到線程組本身。這個線程組有一個內(nèi)建的邏輯限制器,因此它正好運用這個配置元件做為上面的描述。它填充任何穿過的懇求的空白。在web程序中你全部的取樣器元件DOMAIN域為空,這是極度有用的,替代的,把那些信息放到默認懇求元件中,添加到線程組。通過這樣做,你可以在一個同的服務(wù)器通過變更你測試安排中的一個域來測試你的程序。另外,你必需編輯每個取樣器。最終一個元件是一個Cookie管理器。一個Cookie管理器應(yīng)當(dāng)添加到全部web測試上-否則JMeter會忽視Cookie。通過在線程組級添加它,我們可以確定全部的線程共享同樣的Cookie。邏輯限制器可以組合達到不同的結(jié)果。見內(nèi)建邏輯限制器列表。4.3監(jiān)聽器監(jiān)聽器供應(yīng)訪問JMeter收集當(dāng)JMeter運行的關(guān)于測試安排的信息。圖形結(jié)果監(jiān)聽器在一張圖上繪制響應(yīng)時間。"查看結(jié)果樹"監(jiān)聽器顯示了懇求和響應(yīng)取樣器的細微環(huán)節(jié),并且以基礎(chǔ)的HTML和XML顯示響應(yīng)表現(xiàn)。其他監(jiān)聽器供應(yīng)了摘要或者集合信息。另外,監(jiān)聽器可以指導(dǎo)它們收集的數(shù)據(jù)到一個文件供以后用。在JMeter中每一個監(jiān)聽器供應(yīng)一個域來指出存儲數(shù)據(jù)的文件。在測試中監(jiān)聽器可以添加到任何位置。它們僅僅會從它們等級或者它們以下等級的元件收集數(shù)據(jù)。伴隨JMeter有很多好玩的監(jiān)聽器。4.4定時器默認,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)。你可以添加一個斷言到任何取樣器。例如你可以添加一個斷言到懇求檢查文本"</HTML>"。JMeter會檢查在響應(yīng)中表現(xiàn)的文本。假如JMeter沒有找到這個文本,它會標記這個為一個失敗的懇求。為了查看斷言結(jié)果,添加一個斷言監(jiān)聽器到線程組。Assertion--斷言,通常是用于對每一個requestsampler進行額外驗證的工具。下面通過一個例子來介紹一下常用的幾個Assertions。假設(shè)現(xiàn)在要進行一個登陸的壓力測試,下面是對pass的幾個定義:1.正確login后,必需收到返回的身份驗證和用戶個人信息下載的完成信息;2.響應(yīng)時間不能超過150毫秒3.返回的結(jié)果大小不能小于750bytes依據(jù)以上的要求,我們在對應(yīng)的requestsampler下面添加了以下的Assertions。

A.ResponseAssertion

ResponseFieldtoTest--標示被檢查對象是什么?

PatternMatchingRules--標明被檢查對象與驗證內(nèi)容之間的關(guān)系,Contains(包含關(guān)系);Matches(匹配關(guān)系);Equals(相等關(guān)系);Not(非關(guān)系)

PatterntoTest--須要驗證的內(nèi)容列表B.DurationAssertion

DurationtoAssert--允許的響應(yīng)時間的最大值C.SizeAssertion

SizetoAssert--對于返回結(jié)果文件大小的標準定義

二、結(jié)果分析添加了以上的Assertions后,我運行了一次腳本。以下是存放結(jié)果的.jtl文件的內(nèi)容:timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,Latency

11/04/0813:22:03,172,DoLogin,200,OK,ThreadGroup1-1,text,false,Theoperationlastedtoolong:Ittook172milliseconds,butshouldnothavelastedlongerthan150milliseconds.,835,172

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1-2,text,false,Testfailed:textexpectedtocontain/loginMsg="OK"/,633,156

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1-3,text,false,Theoperationlastedtoolong:Ittook156milliseconds,butshouldnothavelastedlongerthan150milliseconds.,839,156

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1-4,text,false,Theoperationlastedtoolong:Ittook156milliseconds,butshouldnothavelastedlongerthan150milliseconds.,836,156

11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroup1-5,text,true,,779,78

11/04/0813:22:03,63,DoLogin,200,OK,ThreadGroup1-7,text,false,Testfailed:textexpectedtocontain/loginMsg="OK"/,570,63

11/04/0813:22:03,141,DoLogin,200,OK,ThreadGroup1-6,text,false,Theresultwasthewrongsize:Itwas721bytes,butshouldhavebeengreaterthan750bytes.,721,141

11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroup1-9,text,false,Theresultwasthewrongsize:Itwas724bytes,butshouldhavebeengreaterthan750bytes.,724,78

11/04/0813:22:03,204,DoLogin,200,OK,ThreadGroup1-10,text,false,Theoperationlastedtoolong:Ittook204milliseconds,butshouldnothavelastedlongerthan150milliseconds.,1137,204

11/04/0813:22:03,2985,DoLogin,200,OK,ThreadGroup1-8,text,false,Testfailed:textexpectedtocontain/loginMsg="OK"/,570,2985我們可以看到,每一個Sampler都會經(jīng)過Assertions的推斷,只要有一個不符合條件的都會標示為False。4.6配置元件配置元件協(xié)作取樣器工作。雖然它不發(fā)送懇求(除了代理服務(wù)器),但是它可以添加或者修改懇求。一個配置元件進能訪問有所代替元件所在的樹分支的內(nèi)部。例如,假如你在一個簡潔邏輯限制器里面設(shè)置一個Cookie管理器,Cookie管理器很簡潔訪問"webPage1"和"webPage2"懇求。但是不能訪問"webPage3"。同樣,一個在樹枝內(nèi)部的配置元件比在父支的同樣元件有更高的優(yōu)先級。例如,我們定義兩個默認懇求元件,"WebDefaults1"和"WebDefaults2"。假如我們把"WebDefaults1"放置在一個循環(huán)限制器內(nèi)部,僅"WebPage2"可以訪問它。另一懇求會運用"WebDefaults2",假如我們把它放置在線程組(全部其他分支的父支)。圖1-測試安排展示配置元件的可達性4.7前置處理器元件前置處理器在取樣器懇求建立前執(zhí)行一些行為。假如前置處理器附屬于取樣器元件,那么它會僅在那個取樣器元件運行前執(zhí)行。前置處理器最常用來在取樣懇求運行前修改它的設(shè)置,或者更新不能從響應(yīng)文本提取的變量。當(dāng)前置處理器執(zhí)行時,具體信息見作用域規(guī)則。4.8后置處理器元件后置限制器在取樣器懇求建立后執(zhí)行一些行為。假如后置處理器附屬于取樣器元件,那么它會僅在那個取樣器元件運行后執(zhí)行。后置處理器最常用來處理響應(yīng)數(shù)據(jù),常用來從它里面提取數(shù)值。\\\\\\具體見作用域規(guī)則關(guān)于前置處理器執(zhí)行。4.9執(zhí)行依次配額制元件前置處理器定時器取樣器后置處理器(假如SampleResult不為空)斷言(假如SampleResult不為空)監(jiān)聽器(假如SampleResult不為空)PleasenotethatTimers,Assertions,Pre-andPost-Processorsareonlyprocessedifthereisasamplertowhichtheyapply.LogicControllersandSamplersareprocessedintheorderinwhichtheyappearinthetree.Othertestelementsareprocessedaccordingtothescopeinwhichtheyarefound,andthetypeoftestelement.[Withinatype,elementsareprocessedintheorderinwhichtheyappearinthetree].Forexample,inthefollowingtestplan:ControllerPost-Processor1Sampler1Sampler2Timer1Assertion1Pre-Processor1Timer2Post-Processor2Theorderofexecutionwouldbe:Pre-Processor1

Timer1

Timer2

Sampler1

Post-Processor1

Post-Processor2

Assertion1Pre-Processor1

Timer1

Timer2

Sampler2

Post-Processor1

Post-Processor2

Assertion14.10PropertiesandVariablesJMeterpropertiesaredefinedinperties(seeGetttingStarted-ConfiguringJMeterformoredetails).

Propertiesareglobaltojmeter,andaremostlyusedtodefinesomeofthedefaultsJMeteruses.Forexamplethepropertyremote_hostsdefinestheserversthatJMeterwilltrytorunremotely.Propertiescanbereferencedintestplans-seeFunctions-readaproperty-butcannotbeusedforthread-specificvalues.JMetervariablesarelocaltoeachthread.Thevaluesmaybethesameforeachthread,ortheymaybedifferent.

Ifavariableisupdatedbyathread,onlythethreadcopyofthevariableischanged.ForexampletheRegularExpressionExtractorPost-Processorwillsetitsvariablesaccordingtothesamplethatitsthreadhasread,andthesecanbeusedlaterbythesamethread.Fordetailsofhowtoreferencevariablesandfunctions,seeFunctionsandVariablesNotethatthevaluesdefinedbytheTestPlanandtheUserDefinedVariablesconfigurationelementaremadeavailabletothewholetestplanatstartup.Ifthesamevariableisdefinedbymultipleelements,thenthelastonetakeseffect.OtherelementssuchastheUserParametersPre-ProcessororRegularExpressionExtractorPost-Processormaybeusedtoredefinethesamevariables.Theseredefinitionsonlyapplytothecurrentthread.Notethatglobalvariablescannotbeupdatedduringatest.ThesetPropertyfunctioncanbeusedtodefineaJMeterproperty.Theseareglobaltothetestplan,socanbeusedtopassinformationbetweenthreads.5.創(chuàng)建一個Web測試安排在這一部分,你將學(xué)會如何創(chuàng)建一個基礎(chǔ)的測試安排來測試一個Web站點,你將會創(chuàng)建5個用戶向Jackrta網(wǎng)站上的兩個網(wǎng)頁發(fā)送懇求。同樣,你要告知用戶運行測試兩次。這樣,總的發(fā)送懇求為(5個用戶*2次懇求*重復(fù)2次)=20。要創(chuàng)建這個測試安排,你將會用到下面的元件:線程組,懇求,懇求默認值和圖形結(jié)果。要創(chuàng)建更好的測試安排,可以參考創(chuàng)建一個高級web測試安排。5.1添加用戶處理每個JMeter測試安排的第一步就是添加線程組元件。這個線程組會告知JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)當(dāng)發(fā)送懇求的頻率和應(yīng)當(dāng)發(fā)送的數(shù)量。下一步來添加一個線程組:首先選擇這個測試安排,用鼠標右鍵點擊然后在得到的菜單中選擇"添加"-->"線程組"。這時你應(yīng)當(dāng)看到這個線程組已經(jīng)在測試安排下面了,假如沒有看到,就點擊測試安排元件綻開這個測試安排樹。下一步,你須要修改這些默認的屬性。假如你還沒有選擇線程組元件,則從測試安排樹型結(jié)構(gòu)中選擇它。這時你應(yīng)當(dāng)看到JMeter窗口右邊的線程組限制面板了。

圖5.1.線程組默認值首先給這個線程組起一個有意義的名字。在名稱域中,輸入JakartaUsers.下一步,增加用戶的數(shù)量(稱為線程)為5。域Ramp-UpPeriod:,運用默認值為0。這個屬性表示每個用戶啟動的拖延時間。例如,假如你輸入Ramp-UpPeriod為5秒,JMeter將會在5秒結(jié)束前完成啟動全部的用戶。所以,假如你有五個用戶并且Ramp-UpPeriod為五秒,那么起先用戶的延遲就是1秒。(5個用戶/5秒=1用戶每秒)。假如你設(shè)置其值為0,JMeter將會馬上啟動你全部的用戶。域LoopCount:取消標記為"恒久"的復(fù)選框選擇并設(shè)置循環(huán)次數(shù)為2。這個屬性表示你的測試的重復(fù)次數(shù)。假如你設(shè)置為1,JMeter將你的測試只運行一次。要讓JMeter不斷的運行,你要選擇"恒久"這個復(fù)選框。在大多數(shù)的應(yīng)用程序中,你須要手動來接受你在限制面板中所做的修改。但在JMeter中,假如你做了修改,限制面板可以自動的接受。假如你修改的元件的名字,當(dāng)你離開限制面板后樹型菜單自動更新(例如,當(dāng)你選擇另外一個樹元件)。見圖5.2為完整的JakartaUsers線程組。

圖5.2.JakartaUsers線程組5.2添加默認懇求屬性我們已經(jīng)定義了用戶,現(xiàn)在要定義他們的行為了。在這一部分,你將學(xué)會對你的懇求設(shè)置默認值。然后在5.3節(jié),用你在這里指定的默認設(shè)置來添加懇求元件。首先選擇JakartaUsers(就是剛才的線程組)元件,右鍵點擊并在彈出的菜單中選擇"添加"-->"配置元件"-->"懇求默認值"。然后選擇這個新元件來顯示其限制面板(見圖5.3)。

圖5.3.懇求默認值跟大多數(shù)的JMeter元件一樣,懇求默認值限制面板也有一個名稱域。在這個例子中將它保留為默認值。下面這個文本域是Web服務(wù)器的服務(wù)器/IP。對于你創(chuàng)建的測試安排,全部的懇求都將發(fā)送到相同的Web服務(wù)器。向這個域中輸入這個域名,這是唯一一個須要我們?nèi)バ薷乃哪J值的文本域,其它的文本域都保留它們的默認值。懇求默認值元件并不告知JMeter來發(fā)送懇求,它僅僅定義這個懇求所用的默認值。見圖5.4完整的懇求默認值元件

圖5.4.測試安排的默認值5.3添加Cookie支持除非你的應(yīng)用程序明確的不運用Cookies,幾乎全部的網(wǎng)站應(yīng)用程序都會運用cookie支持。要添加cookie支持,可以簡潔的在你的測試計劃中給每一個線程組添加一個Cookie管理器。這樣確保每個線程組有自己的cookies,但是共享跨越全部的懇求對象。添加Cookie管理器,簡潔地選擇這個線程組,選擇添加-->配置元件-->Cookie管理器,也可以從編輯菜單或通過右鍵點擊來實現(xiàn)添加。5.4添加懇求在這個測試安排中,我們須要實現(xiàn)兩個懇求。第一個就是Jakarta網(wǎng)站首頁(),其次個就是工程向?qū)ЬW(wǎng)頁()。JMeter依據(jù)它們在樹的出現(xiàn)的次序來發(fā)送懇求。首先給JakartaUsers元件添加第一個懇求(添加-->取樣器-->懇求)。然后從樹中選擇懇求元件并修改下列屬性(見圖5.5):(取樣器就是sampler)更改名稱域為"HomePage"。設(shè)置路徑域為"/"。記得你不必設(shè)置服務(wù)器名域,因為你已經(jīng)在默認懇求元件中指定了這個值。

圖5.5.Jakarta首頁的懇求下一步,添加每二個懇求并修改下列屬性(見圖5.6):更改名稱域為"ProjectGuidelines"。設(shè)置路徑域為"/site/guidelines.html"。

圖5.6.Jakarta工程Guidelines頁的懇求5.5添加一個監(jiān)聽器來閱讀/儲存測試結(jié)果最終一個須要添加到測試安排的元件是監(jiān)聽器。這個元件的用途是將全部的懇求結(jié)果存儲在一個文件中并顯現(xiàn)出數(shù)據(jù)的可視模型。選擇JakartaUsers元件,然后添加一個"圖形結(jié)果"監(jiān)聽器(添加-->監(jiān)聽器-->圖形結(jié)果).接著,你須要指定一個文件路徑和輸出文件名。你可以在文件名域中輸入或選擇閱讀按鈕并選擇一個路徑然后輸入文件名。

圖5.7.圖像結(jié)果監(jiān)聽器5.6登錄一個web站點在這它不是一個例子,但是一些網(wǎng)站須要在許可你做某些操作前登錄.在一個web閱讀器中,登錄會表現(xiàn)為一個包含用戶名,密碼和一個提交按鈕的表單.這個按鈕產(chǎn)生一個POST懇求,傳遞表單的值作為參數(shù).It'snotthecasehere,butsomeweb-sitesrequireyoutologinbeforepermittingyoutoperformcertainactions.Inaweb-browser,theloginwillbeshownasaformfortheusernameandpassword,andabuttontosubmittheform.ThebuttongeneratesaPOSTrequest,passingthevaluesoftheformitemsasparameters.在JMeter中這樣做,添加一個懇求,并設(shè)置為POST方法.你還要通過表單知道域的名字和目標頁面.通過查看那登陸頁面的代碼可以發(fā)覺它們.TodothisinJMeter,addanRequest,andsetthemethodtoPOST.You'llneedtoknowthenamesofthefieldsusedbytheform,andthetargetpage.Thesecanbefoundoutbyinspectingthecodeoftheloginpage.[假如這比較難做,你可以運用JMeter代理記錄器來記錄登錄依次.Ifthisisdifficulttodo,youcanusetheJMeterProxyRecordertorecordtheloginsequence.]設(shè)置路徑為提交按鈕的目標.單擊添加按鈕并輸入用戶名和密碼資料.有時登錄表單包含附加的隱藏域.它們也須要被添加.Setthepathtothetargetofthesubmitbutton.ClicktheAddbuttontwiceandentertheusernameandpassworddetails.Sometimestheloginformcontainsadditionalhiddenfields.Thesewillneedtobeaddedaswell.

Figure5.8.Sampleloginrequest6.創(chuàng)建一個高級web測試安排在這章,你將學(xué)到如何創(chuàng)建高級測試安排來測試web站點。假如須要一個基礎(chǔ)的測試安排例子,見創(chuàng)建一個web測試安排。6.1用URL重寫處理用戶會話假如你的web應(yīng)用程序運用URL重寫,而不是cookies保存會話信息,那么為了測試你的站點你將須要做一點額外的工作。為了正確響應(yīng)URL重寫,JMeter須要解析從服務(wù)器得到的HTML并獲得唯一的會話ID。利用適當(dāng)?shù)腢RL重寫修改器來完成這些。簡潔地在修改器中輸入你的會話ID參數(shù)名,它會找到它并添加它到每一個懇求。假如懇求已經(jīng)有一個值,它將會被替代。假如"緩存會話Id?"被選中,那么最后創(chuàng)建的會話ID將被保存,并且假如的上次取樣不包含一個會話ID,它將會被運用。URL重寫例子下載這個例子.在圖1中展示了一個運用URL重寫的測試安排。留意URL重寫修改器附被添加到簡潔限制器,因此確認它僅影響簡潔限制器下的懇求.

圖1-測試樹在圖2中,我們看到了URL重寫修改器的GUI,它僅僅有一個讓用戶指定會話ID參數(shù)名的文本域。有一個復(fù)選框來指示會話ID將被化為為路徑(以";"隔開),這樣賽過運用一個懇求參數(shù)。

圖2-懇求參數(shù)6.2運用消息頭管理器消息頭管理器允許你定制JMeter在懇求消息頭發(fā)送什么信息。這個消息頭包括像"User-Agent","Pragma","Referer"等屬性。消息頭管理器像Cookie管理器一樣,假如你因為一些緣由你不希望在你的測試里為不同的懇求對象指定不同的消息頭,可以添加到線程組等級。7.創(chuàng)建一個數(shù)據(jù)庫測試安排在這一部分,你將學(xué)會如何去創(chuàng)建一個基礎(chǔ)的測試安排來測試一個數(shù)據(jù)庫服務(wù)器。你會創(chuàng)建10個用戶來給數(shù)據(jù)庫服務(wù)器發(fā)送2次SQL懇求。同樣,你也可以讓用戶運行他們的測試三次。這樣總的JDBC懇求數(shù)量就是(10用戶)*(2次懇求)*(重復(fù)3次)=60。要構(gòu)建這個測試安排,你將會用到下面的元件:線程組,JDBC懇求,圖形結(jié)果。這個例子運用了MySQL數(shù)據(jù)庫驅(qū)動。要運用這個驅(qū)動,它所包涵的.jar文件必需復(fù)制到../lib/directory下(詳情參見JMeter'sClassPath)。7.1添加用戶處理每個JMeter測試安排的第一步就是添加線程組元件。這個線程組會告知JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)當(dāng)發(fā)送懇求的頻率和應(yīng)當(dāng)發(fā)送的數(shù)量。起先來添加一個線程組:首先選擇這個測試安排,點擊鼠標右鍵得到添加菜單,然后選擇添加-->線程組。這時你應(yīng)當(dāng)看到這個線程組已經(jīng)在測試安排下了,假如沒有看到,就點擊測試安排元件綻開這個測試安排樹。下一步,你須要修改這些默認的屬性。假如你還沒有選擇線程組元件,則從測試安排樹型結(jié)構(gòu)中選擇它。這時你應(yīng)當(dāng)看到JMeter窗口右邊的線程組限制面板了(見下圖7.1)。

Figure7.1.ThreadGroupwithDefaultValues首先給這個線程組起一個有意義的名字。在名稱域中,輸入JDBCUsers。你將須要一個可用的數(shù)據(jù)庫,數(shù)據(jù)庫表,和表的用戶運用權(quán)限。在這個例子中,數(shù)據(jù)庫是'mydb',表名是'Stocks'。接下來,將用戶的數(shù)量(即線程)增加到10。在下一個Ramp-UpPeriod文本域中,運用默認值0。這個屬性表示每個用戶啟動的拖延時間。例如,假如你輸入Ramp-UpPeriod為5秒,JMeter將會在五秒結(jié)束前完成啟動全部的用戶。所以,假如你有五個用戶并且Ramp-UpPeriod為五秒,那么啟動用戶的延遲就是1秒。(5個用戶/5秒=1用戶每秒).假如你設(shè)置其值為0,JMeter將會馬上啟動你全部的用戶。最終,輸入循環(huán)次數(shù)為3。這個屬性告知JMeter你的測試運行多少次。假如你設(shè)置為1,JMeter將你的測試只運行一次。要讓JMeter不斷的運行,你要選擇"恒久"這個復(fù)選框。在大多數(shù)的應(yīng)用程序中,你須要手動來接受你在限制面板中所做的修改。但在JMeter中,假如你做了修改,限制面板可以自動的接受。假如你修改的元件的名字,樹型菜單當(dāng)你離開限制面板后自動更新。(例如,當(dāng)你選擇另外一個樹元件。)見圖7.2完整的JDBCUsers線程組.

圖7.2.JDBCUsers線程組7.2添加JDBC懇求現(xiàn)在我們已經(jīng)定義了用戶,是時候定義他們。在這一部分,我們將會具體說明JDBC懇求的執(zhí)行。首先選擇JDBC用戶元件,點擊鼠標右鍵,得到添加菜單,然后選擇添加-->配置元件-->JDBC連接配置。接著,選擇這個新元件來顯示它的限制面板(見圖7.3)。設(shè)定下面的文本域(我們這里假定用一個名為test的本地MySQL數(shù)據(jù)庫)。綁定到池變量。這須要能夠唯一標識這個配置。這是用來被JDBC取樣器識別這個配置來運用.數(shù)據(jù)庫URL:jdbc:mysql://localhost:3306/test用戶名:guest密碼:guest的密碼剩下的域保留默認值。

圖7.3.JDBC配置再次選擇JDBC用戶元件。點擊鼠標右鍵,得到添加菜單,然后選擇添加-->Sampler-->JDBC懇求。然后,選擇這個新元件來顯示其限制面板(見圖7.4)。

圖7.4.JDBC懇求在我們這個測試安排中,我們將發(fā)送2個JDBC懇求。第一個是向EastmanKodakstock,其次個是向Pfizerstock(很明顯須要變更這些例子來適合你的特殊的數(shù)據(jù)庫)。下面有插圖文字說明。JMeter發(fā)送懇求的次序就是你向樹中添加它們的次序。起先編輯下列的屬性(見圖7.5):修改名稱為"Kodak"輸入池名:MySQL(在配置元件里面一樣)輸入SQL查詢字符串域

圖7.5.EastmanKodakstock的JDBC懇求下一步,添加其次個JDBC懇求并編輯下列的屬性(見圖7.6):修改名字為"Pfizer"輸入SQL查詢字符域

圖7.6.Pfizerstock的JDBC懇求7.4添加一個監(jiān)聽器閱讀/保存測試結(jié)果你須要添加到你測試安排的最終元件是一個監(jiān)聽器。這個元件責(zé)任是儲存全部你的JDBC懇求結(jié)果到文件,并且展示一個可視數(shù)據(jù)模型。選擇JDBC用戶元件,添加一個圖形結(jié)果監(jiān)聽器(添加-->監(jiān)聽器-->圖形結(jié)果)。

圖7.7.圖像結(jié)果監(jiān)聽器8創(chuàng)建一個FTP測試安排在這章,你將學(xué)習(xí)到如何創(chuàng)建一個基本的測試安排來測試FTP站點。你將為在O'Reilly的FTP站點上的兩個文件創(chuàng)建四個發(fā)送懇求的用戶。同樣,你將告知用戶運行測試兩次。所以整個測試數(shù)目是(4個用戶)*(2個懇求)*(重復(fù)2次)=16個FTP懇求。為了構(gòu)造測試安排,你將須要運用下列元件:測試線程,F(xiàn)TP懇求,F(xiàn)TP默認懇求和SplineVisualizer。這個例子運用O'Reilly的FTP站點,oro。當(dāng)運行這個例子時請考慮周到,并且(假如可能)考慮再次運行其他FTP站點。8.1添加用戶你想處理每個JMeter測試安排的第一步是添加線程組元件。線程組告知JMeter你想模擬的用戶數(shù),用戶發(fā)送懇求的頻率,和發(fā)送懇求的數(shù)量。順便說一下,首先選擇測試安排,右鍵點擊得到"添加"菜單,并且選擇"添加"-->"線程組",通過這種方式添加線程組。現(xiàn)在你應(yīng)當(dāng)看到了測試安排下的線程組元件了。假如你看不到這個元件,單擊測試安排元件綻開測試安排樹。下一步,你須要修改默認配置。假如你還沒有選擇線程組元件,在樹里選擇它?,F(xiàn)在在JMeter窗口右部你應(yīng)當(dāng)可以看到線程組限制面板。(見下圖8.1)圖8.1運用默認值的線程組首先給線程組起一個更加有意義的名字。在名稱域,輸入O'ReillyUsers。下一步,增加用戶數(shù)(稱作線程)到四個。在下一個文本域——Ramp-UPPeriod,運用默認值0秒。這個屬性告知JMeter啟動每個用戶之間的時間間隔。例如,你輸入Ramp-UpPeriod為五秒,JMeter將會在最終5秒結(jié)束前啟動全部你的用戶。所以,假如我們有5個用戶和一個5秒的Ramp-UpPeriod,那么啟動用戶的延遲就是1秒(5用戶/5秒=1用戶每秒)。假如你設(shè)置為那個值為零,那么JMeter將會馬上啟動所以你的用戶。最終,清除標為"恒久"的復(fù)選框,并且在循環(huán)次數(shù)文本域中輸入2。這個屬性告知JMeter重復(fù)你的測試的次數(shù)。假如你輸入循環(huán)次數(shù)為0,那么JMeter將會運行你的測試一次。為了讓JMeter重復(fù)運行你的測試安排,選擇恒久復(fù)選框。在大部分應(yīng)用程序中,你必需在限制面板中手工變更。然而,在JMeter中,限制面板中自動接受你做的變更。假如你修改元件名,這個樹會在你離開限制面板前自動運用新的文本更新這個樹(例如,當(dāng)你選擇另一個樹元件時)。見圖8.2完整的O'ReillyUsers線程組。圖8.2O'ReillyUsers線程組8.2添加默認FTP懇求配置既然我們已經(jīng)定義了我們的用戶,是時間定義他們要執(zhí)行的任務(wù)了。在這一節(jié),你將為你的FTP懇求指定默認設(shè)置。然后在8.3節(jié),你將會添加運用你在這里指定的一些默認設(shè)置的FTP懇求元件。首先選擇O'ReillyUsers元件。右鍵點擊得到"添加"菜單,然后選擇"添加"-->"配置元件"-->"FTP默認懇求"。于是選擇新的元件預(yù)覽它的限制面板(見圖8.3)。圖8.3FTP默認懇求像大多數(shù)JMeter元件一樣,F(xiàn)TP默認懇求限制面板有一個你可以修改的名稱域。在這個例子里,保持這個文本域運用默認值。忽視下一個文本域,它是FTP服務(wù)器的服務(wù)器名/IP。為了你正在構(gòu)建的測試安排,全部的FTP懇求將會發(fā)送到相同的FTP服務(wù)器,ftp.oro。輸入域名到這個文本域。這是唯一一個須要我們?nèi)バ薷乃哪J值的文本域,所以保持剩余的文本域運用它們的默認值。FTP默認懇求元件沒有告知JMeter發(fā)送一個FTP懇求。它只是簡潔定義了FTP懇求元件運用的默認值。見圖8.4完整的FTP默認懇求元件。圖8.4我們測試安排的FTP默認8.3添加FTP懇求在我們的測試安排中,我們須要制作兩個FTP懇求。第一個是O'Reilly下的mSQL下的java下README文件(ftp://),第一個文件是tutorial文件(/msql/java/tutoria

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論