版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JMETER中文手冊(cè)共享1.簡(jiǎn)介ApacheJMeter是100%純java桌面應(yīng)用程序,被設(shè)計(jì)用來(lái)測(cè)試C/S結(jié)構(gòu)的軟件(例如web應(yīng)用程序)。它可以用來(lái)測(cè)試包括基于靜態(tài)和動(dòng)態(tài)資源程序的性能,例如靜態(tài)文件,JavaServlets,Java對(duì)象,數(shù)據(jù)庫(kù),F(xiàn)TP服務(wù)器等等。JMeter可以用來(lái)在一個(gè)服務(wù)器、網(wǎng)絡(luò)或者對(duì)象上模擬重負(fù)載來(lái)測(cè)試它的強(qiáng)度或者分析在不同的負(fù)載類(lèi)型下的全面性能。另外,JMeter能夠通過(guò)讓你們用斷言創(chuàng)建測(cè)試腳原來(lái)驗(yàn)證我們的應(yīng)用程序是否返回了我們期望的結(jié)果,從而幫助我們回來(lái)測(cè)試我們的程序。為了最大的敏捷性,JMeter允許我們運(yùn)用正則表達(dá)式創(chuàng)建斷言。1.1歷史Apache軟件組織的StefanoMazzocchi是JMeter的創(chuàng)始人。他編寫(xiě)它起初是為了測(cè)試ApacheJServ的性能(一個(gè)已經(jīng)被ApacheTomcat工程所替代的工程)。我們重新設(shè)計(jì)JMeter來(lái)增加用戶界面并增加功能測(cè)試的實(shí)力。1.2將來(lái)我們希望看到作為開(kāi)發(fā)者利用它的可插入架構(gòu)使JMeter的功能快速擴(kuò)展。將來(lái)發(fā)展的主要目標(biāo)是在沒(méi)有影響JMeter的負(fù)載測(cè)試實(shí)力的狀況下盡可能使JMeter成為最好用的回來(lái)測(cè)試工具。2.入門(mén)起先運(yùn)用JMeter最簡(jiǎn)潔的方法是首先下載最新版并且安裝它。這個(gè)版本包含全部你在構(gòu)建和運(yùn)行Web,F(xiàn)TP,JDBC,和JNDI等測(cè)試時(shí)運(yùn)用須要的全部文件。假如你想執(zhí)行JDBC測(cè)試,你當(dāng)然須要從供應(yīng)商得到適當(dāng)?shù)腏DBC驅(qū)動(dòng)。JMeter沒(méi)有供應(yīng)任何JDBC驅(qū)動(dòng)。你可能須要下載的其它軟件:BeanShell-BeanShell函數(shù)和測(cè)試元件須要JavaActivationFramework-JavaMail須要JavaMail-Mail可視化,MailReader和WebService(SOAP)取樣器須要JMS-JMS取樣器須要下一步,起先運(yùn)用JMeter并且參見(jiàn)用戶手冊(cè)創(chuàng)建一個(gè)測(cè)試安排一章使自己更加熟識(shí)JMeter基礎(chǔ)(例如,添加和刪除元件)。最終,參見(jiàn)如何構(gòu)建一個(gè)明確類(lèi)型的測(cè)試用例的適合章節(jié)。例如,假如你對(duì)Web應(yīng)用測(cè)試感愛(ài)好,那就參見(jiàn)創(chuàng)建一個(gè)Web測(cè)試安排。其他具體的測(cè)試安排章節(jié)是:高級(jí)Web測(cè)試安排、JDBC、FTP、JMS點(diǎn)到點(diǎn)、JMS主題、LDAP2.1需求JMeter須要最小需求的運(yùn)行環(huán)境。2.1.1Java版本JMeter須要一個(gè)完全適當(dāng)?shù)腏VM1.4或者更高因?yàn)镴Meter僅運(yùn)用Java標(biāo)準(zhǔn)API,請(qǐng)不要把因?yàn)镴RE實(shí)現(xiàn)版本而無(wú)法運(yùn)行JMeter的bug報(bào)告提交。2.1.2操作系統(tǒng)JMeter是100%純Java應(yīng)用程序并且能夠正確的在任何有適當(dāng)?shù)腏ava實(shí)現(xiàn)的操作系統(tǒng)上運(yùn)行。JMeter在下列環(huán)境已經(jīng)被測(cè)試:Unix(Solaris,Linux,等)、Windows(98,NT,2000,xp)、OpenVMSAlpha7.3+2.2可選假如你安排做JMeter開(kāi)發(fā)或者想運(yùn)用SUN的java標(biāo)準(zhǔn)擴(kuò)展包,你將須要下列更多的可選包。2.2.1Java編譯器假如你想編譯JMeter源代碼或者開(kāi)發(fā)JMeter插件,你將須要一個(gè)完整的適當(dāng)?shù)腏DK1.4或者更高。2.2.2SAXXML解析器JMeter運(yùn)用Apache的XercesXML解析器,你可以選擇告知JMeter運(yùn)用一個(gè)不同的XML解析器。這樣做,把第三方的解析器的類(lèi)包包含在JMeter的classpath中,并更新perties文件里的解析器實(shí)現(xiàn)的全類(lèi)名。2.2.3Email支持JMeter有有限的Email實(shí)力。它能夠發(fā)送基于測(cè)試結(jié)果的Email,并且支持POP/IMAP取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email,須要添加Sun的JavaMail包和activation包到JMeterclasspath。2.2.4SSL加密為了測(cè)試一個(gè)運(yùn)用SSL加密(HPPS)的web服務(wù)器,JMeter須要一個(gè)供應(yīng)SSL實(shí)現(xiàn)(例如Sun的JavaSecureSocketsExtension-JSSE)。包含須要的加密包到JMeter的classpath。同樣,通過(guò)注冊(cè)SSL供應(yīng)者更新perties文件。JMeter默認(rèn)協(xié)議等級(jí)TLS(傳輸層平安性)。這可以通過(guò)修改在erties或者perties文件中的"tocol"來(lái)變更。JMeter被配置接受全部的證書(shū),不管是否信任和合法時(shí)間等。這允許在測(cè)試服務(wù)器最大敏捷性。假如服務(wù)器須要一個(gè)客戶端證書(shū),這是可以供應(yīng)的。為了更好的管理證書(shū),也要有一個(gè)SSL管理器。2.2.5JDBC驅(qū)動(dòng)假如你須要JDBC測(cè)試,須要添加廠商的JDBC驅(qū)動(dòng)到classpath。確認(rèn)文件是一個(gè)jar文件,而不是zip。2.2.6ApacheSOAPApacheSOAP須要mail.jar和activation.jar.你須要下載并拷貝這兩個(gè)jar文件到你jmeter/lib書(shū)目.一旦文件放到那里,JMeter會(huì)自動(dòng)找到它們。2.2.7BeanShell為了運(yùn)行BeanShell函數(shù)或者任何BeanShell測(cè)試元件(取樣器,定時(shí)器等),你須要從下載beanshell的jar文件并拷貝jar文件到j(luò)meter/lib書(shū)目,JMeter會(huì)自動(dòng)找到它。2.2.8ActiveMQ3.0類(lèi)庫(kù)具體參見(jiàn)具體參見(jiàn)JMeterClasspath一章安裝附加的jar包2.3安裝我們舉薦大多數(shù)用戶運(yùn)行最新版本。要安裝一個(gè)構(gòu)建版本,簡(jiǎn)潔解壓zip/tar文件到你想安裝JMeter的書(shū)目。保證一個(gè)JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOME,其它不須要做什么了。安裝書(shū)目接口應(yīng)當(dāng)看到的像這樣一些東西(2.3.1版本):
假如你想的話你可以重命名父書(shū)目(例如jakarta-jmeter-2.3.1),但是不要變更任何子書(shū)目命。父書(shū)目路徑中不能包含任何空格;假如包含,你運(yùn)行客戶端-服務(wù)器模式會(huì)有問(wèn)題。2.4運(yùn)行JMeter要運(yùn)行JMeter,運(yùn)行jmeter.bat(forWindows)或者jmeter(forUnix)文件。那些文件在bin書(shū)目下。略微暫停后,JMeterGUI會(huì)顯示出來(lái)。在bin書(shū)目你會(huì)發(fā)覺(jué)有些附加腳本很有用。Windows腳本文件(CMD文件須要Win2K或者更新):jmeter.bat-運(yùn)行JMeter(默認(rèn)在GUI模式)jmeter-nd-運(yùn)用一個(gè)JMX文件運(yùn)行非GUI測(cè)試jmeter-n-rd-運(yùn)用一個(gè)JMX文件遠(yuǎn)程運(yùn)行一個(gè)非GUI測(cè)試jmeter-td-在GUI模式運(yùn)用一個(gè)JMX文件jmeter-server.bat-以服務(wù)器模式啟動(dòng)JMeter留意:LAST可以在jmeter-nd,jmeter-td和jmeter-n-rd中運(yùn)用,意味著最終一次測(cè)試會(huì)運(yùn)行.Unix腳本文件可以運(yùn)行在大多Linux/Unix系統(tǒng).jmeter-運(yùn)行JMeter(默認(rèn)在GUI模式)jmeter-server-以服務(wù)器模式啟動(dòng)JMeter2.4.1JMeterClasspathJMeter自動(dòng)從下列書(shū)目中的jar文件發(fā)覺(jué)類(lèi)。JMETER_HOME/lib-用來(lái)放運(yùn)用的jar文件JMETER_HOME/lib/ext-用來(lái)放JMeter組件和擴(kuò)展假如你開(kāi)發(fā)新的JMeter組件,你可以壓縮它們成jar包并拷貝到JMeter的/lib/ext書(shū)目。JMeter將會(huì)自動(dòng)發(fā)覺(jué)在這里的任何jar文件中的JMeter組件。支持的jar文件(類(lèi)庫(kù))應(yīng)當(dāng)放在lib書(shū)目.假如你不想把擴(kuò)展jar包放到lib/ext書(shū)目,可以在perties中定義search_paths屬性。不要運(yùn)用lib/ext給那些公用的jar包;它僅僅是存放JMeter組件。其他jar包(例如JDBC,和任何JMeter代碼須要支持的類(lèi)庫(kù))應(yīng)當(dāng)被代替放在lib書(shū)目,而不是lib/ext書(shū)目。你可以在$JAVA_HOME/jre/lib/ext安裝有用的jar文件,或者(自從2.1.1版本)你可以在perties中設(shè)置user.classpath屬性。留意設(shè)置CLASSPATH環(huán)境變量將不起作用。這是因?yàn)镴Meter運(yùn)用"java--jar"啟動(dòng),并且java吩咐無(wú)記錄忽視CLASSPATH變量,并且當(dāng)運(yùn)用-jar選項(xiàng)時(shí)-classpath/-cp選項(xiàng)也被運(yùn)用。2.4.2運(yùn)用代理服務(wù)器假如你從防火墻/代理服務(wù)器后測(cè)試,你須要供應(yīng)應(yīng)JMeter防火墻/代理服務(wù)器的主機(jī)名和端口號(hào)。這樣做,從吩咐行運(yùn)用以下參數(shù)運(yùn)行jmeter.bat/jmeter文件:
-H[代理服務(wù)器主機(jī)名或者ip地址]-P[代理服務(wù)器端口]-N[非代理主機(jī)](例如:*.|localhost)-u[代理證書(shū)用戶名-假如須要]-a[代理證書(shū)密碼-假如須要]例如:jmeter-Hxy.server-P8000-uusername-apassword-Nlocalhost或者,你運(yùn)用--proxyHost,--proxyPort,--username,and--passwordJMeter也有自己的內(nèi)建代理服務(wù)器,來(lái)記錄(不是S)閱讀器會(huì)話。這是和上面的代理設(shè)置描述不混淆的,它是在JMeter發(fā)出或者S懇求時(shí)運(yùn)用的。2.4.3非用戶界面模式(吩咐行模式)為了不相互影響測(cè)試,你可以選擇運(yùn)行沒(méi)有用戶界面的JMeter。這樣做,運(yùn)用下列吩咐選項(xiàng):-n這是指定JMeter在非用戶界面模式運(yùn)行-t[包含測(cè)試安排的JMX文件的名字]-l[記錄用樣結(jié)果的JTL文件的名字]-r運(yùn)行在perties文件里全部的遠(yuǎn)程服務(wù)器(或者通過(guò)在吩咐行覆蓋屬性指定遠(yuǎn)程服務(wù)器)這個(gè)腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H[代理服務(wù)器主機(jī)名或者ip地址]-P[代理服務(wù)器端口]例如:jmeter-n-tmy_test.jmx-llog.jtl-Hxy.server-P80002.4.4服務(wù)器模式為了分布測(cè)試,在服務(wù)器模式運(yùn)行JMeter,并且通過(guò)用戶界面限制每一臺(tái)服務(wù)器。jmeter-server/jmeter-server.bat腳本運(yùn)用適當(dāng)?shù)腸lasspath為你起先遠(yuǎn)程注冊(cè)。假如失敗,參見(jiàn)關(guān)于JMeter服務(wù)器啟動(dòng)細(xì)微環(huán)節(jié)。運(yùn)行jmeter-server/jmeter-server.bat,加上下列選項(xiàng)吩咐:這個(gè)腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H[代理服務(wù)器主機(jī)名或者ip地址]-P[代理服務(wù)器端口]例如:jmeter-server-Hxy.server-P80002.4.5通過(guò)吩咐行覆蓋屬性Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過(guò)吩咐行干脆覆蓋(代替更改perties文件)。這樣做,運(yùn)用下列選項(xiàng):-D[prop_name]=[value]-定義一個(gè)java系統(tǒng)屬性值。-J[propname]=[value]-覆蓋一個(gè)JMeter屬性。-L[category]=[priority]-覆蓋一個(gè)日志設(shè)置,設(shè)置一個(gè)特殊書(shū)目為給定的優(yōu)先級(jí)。-L標(biāo)記也可以運(yùn)用沒(méi)有書(shū)目名來(lái)設(shè)置根書(shū)目日志等級(jí)。例如:jmeter-Duser.dir=/home/mstover/jmeter_stuff\-Jremote_hosts=-Ljmeter.engine=DEBUGjmeter-LDEBUG留意:吩咐行參數(shù)在啟動(dòng)時(shí)較早被處理,但是在日志系統(tǒng)被設(shè)置以后。嘗試運(yùn)用-J標(biāo)記更新log_level或者log_file屬性無(wú)效。2.4.6日志和錯(cuò)誤信息假如JMeter發(fā)覺(jué)一個(gè)錯(cuò)誤,一個(gè)消息將被寫(xiě)入日志文件。日志文件名在perties文件中定義。一般定義為jmeter.log。并且在JMeter啟動(dòng)書(shū)目,例如bin。當(dāng)在Windows下運(yùn)行時(shí),假如你不設(shè)置Windows顯示文件擴(kuò)展名,文件名會(huì)僅顯示為JMeter。還有記錄錯(cuò)誤,jmeter.log文件記錄一些測(cè)試運(yùn)行信息。例如:
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日志文件對(duì)發(fā)覺(jué)錯(cuò)誤緣由很有幫助,作為JMeter不會(huì)打斷一個(gè)測(cè)試來(lái)顯示一個(gè)錯(cuò)誤對(duì)話框。2.4.7吩咐行選項(xiàng)書(shū)目調(diào)用JMeter的"jmeter-?"吩咐將打印全部吩咐選項(xiàng)的一個(gè)列表。列表如下:-h,--help打印運(yùn)用信息并退出-v,--version打印版本信息并推出-p,--propfile{argument}運(yùn)用的JMeter屬性文件-q,--addprop{argument}附加的屬性文件-t,--testfile{argument}運(yùn)行的JMeter測(cè)試文件(.jmx)-l,--logfile{argument}日志取樣文件-n,--nongui非用戶界面運(yùn)行JMeter-s,--server運(yùn)行JMeter服務(wù)器-H,--proxyHost{argument}設(shè)置JMeter運(yùn)用的代理服務(wù)器-P,--proxyPort{argument}設(shè)置JMeter運(yùn)用的代理服務(wù)器端口-u,--username{argument}設(shè)置JMeter運(yùn)用的代理服務(wù)器用戶名-a,--password{argument}設(shè)置JMeter運(yùn)用的代理服務(wù)器密碼-J,--jmeterproperty{argument}={value}定義附加的JMeter屬性-D,--systemproperty{argument}={value}定義附加的System屬性-S,--systemPropertyFile{filename}一個(gè)屬性文件被做為系統(tǒng)屬性添加-L,--loglevel{argument}={value}定義日志等級(jí):[category=]level例如jorphan=INFOorjmeter.util=DEBUG-r,--runremote從非用戶界面模式啟動(dòng)遠(yuǎn)程服務(wù)器-d,--homedir{argument}運(yùn)用的JMeter書(shū)目2.5配置JMeter假如你希望變更JMeter運(yùn)行時(shí)的屬性你須要變更在/bin書(shū)目下的perties文件,或者創(chuàng)建你自己的perties文件并且在吩咐行指定它。留意:自從2.1.2,你能夠通過(guò)JMeter屬性perties在文件中定義附加的JMeter屬性,perties默認(rèn)值是perties。假如在當(dāng)前書(shū)目被發(fā)覺(jué),這個(gè)文件被自動(dòng)加載。類(lèi)似的,perties被用來(lái)更新系統(tǒng)屬性。參數(shù):屬性描述viderder。JMeter默認(rèn)供應(yīng)s支持。假如你正在運(yùn)用JDK1.4,或者你運(yùn)用帶JSSE類(lèi)的jar文件在JMeter的classpath里的JDK1.4。.ssl.ProviderJMeter默認(rèn)供應(yīng)s支持是在你運(yùn)用JDK1.4或者你運(yùn)用把JSSE類(lèi)的jar包放到JMeterclasspath中的JDK1.3時(shí)候。xml.parser你可以指明一個(gè)你的XML解析器實(shí)現(xiàn)。默認(rèn)值是:org.apache.xerces.parsers.SAXParserremote_hosts逗號(hào)分割遠(yuǎn)程JMeter主機(jī)列表。假如你在一個(gè)分布式環(huán)境運(yùn)行JMeter,列出你用JMeter遠(yuǎn)程主機(jī)運(yùn)行的機(jī)器。這允許你運(yùn)用機(jī)器的用戶界面限制那些服務(wù)器。not_in_menu在JMeter選項(xiàng)屏中你不想看到的組件列表。假如JMeter被添加越來(lái)越多的組件,你會(huì)希望定制JMeter只出現(xiàn)那些你感愛(ài)好的組件。你可以在這兒列出那些類(lèi)名和他們的類(lèi)標(biāo)簽(JMeter的用戶界面出現(xiàn)的字符串),它們將在選項(xiàng)屏中不出現(xiàn)。search_paths列出那些JMeter搜尋JMeter附加類(lèi)的路徑(以;分割);例如附加的取樣器。被添加到lib/ext書(shū)目的任何jar包都被發(fā)覺(jué)。user.classpathJMeter搜尋的公用類(lèi)庫(kù)的路徑列表。被添加到lib書(shū)目的任何jar包都被發(fā)覺(jué)。perties附加的JMeter屬性文件名。初始化屬性文件后它們被添加,但是在-q和-J選項(xiàng)被處理之前。perties附加的系統(tǒng)屬性文件名。-S和-D選項(xiàng)被執(zhí)行前添加。3.創(chuàng)建一個(gè)測(cè)試安排一個(gè)測(cè)試安排描述了一系列Jmeter運(yùn)行時(shí)要執(zhí)行的步驟。一個(gè)完整的測(cè)試安排包含一個(gè)或者多個(gè)線程組,邏輯限制器,取樣發(fā)生限制,監(jiān)聽(tīng)器,定時(shí)器,斷言和配置元件。3.1添加和刪除元件在一個(gè)樹(shù)上通過(guò)右擊可以添加元件到一個(gè)測(cè)試安排,并且從"添加"列表中選擇一個(gè)新元件。另外,元件可以從文件加載并且通過(guò)選擇"打開(kāi)"選項(xiàng)添加。為了刪除元件,確保元件被選中,正確在元件上右擊,并且選擇"刪除"選項(xiàng)。3.2加載和保存元件為了從文件加載元件,右擊將要加載元件到的已經(jīng)存在的樹(shù)元件,并選擇"打開(kāi)"選項(xiàng)。選擇你的元件保存的文件。JMeter會(huì)加載元件到樹(shù)中。為了保存樹(shù)元件,在一個(gè)元件上右擊,選擇"保存"選項(xiàng)。JMeter會(huì)保存已選的元件,加上全部下面的子元件。用這種方法,你能夠保存測(cè)試樹(shù)的片段,單獨(dú)元件,或者整個(gè)測(cè)試安排。3.3配置樹(shù)元件在測(cè)試樹(shù)中的任何元件都在JMeter的右側(cè)框架顯示配置。那些配置允許你配置測(cè)試元件的細(xì)微環(huán)節(jié)行為,對(duì)于一個(gè)元件什么能被配置依靠于它是一個(gè)什么類(lèi)型的元件。3.4保存測(cè)試安排雖然這不是必需的,我們舉薦你在運(yùn)行前保存測(cè)試安排。為了保存測(cè)試安排,從文件菜單選擇保存測(cè)試安排(運(yùn)用最新版本,你不再須要首先選擇測(cè)試安排元件)。JMeter允許你保存整個(gè)測(cè)試安排樹(shù)或者僅它的一部分。為了僅保存測(cè)試安排樹(shù)中特殊"支"位置的元件,從從這個(gè)"支"起先的地方選擇樹(shù)中的測(cè)試安排元件,然后右擊鼠標(biāo)訪問(wèn)保存菜單項(xiàng)。另外選擇合適的測(cè)試安排元件并從編輯菜單選擇保存。3.5運(yùn)行一個(gè)測(cè)試安排為了運(yùn)行一個(gè)測(cè)試安排,從"運(yùn)行"菜單項(xiàng)選擇"起先"。為了停止你的測(cè)試安排,從同樣的菜單選擇"停止"。JMeter不會(huì)自動(dòng)給它是否正在運(yùn)行任何顯示。假如JMeter運(yùn)行,一些監(jiān)聽(tīng)器使它變明顯,但是唯一確定的方法是檢查"運(yùn)行"菜單。假如"起先"不行用,"停止"可用,證明JMeter正在運(yùn)行你的測(cè)試安排(或者至少它認(rèn)為它是)。有兩個(gè)類(lèi)型的停止吩咐:停止(Control+'.')-馬上停止全部的線程關(guān)閉(Control+',')-懇求全部線程在當(dāng)前任務(wù)結(jié)束后停止3.6元件作用域及執(zhí)行依次3.6.1作用域規(guī)則JMeter中共有8類(lèi)可被執(zhí)行的元件(測(cè)試安排與線程組不屬于元件),這些元件中,取樣器是典型的不與其它元件發(fā)生交互作用的元件,邏輯限制器只對(duì)其子節(jié)點(diǎn)的取樣器有效,而其它元件(config
elements
、timers
、post-processors、assertions、listeners、)須要與取樣器(sampler)等元件交互。配置元件(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)。在jmeter中,元件的作用域是靠測(cè)試安排的的樹(shù)型結(jié)構(gòu)中元件的父子關(guān)系來(lái)確定的,作用域的原則是:
取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問(wèn)題。
邏輯限制器(Logic
Controller)元件只對(duì)其子節(jié)點(diǎn)中的取樣器
和
邏輯限制器作用。
除取樣器
和邏輯限制器
元件外,其他6類(lèi)元件,假如是某個(gè)sampler的子節(jié)點(diǎn),則該元件公對(duì)其父子節(jié)點(diǎn)起作用。
除取樣器和邏輯限制器元件外的其他6類(lèi)元件,假如其父節(jié)點(diǎn)不是sampler
,則其作用域是該元件父節(jié)點(diǎn)下的其他全部后代節(jié)點(diǎn)(包括子節(jié)點(diǎn),子節(jié)點(diǎn)的子節(jié)點(diǎn)等)。
3.6.2元件的執(zhí)行依次了解了元件有作用域之后,來(lái)看看元件的執(zhí)行依次,元件執(zhí)行依次的規(guī)則很簡(jiǎn)潔,在同一作用域名范圍內(nèi),測(cè)試安排中的元件依據(jù)如下依次執(zhí)行。(1)配置元件(config
elements
)(2)前置處理程序(Per-processors)(3)定時(shí)器(timers
)(4)取樣器(Sampler)(5)后置處理程序(Post-processors)
(除非Sampler
得到的返回結(jié)果為空)。(6)斷言(Assertions)(除非Sampler
得到的返回結(jié)果為空)。(7)監(jiān)聽(tīng)器(Listeners)(除非Sampler
得到的返回結(jié)果為空)。
關(guān)于執(zhí)行依次,有三點(diǎn)須要留意:*
前置處理器、后置處理器和斷言等元件只能對(duì)取樣器作用,因此假如在它們的作用域內(nèi)沒(méi)有任何取樣器,則不會(huì)被執(zhí)行。*
假如在同一作用域范圍內(nèi)有多個(gè)同一類(lèi)型的元件,則這些元件依據(jù)它們?cè)跍y(cè)試安排中的上下依次依次執(zhí)行。*
一個(gè)斷言在測(cè)試樹(shù)中是分等級(jí)的。假如它的父元件是懇求,它就被應(yīng)用于那個(gè)懇求。假如它的父元件是限制器,它就影響全部那個(gè)限制器下的全部懇求。懇求的依次是One,Two,Three,F(xiàn)our。一些限制器影響它的子元件的依次,你可以在組件參考讀到特定的限制器。Assertion#1僅被應(yīng)用于懇求One,Assertion#2僅被應(yīng)用于懇求Two和Three。在這個(gè)例子里,懇求的命名表現(xiàn)它們被執(zhí)行的依次。Timer#1應(yīng)用于懇求Two,Three,和Four(留意對(duì)于分等級(jí)的元件怎樣的依次是不相關(guān)的)。Assertion#1應(yīng)用于懇求Three。Timer#2對(duì)全部懇求有效。元件首部管理器,Cookie管理器和授權(quán)管理器的配置和默認(rèn)元件的配置被視為是不同的默認(rèn)元件配置的設(shè)置被并入取樣器可以到達(dá)的一組值里了。然而來(lái)自管理器的設(shè)置沒(méi)有并入。假如多于一個(gè)管理器在一個(gè)取樣器范圍中,僅僅一個(gè)被運(yùn)用,但是現(xiàn)在沒(méi)有方法指定那個(gè)被運(yùn)用。3.7錯(cuò)誤報(bào)告JMeter把警告和錯(cuò)誤信息報(bào)告在jmeter.log文件中,也有一些測(cè)試運(yùn)行本身的信息.只是間或地,JMeter對(duì)于某些錯(cuò)誤是無(wú)法補(bǔ)捉和記錄的,這些信息會(huì)顯示在吩咐臺(tái)上。假如一個(gè)測(cè)試的執(zhí)行并不是你所期盼的,請(qǐng)檢查日志,或許錯(cuò)誤會(huì)被報(bào)告(例如:或許在函數(shù)調(diào)用上有語(yǔ)法錯(cuò)誤)。取樣錯(cuò)誤(例如:404-找不到文件)是不會(huì)被正常的記錄在日志中的,取而代之的,他們會(huì)被當(dāng)作取樣結(jié)果的屬性來(lái)儲(chǔ)存,取樣結(jié)果的狀態(tài)能被很多不同的監(jiān)聽(tīng)器所得到。4.測(cè)試安排元件測(cè)試安排對(duì)象有一個(gè)叫做"功能測(cè)試"復(fù)選框。假如被選擇,它會(huì)使JMeter記錄來(lái)自服務(wù)器返回的每個(gè)取樣的數(shù)據(jù)。假如你在測(cè)試監(jiān)聽(tīng)器中選擇一個(gè)文件,這個(gè)數(shù)據(jù)將被寫(xiě)入文件。假如你嘗試一個(gè)較小的測(cè)試來(lái)保證JMeter配置正確并且你的服務(wù)器正在返回期望的結(jié)果,這是很有用的。這樣的后果就是這個(gè)文件會(huì)快速的增大,并且JMeter的效率會(huì)影響。假如你不做壓力測(cè)試這個(gè)選項(xiàng)應(yīng)當(dāng)關(guān)閉(默認(rèn)關(guān)閉)。假如你不記錄數(shù)據(jù)到文件,這個(gè)選項(xiàng)就沒(méi)有不同了。4.1線程組線程組元件是任何測(cè)試安排的起點(diǎn)。一個(gè)測(cè)試安排的全部元件必需在一個(gè)線程組下。由名字可以看出,線程組元件限制JMeter運(yùn)行測(cè)試時(shí)運(yùn)用的線程數(shù)。線程組管理允許你:設(shè)置線程數(shù)設(shè)置ramp-upperiod設(shè)置執(zhí)行測(cè)試的次數(shù)每個(gè)線程會(huì)作為一個(gè)整體執(zhí)行測(cè)試安排并完全獨(dú)立于他測(cè)試線程。多線程用來(lái)模擬到達(dá)服務(wù)器程序的同步連接。Ramp-upperiod告知JMeter多久起先"ramp-up"選擇的全部線程。假如運(yùn)用10個(gè)線程,ramp-upperiod是100秒,那么JMeter用100秒使全部10個(gè)線程啟動(dòng)并運(yùn)行。每個(gè)線程會(huì)在上一個(gè)線程啟動(dòng)后10秒(100/10)啟動(dòng)。假如有30個(gè)線程和一個(gè)120秒的ramp-upperiod,那么每個(gè)連續(xù)的線程會(huì)延遲4秒。Ramp-up須要要足夠長(zhǎng)以避開(kāi)在啟動(dòng)測(cè)試時(shí)有一個(gè)太大的工作負(fù)載,并且要足夠小以至于最終一個(gè)線程在第一個(gè)完成前啟動(dòng)(除非你想那樣發(fā)生)。運(yùn)用ramp-up=線程數(shù)啟動(dòng),并上下調(diào)整到所需的。默認(rèn),線程組被配置僅循環(huán)一次。1.9版本引入了一個(gè)測(cè)試運(yùn)行*調(diào)度器*。單擊在線程組面板底部的復(fù)選框來(lái)顯示額外的文本域,在里面你可以輸入啟動(dòng)和結(jié)束時(shí)間。當(dāng)測(cè)試啟動(dòng)時(shí),假如必需JMeter會(huì)等待啟動(dòng)時(shí)間到達(dá)。在每個(gè)周期結(jié)束,JMeter檢驗(yàn)結(jié)束時(shí)間是否到達(dá),假如是,運(yùn)行停止,假如不是測(cè)試被允許接著,直到迭代限制到達(dá)。另外你可以運(yùn)用啟動(dòng)延遲和持續(xù)時(shí)間文本域。留意啟動(dòng)延遲會(huì)覆蓋啟動(dòng)時(shí)間,持續(xù)時(shí)間會(huì)覆蓋結(jié)束時(shí)間。4.2限制器JMeter有兩種限制器:取樣器和邏輯限制器。取樣器告知JMeter發(fā)送懇求到服務(wù)器。例如,假如你要JMeter發(fā)送一個(gè)懇求添加一個(gè)懇求取樣器。你也可以通過(guò)添加一個(gè)或者多個(gè)配置元件到一個(gè)取樣器來(lái)定制一個(gè)懇求。更多信息,見(jiàn)取樣器。邏輯限制器讓你定制當(dāng)發(fā)送懇求時(shí)JMeter運(yùn)用的推斷邏輯。例如,你可以添加交替限制器來(lái)在兩個(gè)懇求取樣器之間交替。更多信息,見(jiàn)邏輯限制器。4.2.1取樣器(Sampler)取樣器告知JMeter發(fā)送懇求到服務(wù)器。JMeter取樣器包括:FTP懇求懇求JDBC懇求Javaobject懇求LDAP懇求SOAP/XML-RPC懇求WebService(SOAP)懇求每個(gè)取樣器有一些你可以設(shè)置的屬性。你可以通過(guò)添加一個(gè)或多個(gè)配置元件到取樣器來(lái)進(jìn)一步定制它。留意JMeter發(fā)送懇求依據(jù)取樣器出現(xiàn)在樹(shù)中的依次。假如你想發(fā)送多個(gè)相同類(lèi)型的懇求(例如,Request)到相同的服務(wù)器,可以考慮運(yùn)用一個(gè)默認(rèn)配置元件。每個(gè)限制器有一個(gè)或者多個(gè)默認(rèn)配置元件(見(jiàn)下)。記得添加一個(gè)監(jiān)聽(tīng)器到線程組來(lái)查看/保存你的懇求結(jié)果到磁盤(pán)。假如你對(duì)運(yùn)用JMeter平臺(tái)的基礎(chǔ)驗(yàn)證器到你的懇求響應(yīng)感愛(ài)好,添加一個(gè)斷言到懇求限制器。例如,在壓力測(cè)試一個(gè)web程序時(shí),服務(wù)器會(huì)返回一個(gè)勝利的響應(yīng)代碼,但是這個(gè)頁(yè)面有錯(cuò)誤或者被忽視部分。你可以添加斷言來(lái)檢查某個(gè)HTML標(biāo)簽,一些錯(cuò)誤字符串,等等。JMeter允許你運(yùn)用正則表達(dá)式創(chuàng)建斷言。JMeter內(nèi)建取樣器4.2.2邏輯限制器保持
邏輯限制器讓你定制當(dāng)發(fā)送懇求時(shí)JMeter運(yùn)用的推斷邏輯。邏輯限制器還可以作為下列任何元件的子元件:取樣器(懇求)、配置元件、和其他邏輯限制器。邏輯限制器可以變更來(lái)自它們的子元件的懇求依次。它們可以修改懇求本身,導(dǎo)致JMeter重復(fù)懇求,等。理解邏輯限制器在測(cè)試安排中的效果,考慮下列測(cè)試樹(shù):測(cè)試安排線程組僅一次限制器登錄懇求(一個(gè)懇求)加載搜尋頁(yè)面(取樣器)InterleaveController搜尋"A"(取樣器)搜尋"B"(取樣器)默認(rèn)懇求(配置元件)默認(rèn)懇求(配置元件)Cookie管理器(配置元件)這個(gè)測(cè)試的第一件事就是登錄懇求僅在第一次經(jīng)過(guò)時(shí)被執(zhí)行。隨后的迭代會(huì)忽視它。這應(yīng)運(yùn)用僅一次限制器。登陸后,下一個(gè)取樣器加載搜尋頁(yè)面(假設(shè)一個(gè)用登錄的web應(yīng)用程序,并到達(dá)搜尋頁(yè)面去搜尋)。這僅是一個(gè)簡(jiǎn)潔的懇求,不會(huì)被任何邏輯限制器過(guò)濾。加載搜尋頁(yè)面后,我們要做一個(gè)搜尋。事實(shí)上,我們想做兩個(gè)不同的搜尋。然而,在每個(gè)搜尋之間我們想要自己重新加載搜尋頁(yè)面。我們通過(guò)4個(gè)簡(jiǎn)潔元件這樣做。(loadsearch,search"A",loadsearch,search"B").Instead,weusetheInterleaveControllerwhichpassesononechildrequesteachtimethroughthetest.Itkeepstheordering(ie-itdoesn'tpassoneonatrandom,but"remembers"itsplace)ofitschildelements.Interleaving2childrequestsmaybeoverkill,buttherecouldeasilyhavebeen8,or20childrequests.留意默認(rèn)懇求屬于插入限制器。假如"SearchA"和"SearchB"共享同樣的PATH信息(一個(gè)懇求說(shuō)明中包括域,端口,方法,協(xié)議路徑和參數(shù),附加其他可選項(xiàng))。兩個(gè)搜尋懇求訪問(wèn)同樣的后端搜尋引擎(比方說(shuō)Servle,或者cgi腳本),這樣是說(shuō)得通的。與其兩者都配置運(yùn)用相同信息的取樣器,我們可以抽象那些新到一個(gè)單獨(dú)的配置元件。當(dāng)內(nèi)部限制器通過(guò)"SearchA"或者"SearchB"傳遞時(shí),它會(huì)從默認(rèn)懇求配置元件中獲得值填充空白。所以我們可以為那些懇求保留PATH域?yàn)榭眨缓蟀涯切┬畔⒎诺脚渲迷?。在這個(gè)例子中,這至多是一個(gè)很小的好處,但它顯示了這個(gè)特性。在這個(gè)樹(shù)中下一個(gè)元件是另一個(gè)默認(rèn)懇求,這個(gè)時(shí)間被添加到線程組本身。這個(gè)線程組有一個(gè)內(nèi)建的邏輯限制器,因此它正好運(yùn)用這個(gè)配置元件做為上面的描述。它填充任何穿過(guò)的懇求的空白。在web程序中你全部的取樣器元件DOMAIN域?yàn)榭?,這是極度有用的,替代的,把那些信息放到默認(rèn)懇求元件中,添加到線程組。通過(guò)這樣做,你可以在一個(gè)同的服務(wù)器通過(guò)變更你測(cè)試安排中的一個(gè)域來(lái)測(cè)試你的程序。另外,你必需編輯每個(gè)取樣器。最終一個(gè)元件是一個(gè)Cookie管理器。一個(gè)Cookie管理器應(yīng)當(dāng)添加到全部web測(cè)試上-否則JMeter會(huì)忽視Cookie。通過(guò)在線程組級(jí)添加它,我們可以確定全部的線程共享同樣的Cookie。邏輯限制器可以組合達(dá)到不同的結(jié)果。見(jiàn)內(nèi)建邏輯限制器列表。4.3監(jiān)聽(tīng)器監(jiān)聽(tīng)器供應(yīng)訪問(wèn)JMeter收集當(dāng)JMeter運(yùn)行的關(guān)于測(cè)試安排的信息。圖形結(jié)果監(jiān)聽(tīng)器在一張圖上繪制響應(yīng)時(shí)間。"查看結(jié)果樹(shù)"監(jiān)聽(tīng)器顯示了懇求和響應(yīng)取樣器的細(xì)微環(huán)節(jié),并且以基礎(chǔ)的HTML和XML顯示響應(yīng)表現(xiàn)。其他監(jiān)聽(tīng)器供應(yīng)了摘要或者集合信息。另外,監(jiān)聽(tīng)器可以指導(dǎo)它們收集的數(shù)據(jù)到一個(gè)文件供以后用。在JMeter中每一個(gè)監(jiān)聽(tīng)器供應(yīng)一個(gè)域來(lái)指出存儲(chǔ)數(shù)據(jù)的文件。在測(cè)試中監(jiān)聽(tīng)器可以添加到任何位置。它們僅僅會(huì)從它們等級(jí)或者它們以下等級(jí)的元件收集數(shù)據(jù)。伴隨JMeter有很多好玩的監(jiān)聽(tīng)器。4.4定時(shí)器默認(rèn),JMeter線程發(fā)送懇求時(shí)不在懇求間暫停。我們建議你通過(guò)添加一個(gè)可用的定時(shí)器到你的線程組來(lái)指定一個(gè)延遲。假如你不添加延遲,JMeter會(huì)在短時(shí)間內(nèi)產(chǎn)生太多懇求,可能會(huì)壓倒你的服務(wù)。定時(shí)器會(huì)使JMeter在一個(gè)線程起先每個(gè)懇求間延遲一段時(shí)間。假如你選擇添加多于一個(gè)定時(shí)器到一個(gè)線程組,JMeter會(huì)在執(zhí)行取樣器前獲得定時(shí)器數(shù)量并暫停那個(gè)時(shí)間量。4.5斷言斷言允許你斷言關(guān)于從測(cè)試服務(wù)器收到的響應(yīng)的行為。運(yùn)用斷言你本質(zhì)上你可以測(cè)試你的應(yīng)用程序返回你期望的結(jié)果。例如,你可以斷言一個(gè)查詢的響應(yīng)會(huì)包含一些特殊的文本。你指定的文本可能是Perl風(fēng)格的正則表達(dá)式,并且你可以指出這個(gè)響應(yīng)是包含這個(gè)文本,還是匹配整個(gè)響應(yīng)。你可以添加一個(gè)斷言到任何取樣器。例如你可以添加一個(gè)斷言到懇求檢查文本"</HTML>"。JMeter會(huì)檢查在響應(yīng)中表現(xiàn)的文本。假如JMeter沒(méi)有找到這個(gè)文本,它會(huì)標(biāo)記這個(gè)為一個(gè)失敗的懇求。為了查看斷言結(jié)果,添加一個(gè)斷言監(jiān)聽(tīng)器到線程組。Assertion--斷言,通常是用于對(duì)每一個(gè)requestsampler進(jìn)行額外驗(yàn)證的工具。下面通過(guò)一個(gè)例子來(lái)介紹一下常用的幾個(gè)Assertions。假設(shè)現(xiàn)在要進(jìn)行一個(gè)登陸的壓力測(cè)試,下面是對(duì)pass的幾個(gè)定義:1.正確login后,必需收到返回的身份驗(yàn)證和用戶個(gè)人信息下載的完成信息;2.響應(yīng)時(shí)間不能超過(guò)150毫秒3.返回的結(jié)果大小不能小于750bytes依據(jù)以上的要求,我們?cè)趯?duì)應(yīng)的requestsampler下面添加了以下的Assertions。
A.ResponseAssertion
ResponseFieldtoTest--標(biāo)示被檢查對(duì)象是什么?
PatternMatchingRules--標(biāo)明被檢查對(duì)象與驗(yàn)證內(nèi)容之間的關(guān)系,Contains(包含關(guān)系);Matches(匹配關(guān)系);Equals(相等關(guān)系);Not(非關(guān)系)
PatterntoTest--須要驗(yàn)證的內(nèi)容列表B.DurationAssertion
DurationtoAssert--允許的響應(yīng)時(shí)間的最大值C.SizeAssertion
SizetoAssert--對(duì)于返回結(jié)果文件大小的標(biāo)準(zhǔn)定義
二、結(jié)果分析添加了以上的Assertions后,我運(yùn)行了一次腳本。以下是存放結(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我們可以看到,每一個(gè)Sampler都會(huì)經(jīng)過(guò)Assertions的推斷,只要有一個(gè)不符合條件的都會(huì)標(biāo)示為False。4.6配置元件配置元件協(xié)作取樣器工作。雖然它不發(fā)送懇求(除了代理服務(wù)器),但是它可以添加或者修改懇求。一個(gè)配置元件進(jìn)能訪問(wèn)有所代替元件所在的樹(shù)分支的內(nèi)部。例如,假如你在一個(gè)簡(jiǎn)潔邏輯限制器里面設(shè)置一個(gè)Cookie管理器,Cookie管理器很簡(jiǎn)潔訪問(wèn)"webPage1"和"webPage2"懇求。但是不能訪問(wèn)"webPage3"。同樣,一個(gè)在樹(shù)枝內(nèi)部的配置元件比在父支的同樣元件有更高的優(yōu)先級(jí)。例如,我們定義兩個(gè)默認(rèn)懇求元件,"WebDefaults1"和"WebDefaults2"。假如我們把"WebDefaults1"放置在一個(gè)循環(huán)限制器內(nèi)部,僅"WebPage2"可以訪問(wèn)它。另一懇求會(huì)運(yùn)用"WebDefaults2",假如我們把它放置在線程組(全部其他分支的父支)。圖1-測(cè)試安排展示配置元件的可達(dá)性4.7前置處理器元件前置處理器在取樣器懇求建立前執(zhí)行一些行為。假如前置處理器附屬于取樣器元件,那么它會(huì)僅在那個(gè)取樣器元件運(yùn)行前執(zhí)行。前置處理器最常用來(lái)在取樣懇求運(yùn)行前修改它的設(shè)置,或者更新不能從響應(yīng)文本提取的變量。當(dāng)前置處理器執(zhí)行時(shí),具體信息見(jiàn)作用域規(guī)則。4.8后置處理器元件后置限制器在取樣器懇求建立后執(zhí)行一些行為。假如后置處理器附屬于取樣器元件,那么它會(huì)僅在那個(gè)取樣器元件運(yùn)行后執(zhí)行。后置處理器最常用來(lái)處理響應(yīng)數(shù)據(jù),常用來(lái)從它里面提取數(shù)值。\\\\\\具體見(jiàn)作用域規(guī)則關(guān)于前置處理器執(zhí)行。4.9執(zhí)行依次配額制元件前置處理器定時(shí)器取樣器后置處理器(假如SampleResult不為空)斷言(假如SampleResult不為空)監(jiān)聽(tīng)器(假如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)建一個(gè)Web測(cè)試安排在這一部分,你將學(xué)會(huì)如何創(chuàng)建一個(gè)基礎(chǔ)的測(cè)試安排來(lái)測(cè)試一個(gè)Web站點(diǎn),你將會(huì)創(chuàng)建5個(gè)用戶向Jackrta網(wǎng)站上的兩個(gè)網(wǎng)頁(yè)發(fā)送懇求。同樣,你要告知用戶運(yùn)行測(cè)試兩次。這樣,總的發(fā)送懇求為(5個(gè)用戶*2次懇求*重復(fù)2次)=20。要?jiǎng)?chuàng)建這個(gè)測(cè)試安排,你將會(huì)用到下面的元件:線程組,懇求,懇求默認(rèn)值和圖形結(jié)果。要?jiǎng)?chuàng)建更好的測(cè)試安排,可以參考創(chuàng)建一個(gè)高級(jí)web測(cè)試安排。5.1添加用戶處理每個(gè)JMeter測(cè)試安排的第一步就是添加線程組元件。這個(gè)線程組會(huì)告知JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)當(dāng)發(fā)送懇求的頻率和應(yīng)當(dāng)發(fā)送的數(shù)量。下一步來(lái)添加一個(gè)線程組:首先選擇這個(gè)測(cè)試安排,用鼠標(biāo)右鍵點(diǎn)擊然后在得到的菜單中選擇"添加"-->"線程組"。這時(shí)你應(yīng)當(dāng)看到這個(gè)線程組已經(jīng)在測(cè)試安排下面了,假如沒(méi)有看到,就點(diǎn)擊測(cè)試安排元件綻開(kāi)這個(gè)測(cè)試安排樹(shù)。下一步,你須要修改這些默認(rèn)的屬性。假如你還沒(méi)有選擇線程組元件,則從測(cè)試安排樹(shù)型結(jié)構(gòu)中選擇它。這時(shí)你應(yīng)當(dāng)看到JMeter窗口右邊的線程組限制面板了。
圖5.1.線程組默認(rèn)值首先給這個(gè)線程組起一個(gè)有意義的名字。在名稱域中,輸入JakartaUsers.下一步,增加用戶的數(shù)量(稱為線程)為5。域Ramp-UpPeriod:,運(yùn)用默認(rèn)值為0。這個(gè)屬性表示每個(gè)用戶啟動(dòng)的拖延時(shí)間。例如,假如你輸入Ramp-UpPeriod為5秒,JMeter將會(huì)在5秒結(jié)束前完成啟動(dòng)全部的用戶。所以,假如你有五個(gè)用戶并且Ramp-UpPeriod為五秒,那么起先用戶的延遲就是1秒。(5個(gè)用戶/5秒=1用戶每秒)。假如你設(shè)置其值為0,JMeter將會(huì)馬上啟動(dòng)你全部的用戶。域LoopCount:取消標(biāo)記為"恒久"的復(fù)選框選擇并設(shè)置循環(huán)次數(shù)為2。這個(gè)屬性表示你的測(cè)試的重復(fù)次數(shù)。假如你設(shè)置為1,JMeter將你的測(cè)試只運(yùn)行一次。要讓JMeter不斷的運(yùn)行,你要選擇"恒久"這個(gè)復(fù)選框。在大多數(shù)的應(yīng)用程序中,你須要手動(dòng)來(lái)接受你在限制面板中所做的修改。但在JMeter中,假如你做了修改,限制面板可以自動(dòng)的接受。假如你修改的元件的名字,當(dāng)你離開(kāi)限制面板后樹(shù)型菜單自動(dòng)更新(例如,當(dāng)你選擇另外一個(gè)樹(shù)元件)。見(jiàn)圖5.2為完整的JakartaUsers線程組。
圖5.2.JakartaUsers線程組5.2添加默認(rèn)懇求屬性我們已經(jīng)定義了用戶,現(xiàn)在要定義他們的行為了。在這一部分,你將學(xué)會(huì)對(duì)你的懇求設(shè)置默認(rèn)值。然后在5.3節(jié),用你在這里指定的默認(rèn)設(shè)置來(lái)添加懇求元件。首先選擇JakartaUsers(就是剛才的線程組)元件,右鍵點(diǎn)擊并在彈出的菜單中選擇"添加"-->"配置元件"-->"懇求默認(rèn)值"。然后選擇這個(gè)新元件來(lái)顯示其限制面板(見(jiàn)圖5.3)。
圖5.3.懇求默認(rèn)值跟大多數(shù)的JMeter元件一樣,懇求默認(rèn)值限制面板也有一個(gè)名稱域。在這個(gè)例子中將它保留為默認(rèn)值。下面這個(gè)文本域是Web服務(wù)器的服務(wù)器/IP。對(duì)于你創(chuàng)建的測(cè)試安排,全部的懇求都將發(fā)送到相同的Web服務(wù)器。向這個(gè)域中輸入這個(gè)域名,這是唯一一個(gè)須要我們?nèi)バ薷乃哪J(rèn)值的文本域,其它的文本域都保留它們的默認(rèn)值。懇求默認(rèn)值元件并不告知JMeter來(lái)發(fā)送懇求,它僅僅定義這個(gè)懇求所用的默認(rèn)值。見(jiàn)圖5.4完整的懇求默認(rèn)值元件
圖5.4.測(cè)試安排的默認(rèn)值5.3添加Cookie支持除非你的應(yīng)用程序明確的不運(yùn)用Cookies,幾乎全部的網(wǎng)站應(yīng)用程序都會(huì)運(yùn)用cookie支持。要添加cookie支持,可以簡(jiǎn)潔的在你的測(cè)試計(jì)劃中給每一個(gè)線程組添加一個(gè)Cookie管理器。這樣確保每個(gè)線程組有自己的cookies,但是共享跨越全部的懇求對(duì)象。添加Cookie管理器,簡(jiǎn)潔地選擇這個(gè)線程組,選擇添加-->配置元件-->Cookie管理器,也可以從編輯菜單或通過(guò)右鍵點(diǎn)擊來(lái)實(shí)現(xiàn)添加。5.4添加懇求在這個(gè)測(cè)試安排中,我們須要實(shí)現(xiàn)兩個(gè)懇求。第一個(gè)就是Jakarta網(wǎng)站首頁(yè)(),其次個(gè)就是工程向?qū)ЬW(wǎng)頁(yè)()。JMeter依據(jù)它們?cè)跇?shù)的出現(xiàn)的次序來(lái)發(fā)送懇求。首先給JakartaUsers元件添加第一個(gè)懇求(添加-->取樣器-->懇求)。然后從樹(shù)中選擇懇求元件并修改下列屬性(見(jiàn)圖5.5):(取樣器就是sampler)更改名稱域?yàn)?HomePage"。設(shè)置路徑域?yàn)?/"。記得你不必設(shè)置服務(wù)器名域,因?yàn)槟阋呀?jīng)在默認(rèn)懇求元件中指定了這個(gè)值。
圖5.5.Jakarta首頁(yè)的懇求下一步,添加每二個(gè)懇求并修改下列屬性(見(jiàn)圖5.6):更改名稱域?yàn)?ProjectGuidelines"。設(shè)置路徑域?yàn)?/site/guidelines.html"。
圖5.6.Jakarta工程Guidelines頁(yè)的懇求5.5添加一個(gè)監(jiān)聽(tīng)器來(lái)閱讀/儲(chǔ)存測(cè)試結(jié)果最終一個(gè)須要添加到測(cè)試安排的元件是監(jiān)聽(tīng)器。這個(gè)元件的用途是將全部的懇求結(jié)果存儲(chǔ)在一個(gè)文件中并顯現(xiàn)出數(shù)據(jù)的可視模型。選擇JakartaUsers元件,然后添加一個(gè)"圖形結(jié)果"監(jiān)聽(tīng)器(添加-->監(jiān)聽(tīng)器-->圖形結(jié)果).接著,你須要指定一個(gè)文件路徑和輸出文件名。你可以在文件名域中輸入或選擇閱讀按鈕并選擇一個(gè)路徑然后輸入文件名。
圖5.7.圖像結(jié)果監(jiān)聽(tīng)器5.6登錄一個(gè)web站點(diǎn)在這它不是一個(gè)例子,但是一些網(wǎng)站須要在許可你做某些操作前登錄.在一個(gè)web閱讀器中,登錄會(huì)表現(xiàn)為一個(gè)包含用戶名,密碼和一個(gè)提交按鈕的表單.這個(gè)按鈕產(chǎn)生一個(gè)POST懇求,傳遞表單的值作為參數(shù).It'snotthecasehere,butsomeweb-sitesrequireyoutologinbeforepermittingyoutoperformcertainactions.Inaweb-browser,theloginwillbeshownasaformfortheusernameandpassword,andabuttontosubmittheform.ThebuttongeneratesaPOSTrequest,passingthevaluesoftheformitemsasparameters.在JMeter中這樣做,添加一個(gè)懇求,并設(shè)置為POST方法.你還要通過(guò)表單知道域的名字和目標(biāo)頁(yè)面.通過(guò)查看那登陸頁(yè)面的代碼可以發(fā)覺(jué)它們.TodothisinJMeter,addanRequest,andsetthemethodtoPOST.You'llneedtoknowthenamesofthefieldsusedbytheform,andthetargetpage.Thesecanbefoundoutbyinspectingthecodeoftheloginpage.[假如這比較難做,你可以運(yùn)用JMeter代理記錄器來(lái)記錄登錄依次.Ifthisisdifficulttodo,youcanusetheJMeterProxyRecordertorecordtheloginsequence.]設(shè)置路徑為提交按鈕的目標(biāo).單擊添加按鈕并輸入用戶名和密碼資料.有時(shí)登錄表單包含附加的隱藏域.它們也須要被添加.Setthepathtothetargetofthesubmitbutton.ClicktheAddbuttontwiceandentertheusernameandpassworddetails.Sometimestheloginformcontainsadditionalhiddenfields.Thesewillneedtobeaddedaswell.
Figure5.8.Sampleloginrequest6.創(chuàng)建一個(gè)高級(jí)web測(cè)試安排在這章,你將學(xué)到如何創(chuàng)建高級(jí)測(cè)試安排來(lái)測(cè)試web站點(diǎn)。假如須要一個(gè)基礎(chǔ)的測(cè)試安排例子,見(jiàn)創(chuàng)建一個(gè)web測(cè)試安排。6.1用URL重寫(xiě)處理用戶會(huì)話假如你的web應(yīng)用程序運(yùn)用URL重寫(xiě),而不是cookies保存會(huì)話信息,那么為了測(cè)試你的站點(diǎn)你將須要做一點(diǎn)額外的工作。為了正確響應(yīng)URL重寫(xiě),JMeter須要解析從服務(wù)器得到的HTML并獲得唯一的會(huì)話ID。利用適當(dāng)?shù)腢RL重寫(xiě)修改器來(lái)完成這些。簡(jiǎn)潔地在修改器中輸入你的會(huì)話ID參數(shù)名,它會(huì)找到它并添加它到每一個(gè)懇求。假如懇求已經(jīng)有一個(gè)值,它將會(huì)被替代。假如"緩存會(huì)話Id?"被選中,那么最后創(chuàng)建的會(huì)話ID將被保存,并且假如的上次取樣不包含一個(gè)會(huì)話ID,它將會(huì)被運(yùn)用。URL重寫(xiě)例子下載這個(gè)例子.在圖1中展示了一個(gè)運(yùn)用URL重寫(xiě)的測(cè)試安排。留意URL重寫(xiě)修改器附被添加到簡(jiǎn)潔限制器,因此確認(rèn)它僅影響簡(jiǎn)潔限制器下的懇求.
圖1-測(cè)試樹(shù)在圖2中,我們看到了URL重寫(xiě)修改器的GUI,它僅僅有一個(gè)讓用戶指定會(huì)話ID參數(shù)名的文本域。有一個(gè)復(fù)選框來(lái)指示會(huì)話ID將被化為為路徑(以";"隔開(kāi)),這樣賽過(guò)運(yùn)用一個(gè)懇求參數(shù)。
圖2-懇求參數(shù)6.2運(yùn)用消息頭管理器消息頭管理器允許你定制JMeter在懇求消息頭發(fā)送什么信息。這個(gè)消息頭包括像"User-Agent","Pragma","Referer"等屬性。消息頭管理器像Cookie管理器一樣,假如你因?yàn)橐恍┚売赡悴幌M谀愕臏y(cè)試?yán)餅椴煌膽┣髮?duì)象指定不同的消息頭,可以添加到線程組等級(jí)。7.創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)測(cè)試安排在這一部分,你將學(xué)會(huì)如何去創(chuàng)建一個(gè)基礎(chǔ)的測(cè)試安排來(lái)測(cè)試一個(gè)數(shù)據(jù)庫(kù)服務(wù)器。你會(huì)創(chuàng)建10個(gè)用戶來(lái)給數(shù)據(jù)庫(kù)服務(wù)器發(fā)送2次SQL懇求。同樣,你也可以讓用戶運(yùn)行他們的測(cè)試三次。這樣總的JDBC懇求數(shù)量就是(10用戶)*(2次懇求)*(重復(fù)3次)=60。要構(gòu)建這個(gè)測(cè)試安排,你將會(huì)用到下面的元件:線程組,JDBC懇求,圖形結(jié)果。這個(gè)例子運(yùn)用了MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)。要運(yùn)用這個(gè)驅(qū)動(dòng),它所包涵的.jar文件必需復(fù)制到../lib/directory下(詳情參見(jiàn)JMeter'sClassPath)。7.1添加用戶處理每個(gè)JMeter測(cè)試安排的第一步就是添加線程組元件。這個(gè)線程組會(huì)告知JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)當(dāng)發(fā)送懇求的頻率和應(yīng)當(dāng)發(fā)送的數(shù)量。起先來(lái)添加一個(gè)線程組:首先選擇這個(gè)測(cè)試安排,點(diǎn)擊鼠標(biāo)右鍵得到添加菜單,然后選擇添加-->線程組。這時(shí)你應(yīng)當(dāng)看到這個(gè)線程組已經(jīng)在測(cè)試安排下了,假如沒(méi)有看到,就點(diǎn)擊測(cè)試安排元件綻開(kāi)這個(gè)測(cè)試安排樹(shù)。下一步,你須要修改這些默認(rèn)的屬性。假如你還沒(méi)有選擇線程組元件,則從測(cè)試安排樹(shù)型結(jié)構(gòu)中選擇它。這時(shí)你應(yīng)當(dāng)看到JMeter窗口右邊的線程組限制面板了(見(jiàn)下圖7.1)。
Figure7.1.ThreadGroupwithDefaultValues首先給這個(gè)線程組起一個(gè)有意義的名字。在名稱域中,輸入JDBCUsers。你將須要一個(gè)可用的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)表,和表的用戶運(yùn)用權(quán)限。在這個(gè)例子中,數(shù)據(jù)庫(kù)是'mydb',表名是'Stocks'。接下來(lái),將用戶的數(shù)量(即線程)增加到10。在下一個(gè)Ramp-UpPeriod文本域中,運(yùn)用默認(rèn)值0。這個(gè)屬性表示每個(gè)用戶啟動(dòng)的拖延時(shí)間。例如,假如你輸入Ramp-UpPeriod為5秒,JMeter將會(huì)在五秒結(jié)束前完成啟動(dòng)全部的用戶。所以,假如你有五個(gè)用戶并且Ramp-UpPeriod為五秒,那么啟動(dòng)用戶的延遲就是1秒。(5個(gè)用戶/5秒=1用戶每秒).假如你設(shè)置其值為0,JMeter將會(huì)馬上啟動(dòng)你全部的用戶。最終,輸入循環(huán)次數(shù)為3。這個(gè)屬性告知JMeter你的測(cè)試運(yùn)行多少次。假如你設(shè)置為1,JMeter將你的測(cè)試只運(yùn)行一次。要讓JMeter不斷的運(yùn)行,你要選擇"恒久"這個(gè)復(fù)選框。在大多數(shù)的應(yīng)用程序中,你須要手動(dòng)來(lái)接受你在限制面板中所做的修改。但在JMeter中,假如你做了修改,限制面板可以自動(dòng)的接受。假如你修改的元件的名字,樹(shù)型菜單當(dāng)你離開(kāi)限制面板后自動(dòng)更新。(例如,當(dāng)你選擇另外一個(gè)樹(shù)元件。)見(jiàn)圖7.2完整的JDBCUsers線程組.
圖7.2.JDBCUsers線程組7.2添加JDBC懇求現(xiàn)在我們已經(jīng)定義了用戶,是時(shí)候定義他們。在這一部分,我們將會(huì)具體說(shuō)明JDBC懇求的執(zhí)行。首先選擇JDBC用戶元件,點(diǎn)擊鼠標(biāo)右鍵,得到添加菜單,然后選擇添加-->配置元件-->JDBC連接配置。接著,選擇這個(gè)新元件來(lái)顯示它的限制面板(見(jiàn)圖7.3)。設(shè)定下面的文本域(我們這里假定用一個(gè)名為test的本地MySQL數(shù)據(jù)庫(kù))。綁定到池變量。這須要能夠唯一標(biāo)識(shí)這個(gè)配置。這是用來(lái)被JDBC取樣器識(shí)別這個(gè)配置來(lái)運(yùn)用.數(shù)據(jù)庫(kù)URL:jdbc:mysql://localhost:3306/test用戶名:guest密碼:guest的密碼剩下的域保留默認(rèn)值。
圖7.3.JDBC配置再次選擇JDBC用戶元件。點(diǎn)擊鼠標(biāo)右鍵,得到添加菜單,然后選擇添加-->Sampler-->JDBC懇求。然后,選擇這個(gè)新元件來(lái)顯示其限制面板(見(jiàn)圖7.4)。
圖7.4.JDBC懇求在我們這個(gè)測(cè)試安排中,我們將發(fā)送2個(gè)JDBC懇求。第一個(gè)是向EastmanKodakstock,其次個(gè)是向Pfizerstock(很明顯須要變更這些例子來(lái)適合你的特殊的數(shù)據(jù)庫(kù))。下面有插圖文字說(shuō)明。JMeter發(fā)送懇求的次序就是你向樹(shù)中添加它們的次序。起先編輯下列的屬性(見(jiàn)圖7.5):修改名稱為"Kodak"輸入池名:MySQL(在配置元件里面一樣)輸入SQL查詢字符串域
圖7.5.EastmanKodakstock的JDBC懇求下一步,添加其次個(gè)JDBC懇求并編輯下列的屬性(見(jiàn)圖7.6):修改名字為"Pfizer"輸入SQL查詢字符域
圖7.6.Pfizerstock的JDBC懇求7.4添加一個(gè)監(jiān)聽(tīng)器閱讀/保存測(cè)試結(jié)果你須要添加到你測(cè)試安排的最終元件是一個(gè)監(jiān)聽(tīng)器。這個(gè)元件責(zé)任是儲(chǔ)存全部你的JDBC懇求結(jié)果到文件,并且展示一個(gè)可視數(shù)據(jù)模型。選擇JDBC用戶元件,添加一個(gè)圖形結(jié)果監(jiān)聽(tīng)器(添加-->監(jiān)聽(tīng)器-->圖形結(jié)果)。
圖7.7.圖像結(jié)果監(jiān)聽(tīng)器8創(chuàng)建一個(gè)FTP測(cè)試安排在這章,你將學(xué)習(xí)到如何創(chuàng)建一個(gè)基本的測(cè)試安排來(lái)測(cè)試FTP站點(diǎn)。你將為在O'Reilly的FTP站點(diǎn)上的兩個(gè)文件創(chuàng)建四個(gè)發(fā)送懇求的用戶。同樣,你將告知用戶運(yùn)行測(cè)試兩次。所以整個(gè)測(cè)試數(shù)目是(4個(gè)用戶)*(2個(gè)懇求)*(重復(fù)2次)=16個(gè)FTP懇求。為了構(gòu)造測(cè)試安排,你將須要運(yùn)用下列元件:測(cè)試線程,F(xiàn)TP懇求,F(xiàn)TP默認(rèn)懇求和SplineVisualizer。這個(gè)例子運(yùn)用O'Reilly的FTP站點(diǎn),oro。當(dāng)運(yùn)行這個(gè)例子時(shí)請(qǐng)考慮周到,并且(假如可能)考慮再次運(yùn)行其他FTP站點(diǎn)。8.1添加用戶你想處理每個(gè)JMeter測(cè)試安排的第一步是添加線程組元件。線程組告知JMeter你想模擬的用戶數(shù),用戶發(fā)送懇求的頻率,和發(fā)送懇求的數(shù)量。順便說(shuō)一下,首先選擇測(cè)試安排,右鍵點(diǎn)擊得到"添加"菜單,并且選擇"添加"-->"線程組",通過(guò)這種方式添加線程組?,F(xiàn)在你應(yīng)當(dāng)看到了測(cè)試安排下的線程組元件了。假如你看不到這個(gè)元件,單擊測(cè)試安排元件綻開(kāi)測(cè)試安排樹(shù)。下一步,你須要修改默認(rèn)配置。假如你還沒(méi)有選擇線程組元件,在樹(shù)里選擇它?,F(xiàn)在在JMeter窗口右部你應(yīng)當(dāng)可以看到線程組限制面板。(見(jiàn)下圖8.1)圖8.1運(yùn)用默認(rèn)值的線程組首先給線程組起一個(gè)更加有意義的名字。在名稱域,輸入O'ReillyUsers。下一步,增加用戶數(shù)(稱作線程)到四個(gè)。在下一個(gè)文本域——Ramp-UPPeriod,運(yùn)用默認(rèn)值0秒。這個(gè)屬性告知JMeter啟動(dòng)每個(gè)用戶之間的時(shí)間間隔。例如,你輸入Ramp-UpPeriod為五秒,JMeter將會(huì)在最終5秒結(jié)束前啟動(dòng)全部你的用戶。所以,假如我們有5個(gè)用戶和一個(gè)5秒的Ramp-UpPeriod,那么啟動(dòng)用戶的延遲就是1秒(5用戶/5秒=1用戶每秒)。假如你設(shè)置為那個(gè)值為零,那么JMeter將會(huì)馬上啟動(dòng)所以你的用戶。最終,清除標(biāo)為"恒久"的復(fù)選框,并且在循環(huán)次數(shù)文本域中輸入2。這個(gè)屬性告知JMeter重復(fù)你的測(cè)試的次數(shù)。假如你輸入循環(huán)次數(shù)為0,那么JMeter將會(huì)運(yùn)行你的測(cè)試一次。為了讓JMeter重復(fù)運(yùn)行你的測(cè)試安排,選擇恒久復(fù)選框。在大部分應(yīng)用程序中,你必需在限制面板中手工變更。然而,在JMeter中,限制面板中自動(dòng)接受你做的變更。假如你修改元件名,這個(gè)樹(shù)會(huì)在你離開(kāi)限制面板前自動(dòng)運(yùn)用新的文本更新這個(gè)樹(shù)(例如,當(dāng)你選擇另一個(gè)樹(shù)元件時(shí))。見(jiàn)圖8.2完整的O'ReillyUsers線程組。圖8.2O'ReillyUsers線程組8.2添加默認(rèn)FTP懇求配置既然我們已經(jīng)定義了我們的用戶,是時(shí)間定義他們要執(zhí)行的任務(wù)了。在這一節(jié),你將為你的FTP懇求指定默認(rèn)設(shè)置。然后在8.3節(jié),你將會(huì)添加運(yùn)用你在這里指定的一些默認(rèn)設(shè)置的FTP懇求元件。首先選擇O'ReillyUsers元件。右鍵點(diǎn)擊得到"添加"菜單,然后選擇"添加"-->"配置元件"-->"FTP默認(rèn)懇求"。于是選擇新的元件預(yù)覽它的限制面板(見(jiàn)圖8.3)。圖8.3FTP默認(rèn)懇求像大多數(shù)JMeter元件一樣,F(xiàn)TP默認(rèn)懇求限制面板有一個(gè)你可以修改的名稱域。在這個(gè)例子里,保持這個(gè)文本域運(yùn)用默認(rèn)值。忽視下一個(gè)文本域,它是FTP服務(wù)器的服務(wù)器名/IP。為了你正在構(gòu)建的測(cè)試安排,全部的FTP懇求將會(huì)發(fā)送到相同的FTP服務(wù)器,ftp.oro。輸入域名到這個(gè)文本域。這是唯一一個(gè)須要我們?nèi)バ薷乃哪J(rèn)值的文本域,所以保持剩余的文本域運(yùn)用它們的默認(rèn)值。FTP默認(rèn)懇求元件沒(méi)有告知JMeter發(fā)送一個(gè)FTP懇求。它只是簡(jiǎn)潔定義了FTP懇求元件運(yùn)用的默認(rèn)值。見(jiàn)圖8.4完整的FTP默認(rèn)懇求元件。圖8.4我們測(cè)試安排的FTP默認(rèn)8.3添加FTP懇求在我們的測(cè)試安排中,我們須要制作兩個(gè)FTP懇求。第一個(gè)是O'Reilly下的mSQL下的java下README文件(ftp://),第一個(gè)文件是tutorial文件(/msql/java/tutoria
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 車(chē)間職工安全培訓(xùn)試題含完整答案【典優(yōu)】
- 企業(yè)管理人員安全培訓(xùn)試題帶答案(考試直接用)
- 新疆兵地聯(lián)盟2024-2025學(xué)年高一上學(xué)期期中聯(lián)考數(shù)學(xué)試卷(無(wú)答案)
- 關(guān)于青少年遭遇暴力傷害的調(diào)查問(wèn)卷
- 行業(yè)協(xié)會(huì)股東協(xié)議書(shū)的框架
- 醫(yī)療行業(yè)設(shè)備耗材智能計(jì)量方案
- 產(chǎn)品設(shè)計(jì)的程序與方法培訓(xùn)
- 學(xué)校食堂火災(zāi)安全應(yīng)急方案
- 培訓(xùn)機(jī)構(gòu)自然災(zāi)害應(yīng)急預(yù)案
- 高三2024年班主任工作總結(jié)(32篇)
- 居住建筑戶型分析
- 機(jī)電一體化職業(yè)生涯
- 中國(guó)電信新疆公司競(jìng)聘考試試題
- 婦科護(hù)理進(jìn)修匯報(bào)
- 新團(tuán)員團(tuán)課培訓(xùn)課件
- 學(xué)?;@球教練外聘協(xié)議書(shū)
- 工作流程改進(jìn)匯報(bào)
- 浙教版六年級(jí)勞動(dòng)項(xiàng)目三-任務(wù)二《創(chuàng)意班規(guī)巧設(shè)計(jì)》課件
- 高思學(xué)校競(jìng)賽數(shù)學(xué)課本五年級(jí)
- 油田開(kāi)發(fā)方案及調(diào)整方案經(jīng)濟(jì)評(píng)價(jià)技術(shù)要求
- 康復(fù)科常見(jiàn)疾病護(hù)理常規(guī)2023版
評(píng)論
0/150
提交評(píng)論