

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JMeter中文使用手冊1. 簡介ApacheJMeter是100%屯java桌面應(yīng)用程序,被設(shè)計(jì)用來測試C/S結(jié)構(gòu)的軟件(例如web應(yīng)用程序)。它可以被用來測試包括基于靜態(tài)和動(dòng)態(tài)資源程序的性能,例如靜態(tài)文件,JavaServlets,Java對(duì)象,數(shù)據(jù)庫,F(xiàn)TP服務(wù)器等等。JMeter可以用來模擬一個(gè)在服務(wù)器、網(wǎng)絡(luò)或者對(duì)象上大的負(fù)載來測試或者分析在不同的負(fù)載類型下的全面性能。另外,JMeter能夠通過讓你們用斷言創(chuàng)造測試腳本來驗(yàn)證我們的應(yīng)用程序是否返回了我們期望的結(jié)果,從而幫助我們回歸測試我們的程序。為了最大的靈活性,JMeter允許我們使用正則表達(dá)式創(chuàng)建斷言。1.1歷史Apache軟件組織
2、的StefanoMazzocchi是JMeter的創(chuàng)始人。他寫出它起初是為了測試ApacheJServ的性能(一個(gè)已經(jīng)被ApacheTomcat工程所替代的工程)。我們重新設(shè)計(jì)JMeter來增強(qiáng)用戶界面和增加功能測試的能力。1.2未來我們希望看到作為幵發(fā)者利用它的可插入架構(gòu)使JMeter的功能快速擴(kuò)展。未來發(fā)展的主要目標(biāo)是在沒有危機(jī)JMeter的負(fù)載測試能力的情況下盡可能使JMeter成為最實(shí)用的回歸測試工具。2. 入門幵始使用JMeter最容易的方法是首先下載最新版并且安裝它。這個(gè)版本包含所有你在構(gòu)建和運(yùn)行WebFTP,JDBC和JNDI測試時(shí)使用的所有文件。如果你想執(zhí)行JDBC測試,你當(dāng)然
3、需要從廠商得到適當(dāng)?shù)腏DBC驅(qū)動(dòng)。JMeter沒有提供任何JDBC驅(qū)動(dòng)。其它你可能需要下載的軟件:BeanShell:JavaActivationFramework-JavaMail需要:JavaMail-mail顯示andSOAP測試需要:JMS-JMS取樣器:GeneralJavadownloadpage:詳細(xì)參見安裝的jar包中的JMeterClasspath一章?下一步,幵始使用JMeter并且參見用戶手冊構(gòu)建測試計(jì)劃一章使自己更加熟悉JMeter基礎(chǔ)(例如,添加和刪除元素)。最后,參見如何構(gòu)建一個(gè)明確類型的測試用例的適合章節(jié)。例如,如果你對(duì)Web應(yīng)用測試感興趣,那就參見構(gòu)建一個(gè)Web
4、測試計(jì)劃。其他測試計(jì)劃的細(xì)節(jié)是JDBC,FTP,andJNDI。一旦你熟練構(gòu)建和執(zhí)行JMeter測試計(jì)劃,通過你的測試計(jì)劃你會(huì)觀察到給你更多幫助的各種元素的配置(定時(shí)器,監(jiān)聽器,斷言,和其他)。2.1需求JMeter需要運(yùn)行環(huán)境匹配的最小需求。2.1.1 Java版本JMeter需要一個(gè)完整適當(dāng)?shù)腏VM1.3或更高的版本.我們現(xiàn)在盡力與JVM1.3保持兼容,然而JMeter在1.4或者更高運(yùn)行的會(huì)最好。因?yàn)镴Meter僅使用Java標(biāo)準(zhǔn)API,請不要把因?yàn)镴RE實(shí)現(xiàn)版本而無法運(yùn)行JMeter的bug報(bào)告提交。Java1.3不包括SSL(HTTPS)支持-你將需要下載JSSE.同樣,它不會(huì)像其他
5、更高版本的Java那樣好的運(yùn)行。為了更好的結(jié)果使用Java1.4或者1.5。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)被測試:9Unix(Solaris,Linux,等)?Windows(98,NT,2000,xp)9OpenVMSAlpha7.3+2.2可選如果你計(jì)劃做JMeter幵發(fā)或者想使用SUN的java標(biāo)準(zhǔn)擴(kuò)展包,你將需要下列更多的可選包。2.2.1 Java編譯器如果你想編譯JMeter源代碼或者幵發(fā)JMeter插件,你將需要一個(gè)完整的適當(dāng)?shù)腏DK1.3或者更高。2.2.2 SAXX
6、ML解析器JMeter使用Apache'sXercesXML解析器你可以選擇告訴JMeter使用一個(gè)不同的XML解析器。這樣做,把第三方的解析器的類包包含在JMeter的classpath中,并更新perties文件里的解析器實(shí)現(xiàn)的全類名。2.2.3 Email支持JMeter有有限的Email能力。它能夠發(fā)送給你測試結(jié)果的email,并且支持POP/IMAP取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email,需要添加Sun的JavaMail包和activation包到JMeterclasspath。2.2.4 SSL力口密為了測試一個(gè)使用SSL加密(HPPS
7、的web服務(wù)器,JMeter需要一個(gè)提供SSL實(shí)現(xiàn)(例如Sun的JavaSecureSocketsExtension-JSSE)。包含需要的加密包到JMeter的classpath。同樣,通過注冊SSL提供者更新perties。為了更好的管理證書,也要有一個(gè)SSL管理器。注意如果你在JDK1.4上運(yùn)行,你將不需要下載JSSE因?yàn)镾UN已經(jīng)集成它到JDK1.4中做為標(biāo)準(zhǔn)類庫了。JMeter代理服務(wù)器(見下)不支持記錄SSL(https)。2.2.5 JDBC驅(qū)動(dòng)你需要添加你的廠商的JDBC驅(qū)動(dòng)到classpath,如果你需要JDBC測試.確認(rèn)文件是一個(gè)jar文件,而不是zip
8、。2.2.6 ApacheSOAPApacheSOAP需要mail.jar和activation.jar.你需要下載并拷貝兩個(gè)jar文件到你jmeter/lib目錄.一旦文件放到那里,JMeter會(huì)自動(dòng)找到它們。詳細(xì)參見安裝的jar包中的JMeterClasspath一章2.3安裝快速安裝JMeter。細(xì)節(jié)依賴你下載的發(fā)布文件。注意避免在一個(gè)有空格的路徑安裝JMeter。這將導(dǎo)致遠(yuǎn)程測試出現(xiàn)問題。2.3.1下載最新版本我們推薦大多數(shù)用戶運(yùn)行最新版本。要安裝一個(gè)構(gòu)建版本,簡單解壓zip/tar文件到你想安裝JMeter的目錄。保證一個(gè)JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOME其它
9、不需要做什么了。232下載夜晚構(gòu)建如果你不介意使用beta版軟件,你可以下載運(yùn)行最新夜晚構(gòu)建。要安裝一個(gè)夜晚構(gòu)建,解壓_bin和ibzip/tar文件到相同的目錄結(jié)構(gòu)。保證一個(gè)JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOMEJMeter就可以正確的運(yùn)行了。2.4運(yùn)行JMeter要運(yùn)行JMeter,運(yùn)行jmeter.bat(forWindows)或者jmeter(forUnix)文件。JMeter必須從JMeter的bin目錄(那些文件沒有發(fā)現(xiàn)的地方)啟動(dòng)。如果jmeter.bat文件能夠的話,它試圖改變到一個(gè)適當(dāng)?shù)哪夸洝?.4.1JMeterClasspathJMeter自動(dòng)從在它的
10、/lib和/lib/ext目錄中的jar包發(fā)現(xiàn)類。如果你幵發(fā)新的JMeter組件,你可以壓縮它們成jar包并拷貝到JMeter的/lib/ext目錄。JMeter將會(huì)自導(dǎo)發(fā)現(xiàn)在這里的任何jar包的JMeter組件。如果你不想把擴(kuò)展jar包放至Ulib/ext目錄,可以在perties中定義search_paths屬性。不要使用lib/ext給那些有用的jar包;它僅僅是存放JMeter組件。其他jar包(例如JDBC,和任何JMeter代碼需要支持的類庫)應(yīng)該被代替放在lib目錄。注意JMeter會(huì)發(fā)現(xiàn).jar文件,而不是.zip文件。你可以在$JAVA_HOME/jre/
11、lib/ext安裝有用的jar文件,或者(自從2.1.1版本)你可以在perties中設(shè)置user.classpath屬性。注意設(shè)置CLASSPATH環(huán)境變量將不起作用。這是因?yàn)镴Meter使用"java-jar"啟動(dòng),并且java命令無記錄忽略CLASSPATH量,并且當(dāng)使用-jar選項(xiàng)時(shí)-classpath/-cp選項(xiàng)也被使用。所有的java程序都是這樣,不僅僅是JMeter。242使用代理服務(wù)器如果你在防火墻/代理服務(wù)器后測試,你需要提供給JMeter防火墻/代理服務(wù)器的主機(jī)名和端口號(hào)。這樣做,從命令行使用以下參數(shù)運(yùn)行jmeter.bat/jmet
12、er文件:-H代理服務(wù)器主機(jī)名或者ip地址-P代理服務(wù)器端口-N非代理主機(jī)(例如:*.|localhost)-u代理證書用戶名-如果需要-a代理證書密碼-如果需要例如或者,你使用-proxyHost,-proxyPort,-username,and-passwordJMeter也有自己的內(nèi)建HTTP代理服務(wù)器,來記錄HTTP(不是HTTPS)瀏覽器會(huì)話。這是和上面的代理設(shè)置描述不混淆的,它是在JMeter發(fā)出HTTP或者HTTPS青求時(shí)使用的。243非用戶界面模式(命令行模式)為了不相互影響測試,你可以選擇運(yùn)行沒有用戶界面的JMeter。這樣做,使用下列命令選項(xiàng):-n這是指
13、定JMeter在非用戶界面模式運(yùn)行-t包含測試計(jì)劃的JMX文件的名字-l記錄取樣結(jié)果的JTL文件的名字-r運(yùn)行在perties文件里所有的遠(yuǎn)程服務(wù)器(或者通過在命令行覆蓋屬性指定遠(yuǎn)程服務(wù)器)這個(gè)腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H代理服務(wù)器主機(jī)名或者ip地址-P代理服務(wù)器端口例如244服務(wù)器模式為了分布測試,在服務(wù)器模式運(yùn)行JMeter,并且通過用戶界面控制每一臺(tái)服務(wù)器。jmeter-server/jmeter-server.bat腳本使用適當(dāng)?shù)腸lasspath為你幵始遠(yuǎn)程注冊。如果失敗,參見關(guān)于JMeter服務(wù)器啟動(dòng)細(xì)節(jié)。,加上下列選項(xiàng)命令:運(yùn)行jmet
14、er-server/jmeter-server.bat這個(gè)腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:-H代理服務(wù)器主機(jī)名或者ip地址-P代理服務(wù)器端口例如2.4.5通過命令行覆蓋屬性Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過命令行直接覆蓋(代替更改perties文件)這樣做,使用下列選項(xiàng):-Dprop_name二value-定義一個(gè)java系統(tǒng)屬性值。-Jpropname二value-覆蓋一個(gè)JMeter屬性。-Lcategory二priority-覆蓋一個(gè)日志設(shè)置,設(shè)置一個(gè)特殊目錄為給定的優(yōu)先級(jí)。-L標(biāo)志也可以使用沒有目錄名來設(shè)置根目錄日志等級(jí)。例如:j
15、meter-Duser.dir二/home/mstover/jmeter_stuffjmeter-LDEBUG注意命令行參數(shù)在啟動(dòng)時(shí)較早被處理,但是在日志系統(tǒng)被設(shè)置以后。嘗試使用-J標(biāo)志更新log_level或者log_file屬性無效。246日志和錯(cuò)誤信息如果JMeter發(fā)現(xiàn)一個(gè)錯(cuò)誤,一個(gè)消息將被寫入日志文件。日志文件名在perties文件中定義。一般定義為jmeter.log。并且在JMeter啟動(dòng)目錄,例如bin。當(dāng)在Windows下運(yùn)行時(shí),如果你不設(shè)置Windows顯示文件擴(kuò)展名,文件名會(huì)僅顯示為JMeter。你可以做一些事都很容易地發(fā)現(xiàn)偽裝成文本文件的病毒和垃圾文
16、件還有記錄錯(cuò)誤,jmeter.log文件記錄一些測試運(yùn)行信息。例如:日志文件對(duì)發(fā)現(xiàn)錯(cuò)誤原因很有幫助,作為JMeter不會(huì)打斷一個(gè)測試來顯示一個(gè)錯(cuò)誤對(duì)話框。247命令行選項(xiàng)目錄調(diào)用JMeter的"jmeter-?"命令將打印所有命令選項(xiàng)的一個(gè)列表。列表如下:-h,-help打印使用信息并退出-v,-version打印版本信息并推出-p,-propfileUnknownmacro:argument使用的JMeter屬性文件-q,-addprop附加的屬性文件-t,-testfileUnknownmacro:argument運(yùn)行的JMeter測試文件(.jmx)-l,-logfi
17、le日志取樣文件-n,-nongui非用戶界面運(yùn)行JMeter-s,-server運(yùn)行JMeter服務(wù)器-H,-proxyHostUnknownmacro:argument設(shè)置JMeter使用的代理服務(wù)器-P,-proxyPort設(shè)置JMeter使用的代理服務(wù)器端口-u,-usernameUnknownmacro:argument設(shè)置JMeter使用的代理服務(wù)器用戶名-a,-password設(shè)置JMeter使用的代理服務(wù)器密碼-J,-jmeterpropertyUnknownmacro:argumentUnknownmacro:value定義附加的JMeter屬性-D,-systemprope
18、rtyUnknownmacro:value定義附加的System屬性-S,-systemPropertyFileUnknownmacro:filename一個(gè)屬性文件被做為系統(tǒng)屬性添加-L,-loglevelUnknownmacro:argument定義日志等級(jí):category二level例如jorphan=INFOorjmeter.util二DEBUG-r,-runremote從非用戶界面模式啟動(dòng)遠(yuǎn)程服務(wù)器-d,-homedirUnknownmacro:argument使用的JMeter目錄2.5配置JMeter如果你希望改變JMeter運(yùn)行時(shí)的屬性你需要改變在/bin目錄的jmeter.
19、properties文件,或者倉U建你自己的perties文件并且在命令行指定它。注意自從2.1.2,你能夠通過JMeter屬性perties在文件中定義附加的JMeter屬性,perties默認(rèn)值是perties。如果在當(dāng)前目錄被發(fā)現(xiàn),這個(gè)文件被自動(dòng)加載。類似的,perties被用來更新系統(tǒng)屬性。參數(shù)屬性描述vider你可以為你的SSL實(shí)現(xiàn)指定類。如果你想使用來自sun的JSSE是這樣:No。JMeter默認(rèn)提供https支持是在你使用JDK1.4或者你使用把JSSE類的jar包放到JMet
20、erclasspath中的JDK1.3時(shí)候。Noxml.parser你可以指明一個(gè)你的XML解析器實(shí)現(xiàn)。默認(rèn)值是:Noremote_hosts逗號(hào)分割遠(yuǎn)程JMeter主機(jī)列表。如果你在一個(gè)分布式環(huán)境No運(yùn)行JMeter,列出你用JMeter遠(yuǎn)程主機(jī)運(yùn)行的機(jī)器。這允許你使用機(jī)器的用戶界面控制那些服務(wù)器。not_in_menu在JMeter選項(xiàng)屏中你不想看到的組件列表。如果JMeter被添加越來越多的組件,你會(huì)希望定制JMeter只出現(xiàn)那些你感興趣的組件。你可以在這兒列出那些類名和他們的類標(biāo)簽(JMeter的用戶界面出現(xiàn)的字符串),它們將在選項(xiàng)屏中不出現(xiàn)。Nosearch_paths列出那些JMe
21、ter搜索JMeter附加類的路徑(以;分割);例如增加的取樣器。被添加到lib/ext目錄的任何jar包都被發(fā)現(xiàn)。Nouser.classpathJMeter搜索的有用類庫的路徑列表。被添加到lib目錄的任何jar包都被發(fā)現(xiàn)。Nperties附加的JMeter屬性文件名。初始化屬性文件后它們被添加,但是在-q和-J選項(xiàng)被處理之前。Nperties附加的系統(tǒng)屬性文件名。-S和-D選項(xiàng)被執(zhí)行前被添加。No又見perties文件注釋,在你改變其它設(shè)置時(shí)會(huì)給你更多的信息。3. 創(chuàng)建一個(gè)測試計(jì)劃一個(gè)測試計(jì)劃描述了一系列Jmeter運(yùn)行時(shí)要執(zhí)行
22、的步驟。一個(gè)完整的測試計(jì)劃包含一個(gè)或者多個(gè)線程組,邏輯控制,取樣發(fā)生控制,監(jiān)聽器,定時(shí)器,斷言和配置元件。3.1添加和刪除元件在一個(gè)樹上通過右擊可以添加元件到一個(gè)測試計(jì)劃,并且從"list"列表中選擇一個(gè)新元件?;蛘?,元件從文件加載并且通過選擇"open"選項(xiàng)添加。為了刪除元件,確保元件被選中,正確在元件上右擊,并且選擇"remove"選項(xiàng)。3.2加載和保存元件為了從文件加載元件,右擊將要加載元件到的已經(jīng)存在的樹元件,并選擇"open"選項(xiàng)。選擇你的元件保存的文件。JMeter會(huì)加載元件到樹中。為了保存樹元件,在一
23、個(gè)元件上右擊,選擇"save"選項(xiàng)。JMeter會(huì)保存已選的元件,加上所有下面的子元件。用這種方法,你能夠保存測試樹段,單獨(dú)元件,或者這個(gè)測試計(jì)劃。3.3配置樹元件在測試樹中的任何元件控制在JMeter的右手結(jié)構(gòu)。那些控制允許你配置測試元件的細(xì)節(jié)行為,什么被配置為一個(gè)依賴元件類型的元件。可以通過拖拉測試樹周圍的元件操作測試樹。3.4運(yùn)行一個(gè)測試計(jì)劃為了運(yùn)行一個(gè)測試計(jì)劃,從"run"菜單項(xiàng)選擇"start"。為了停止你的測試計(jì)劃,從同樣的菜單選擇"stop"0JMeter不會(huì)自動(dòng)給它是否正在運(yùn)行任何顯示。如果JMet
24、er運(yùn)行,一些監(jiān)聽器使它變明顯,但是唯一確定的方法是檢查"run"菜單。如果"start"不可用,"stop"可用,證明JMeter正在運(yùn)行你的測試計(jì)劃(或者,至少,它認(rèn)為它是)。3.5作用域規(guī)則jmeter測試樹包含元件總是分等級(jí)和順序的。在測試樹中的一些元件是嚴(yán)格分級(jí)(監(jiān)聽器,配置元素,后置處理器,前置處理器,斷言,定時(shí)器),一些主要是順序的(控制器,取樣器)。當(dāng)你創(chuàng)建你的測試計(jì)劃時(shí),你將創(chuàng)建一個(gè)描述被執(zhí)行的步驟集的取樣請求有序列表。那些請求常組織在也有序的控制器中。給出如下測試樹:Exampletesttree請求的順序是One
25、,Two,Three,Four。一些控制器影響它的子元件的順序,你可以在組件參考看到詳細(xì)的控制器。其他元素是分等級(jí)的。例如,一個(gè)斷言在測試樹中是分等級(jí)的。如果你的父元件是請求,它就被應(yīng)用于那個(gè)請求。如果它的父元件是控制器,它就影響所有那個(gè)控制器下的所有請求。如下測試樹:HierarchyexampleAssertion#1僅被應(yīng)用于請求One,Assertion#2僅被應(yīng)用于請求Two和Three。其它例子,這次使用定時(shí)器:complexexample在這個(gè)例子里,請求的命名表現(xiàn)它們被執(zhí)行的順序。Timer#1應(yīng)用于請求Two,Three,和Four(注意對(duì)于分等級(jí)的元件怎樣的順序是不相關(guān)的)
26、。Assertion#1應(yīng)用于請求Three。Timer#2對(duì)所有請求有效。希望那些例子使你弄清了配置(分等級(jí)的)元件如何被應(yīng)用。如果你想每個(gè)請求都被樹分叉拒絕,到它的父元件,到它的父元件的父元件,等等,每次收集所有它的父元件的配置元件,你將看到它如何工作的。元件HeaderManager,CookieManager和Authorizationmanager的配置和默認(rèn)元件的配置被視為是不同的。默認(rèn)元件配置的設(shè)置并入取樣器到達(dá)的值的集里。然而來自管理器的設(shè)置沒有并入。如果多于一個(gè)管理器在一個(gè)取樣器范圍中,僅僅一個(gè)被使用,但是現(xiàn)在沒有辦法指定那個(gè)被使用。Comments(Hide)3.6 Err
27、orreporting3.6錯(cuò)誤報(bào)告JMeterreportswarningsanderrorstothejmeter.logfile,aswellassomeinformationonthetestrunitself.JustoccaisionallytheremaybesomeerrorsthatJMeterisunabletotrapandlog;thesewillappearonthecommandconsole.Ifatestisnotbehavingasyouexpect,pleasecheckthelogfileincaseanyerrorshavebeenreported(e.
28、g.perhapsasyntaxerrorinafunctioncall).JMeter把警告和錯(cuò)誤訊息回報(bào)在jmeter.log這個(gè)檔案中,就像測試本身在執(zhí)行時(shí)產(chǎn)生的某些資訊。只是偶爾地,JMeter對(duì)於某些錯(cuò)誤是無法補(bǔ)捉和記錄的,這些資訊都會(huì)顯示在執(zhí)行命令臺(tái)上。如果一個(gè)測試的執(zhí)行并不是你所期待的,那麼當(dāng)錯(cuò)誤發(fā)生時(shí),請你檢查記錄檔(例如:也許在函數(shù)的調(diào)用上有語法上的錯(cuò)誤)。Samplingerrors(e.g.HTTP404-filenotfound)arenotnormallyreportedinthelogfile.Insteadthesearestoredasattributesoft
29、hesampleresult.ThestatusofasampleresultcanbeseeninthevariousdifferentListeners.取樣錯(cuò)誤(例如:HTTP404-找不到檔案)是不會(huì)被正常的記錄在記錄檔中的,取而代之的,他們會(huì)被當(dāng)作取樣結(jié)果的屬性來儲(chǔ)存,取樣結(jié)果的狀態(tài)能被許多不同的監(jiān)聽器所得知。4. 測試計(jì)劃元件測試計(jì)劃對(duì)象有一個(gè)叫做"功能測試"復(fù)選框。如果被選擇,它將導(dǎo)致JMeter記錄來自服務(wù)器返回的每個(gè)取樣的數(shù)據(jù)。如果你在你的測試監(jiān)聽器中選擇一個(gè)文件,這個(gè)數(shù)據(jù)將被寫入文件。你嘗試一個(gè)小的運(yùn)行來保證JMeter配置正確并且你的服務(wù)器正在返回期望
30、的結(jié)果是很有用的。4.8后置處理器元件一個(gè)后置控制器在一個(gè)取樣器請求被建立后執(zhí)行一些操作。如果一個(gè)后置處理器附屬于一個(gè)取樣器元件,它僅在取樣器元件運(yùn)行后執(zhí)行。后置處理器最多用來處理響應(yīng)數(shù)據(jù),常用來從它里面摘錄數(shù)值見范圍規(guī)則關(guān)于前置處理器執(zhí)行細(xì)節(jié)4.9執(zhí)行順序1. 定時(shí)器-任何個(gè)2. 取樣器3. 后置處理器(如果SampleResult不為空)4. 斷言(如果SampleResult不為空)5. 監(jiān)聽器(如果SampleResult不為空)5. 創(chuàng)建一個(gè)網(wǎng)站測試計(jì)劃在這一部分,你將學(xué)會(huì)如何創(chuàng)建一個(gè)基礎(chǔ)的測試計(jì)劃來測試網(wǎng)站,你將會(huì)創(chuàng)建5個(gè)用戶向Jackrta網(wǎng)站上的兩個(gè)網(wǎng)頁發(fā)送請求。當(dāng)然,你也可以
31、讓每個(gè)用戶發(fā)送兩次。這樣,總的HTTP發(fā)送請求為(5個(gè)用戶*2次請求*重復(fù)2次)=20。要構(gòu)建這個(gè)測試計(jì)劃,你將會(huì)用來下面的元素:線程組,HTTP請求,HTTP請求默認(rèn)值和圖形結(jié)果。要?jiǎng)?chuàng)建更好的測試計(jì)劃,可以參考創(chuàng)建一個(gè)高級(jí)的測試計(jì)劃網(wǎng)站。5.1添加用戶處理每個(gè)JMeter測試計(jì)劃的第一步就是添加線程組元件。這個(gè)線程組會(huì)告訴JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)該發(fā)送請求的頻率和應(yīng)該發(fā)送的數(shù)量。進(jìn)一步來添加一個(gè)線程組:首先選擇這個(gè)測試計(jì)劃,用鼠標(biāo)右鍵點(diǎn)擊然后在得到的菜單中選擇添加->線程組這時(shí)你應(yīng)該看到這個(gè)線程組已經(jīng)在測試計(jì)劃下面了,如果沒有看到,就點(diǎn)擊測試計(jì)劃元件展幵這個(gè)測試計(jì)劃樹。
32、下一步,你需要修改這些默認(rèn)的屬性。如果你還沒有選擇線程組元件,則從測試計(jì)劃樹型結(jié)構(gòu)中選擇它。這時(shí)你應(yīng)該看到JMeter窗口右邊的線程組控制面板了。圖5.1.線程組默認(rèn)值首先給這個(gè)線程組起一個(gè)有意義的名字。在名稱域中,輸入JakartaUsers.下一步,增加用戶的數(shù)量為5。在下一個(gè)theRamp-UpPeriod文本域中,使用默認(rèn)值為0。這個(gè)屬性表示每個(gè)用戶啟動(dòng)的遲延時(shí)間。例如,如果你輸入Ramp-UpPeriod為5秒,JMeter將會(huì)在五秒結(jié)束前完成啟動(dòng)所有的用戶。所以,如果你有五個(gè)用戶并且Ramp-UpPeriod為五秒,那么幵始用戶的延遲就是1秒。(5個(gè)用戶/5秒二1用戶每秒).JMe
33、ter將會(huì)立即啟動(dòng)你所有的用戶,如果你設(shè)置其值為0。最后,取消標(biāo)記為"永遠(yuǎn)"的復(fù)選框選擇并設(shè)置循環(huán)次數(shù)為2。這個(gè)屬性表示你的測試的重復(fù)次數(shù)。如果你設(shè)置為1,JMeter將你的測試只運(yùn)行一次。要讓JMeter不斷的運(yùn)行,你要選擇"永遠(yuǎn)"這個(gè)復(fù)選框。在大多數(shù)的應(yīng)用程序中,你需要手動(dòng)來接受你在控制面板中所做的修改。但在JMeter中,如果你做了修改,控制面板可以自動(dòng)的接受。如果你修改的元件的名字,樹型菜單自動(dòng)更新當(dāng)你離幵控制面板后。(例如,當(dāng)你選擇另外一個(gè)樹元件。)圖5.2為完整的JakartaUsers線程組。圖5.2.JakartaUsers線程組5.2添
34、加默認(rèn)HTTP青求屬性我們已經(jīng)定義了用戶,現(xiàn)在要定義他們的行為了。在這一部分,你將學(xué)會(huì)對(duì)你的HTTP請求設(shè)置默認(rèn)值。然后在5.3節(jié),用你在這里指定的默認(rèn)設(shè)置來添加HTTP請求元首先選擇JakartaUsers元件,右鍵點(diǎn)擊并在彈出的菜單中選擇添加->HTTP青求默認(rèn)值。然后選擇這個(gè)新元件來顯示其控制面板(見圖5.3)。圖5.3.HTTP請求默認(rèn)值跟大多數(shù)的JMeter元件一樣,HTTP請求默認(rèn)值控制面板也有一個(gè)名稱域。在這個(gè)例子中將它保留為默認(rèn)值。下面這個(gè)文本域是WebServer的Server名字/IP。對(duì)于這個(gè)測試計(jì)劃中,所有的HTTP請求都將發(fā)送到相同的網(wǎng)站服務(wù)器。向文本域中輸入名
35、字,這是唯一的一個(gè)需要我們?nèi)バ薷乃哪J(rèn)值,其它的文本域都保留它們的默認(rèn)值。HTTP請求默認(rèn)值元件并不告訴JMeter來發(fā)送HTTP請求,它僅僅定義這個(gè)HTTP請求所用的默認(rèn)值。圖5.4表示為完整的HTTP請求默認(rèn)值元件圖5.4.測試計(jì)劃的HTTP默認(rèn)值5.3添加Cookie支持除非你的應(yīng)用程序明確的不使用Cookies,幾乎所有的網(wǎng)站應(yīng)用程序都會(huì)使用cookie支持。要添加cookie支持,可以簡單的在你的測試計(jì)劃中給每一個(gè)線程組添加一個(gè)HTTPCookie管理器。這樣確信每個(gè)線程組有自己的cookies,但是通過所有交互的HTTP請求對(duì)象變成共享。添加HTTPCookie管理器,簡單地,選
36、擇這個(gè)線程組,選擇添加->HTTPCookie管理器,也可以從編輯菜單或通過右鍵點(diǎn)擊來實(shí)現(xiàn)添加。5.4添加HTTP請求在這個(gè)測試計(jì)劃中,我們需要實(shí)現(xiàn)兩個(gè)HTTP請求。第一個(gè)就是Jakarta網(wǎng)站首頁),第二個(gè)就是工程向?qū)ЬW(wǎng)頁JMeter按照它們在樹的出現(xiàn)的次序來發(fā)送請求。首先給JakartaUsers元件添加第一個(gè)HTTP請求(添加->HTTP請求)。然后從樹中選擇HTTP請求元件并修改正面的屬性(看圖5.5):更改名稱域?yàn)?quot;HomePage".設(shè)置路徑域?yàn)?quot;/"。你不必要設(shè)計(jì)服務(wù)器的名稱域,因?yàn)槟阋呀?jīng)在HTTP請求默認(rèn)值元件中設(shè)定過了。圖5
37、.5.Jakarta首頁的HTTP請求下一步,添加每二個(gè)HTTP請求并修改下面的屬性(見圖5.6):更改名稱域?yàn)?quot;ProjectGuidelines"。設(shè)置路徑域?yàn)?quot;/site/guidelines.html"。圖5.6.Jakarta工程Guidelines頁的HTTP請求5.5添加一個(gè)監(jiān)聽器到試圖儲(chǔ)存測試結(jié)果最后一個(gè)你需要給測試計(jì)劃的元件是監(jiān)聽器。這個(gè)元件的用途是將所有的HTTP請求結(jié)果存儲(chǔ)在一個(gè)文件中并顯現(xiàn)出數(shù)據(jù)的可視模型。選擇JakartaUsers元件,然后添加一個(gè)圖形結(jié)果監(jiān)聽器(添加->圖形結(jié)果).接著,你需要指定一個(gè)文件路徑和輸出文件
38、名。你可以在文件名域中輸入或選擇瀏覽按鈕并選擇一個(gè)路徑然后輸入文件名。圖5.7.圖像結(jié)果監(jiān)聽器5.6保存測試計(jì)劃盡管它并不必要,我們還是建議你在運(yùn)行測試計(jì)劃前將它保存在一個(gè)文件里邊。通過選擇文件菜單中的"保存測試計(jì)劃"來保存(在最新版本中你不需要先選擇測試計(jì)劃元件)。JMeter允許你保存整個(gè)測試計(jì)劃樹,也可以只保存其中的一部分。要保存特別樹枝中的一些元件,首先選擇樹枝的起始元件,然后在右鍵彈出的菜單中選擇保存為菜單項(xiàng)。同樣的,也可以選擇合適的元件,然后選擇編輯菜單中的"另存為"05.7運(yùn)行測試計(jì)劃從Run菜單中選擇Rur。如果測試運(yùn)行正確,JMeter
39、會(huì)在上方顯現(xiàn)一個(gè)綠色的長方形區(qū)域。當(dāng)所有的測試結(jié)束時(shí),它將會(huì)變成灰色。即使在你選擇了"stop"后,這個(gè)綠色的燈還將保持,直到所有的線程結(jié)束。一旦JMeter已經(jīng)完成測試計(jì)劃,選擇"run"菜單中的"stop"。如果你選擇了一個(gè)文件來保存你監(jiān)聽器中的結(jié)果,那么你將有一個(gè)文件,它可以在任何的視圖中打幵。每一個(gè)視圖將以它自己的樣子顯示結(jié)果。相同的文件可以在多個(gè)視圖中打幵,這是沒有問題的。在測試運(yùn)行期間,JMeter確信沒有例子被多次保存在同一個(gè)文件中。6. 創(chuàng)建一個(gè)高級(jí)web測試計(jì)劃在這章,你將學(xué)到如何創(chuàng)建高級(jí)測試計(jì)劃測試web站點(diǎn)。如果
40、需要一個(gè)基礎(chǔ)的測試計(jì)劃例子,見構(gòu)建一個(gè)web測試計(jì)劃。6.1用URL重寫處理用戶會(huì)話如果你的web應(yīng)用程序使用URL重寫優(yōu)于cookies保存會(huì)話信息,那么為了測試你的站點(diǎn)你將需要做一點(diǎn)額外的工作。為了響應(yīng)正確到URL重寫,JMeter需要解析從服務(wù)器接受的HTML和重新得到唯一的會(huì)話ID。利用適當(dāng)?shù)腍TTPURL重寫修改器來完成這些。簡單地輸入你的會(huì)話ID參數(shù)名到修改器,它會(huì)找到它并添加它到每一個(gè)請求。如果請求已經(jīng)有一個(gè)值,它將會(huì)被替代。如果"CacheSessionId?"被選中,那么最后被發(fā)現(xiàn)的會(huì)話ID將被保存,并且如果HTTP的上次取樣不包含一個(gè)會(huì)話ID將會(huì)被使用。
41、URL重寫例子下載這個(gè)例子。在圖1展示了一個(gè)使用URL重寫的測試計(jì)劃。注意URL重寫修改器附屬于線程組,因此確定它對(duì)在那個(gè)線程組的每一個(gè)請求有效。圖1-測試樹在圖2中,我們看到了URL重寫修改器的GUI,它僅僅有一個(gè)讓用戶指定會(huì)話ID參數(shù)名的文本域。有一個(gè)復(fù)選框來指示會(huì)話ID將被化為為路徑(以";"隔幵),這樣勝過使用一個(gè)請求參數(shù)。圖2-請求參數(shù)6.2使用消息頭管理HTTP消息頭管理讓你定制JMeter在HTTP請求消息頭發(fā)送的信息。這個(gè)消息頭包括像"User-Agent","Pragma","Referer"等屬
42、性。HTTP消息頭管理好像HTTPCookie管理,如果你因?yàn)橐恍┰蚰悴幌M谀愕臏y試?yán)餅椴煌腍TTP請求對(duì)象指定不同的消息頭,可以被添加到線程組水平。7. 創(chuàng)建一個(gè)數(shù)據(jù)庫測試計(jì)劃在這一部分,你將學(xué)會(huì)如何去創(chuàng)建一個(gè)基礎(chǔ)的測試計(jì)劃來測試一個(gè)數(shù)據(jù)庫服務(wù)器。你會(huì)創(chuàng)建10個(gè)用戶來給數(shù)據(jù)庫服務(wù)器發(fā)送2次SQL請求。同樣,你也可以讓用戶運(yùn)行他們的測試三次。這樣總的JDBC請求數(shù)量就是(10用戶)(2次請求)(重復(fù)3次)=60。要構(gòu)建這個(gè)測試計(jì)劃,你將會(huì)用到下面的元件:線程組,JDBC請求,圖形結(jié)果。這個(gè)例子使用了MySQI數(shù)據(jù)庫驅(qū)動(dòng)。要使用這個(gè)驅(qū)動(dòng),它所包涵的.jar文件必須復(fù)制到./lib/dire
43、ctory下(詳情參見JMeter'sClassPath)。另外我們期望在運(yùn)行這個(gè)測試計(jì)劃的時(shí)候有的堆棧跟蹤數(shù)量。7.1添加用戶處理每個(gè)JMeter測試計(jì)劃的第一步就是添加線程組元件。這個(gè)線程組會(huì)告訴JMeter你想要模擬的用戶數(shù)量,用戶應(yīng)該發(fā)送請求的頻率和應(yīng)該發(fā)送的數(shù)量。下一步來添加一個(gè)線程組:首先選擇這個(gè)測試計(jì)劃,用鼠標(biāo)右鍵點(diǎn)擊然后在得到的菜單中選擇添加->線程組。這時(shí)你應(yīng)該看到這個(gè)線程組已經(jīng)在測試計(jì)劃下面了,如果沒有看到,就點(diǎn)擊測試計(jì)劃元件展幵這個(gè)測試計(jì)劃樹。下一步,你需要修改這些默認(rèn)的屬性。如果你還沒有選擇線程組元件,則從測試計(jì)劃樹型結(jié)構(gòu)中選擇它。這時(shí)你應(yīng)該看到JMete
44、r窗口右邊的線程組控制面板了(見圖7.1)。首先給這個(gè)線程組起一個(gè)有意義的名字。在名稱域中,輸入JDBCUsers你將需要一個(gè)可用的數(shù)據(jù)庫,數(shù)據(jù)庫表,和表的用戶使用權(quán)限。在這個(gè)例子中,數(shù)據(jù)庫是'mydb',表名是'Stocks'。接下來,將用戶的數(shù)量(即threads)增加不10。在下一個(gè)theRamp-UpPeriod文本域中,使用默認(rèn)值為0。這個(gè)屬性表示每個(gè)用戶啟動(dòng)的遲延時(shí)間。例如,如果你輸入Ramp-UpPeriod為5秒,JMeter將會(huì)在五秒結(jié)束前完成啟動(dòng)所有的用戶。所以,如果你有五個(gè)用戶并且Ramp-UpPeriod為五秒,那么幵始用戶的延遲就是1秒
45、。(5個(gè)用戶/5秒二1用戶每秒).JMeter將會(huì)立即啟動(dòng)你所有的用戶,如果你設(shè)置其值為0。最后,取消標(biāo)記為"永遠(yuǎn)"的復(fù)選框選擇并設(shè)置循環(huán)次數(shù)為2。這個(gè)屬性表示你的測試的重復(fù)次數(shù)。如果你設(shè)置為1,JMeter將你的測試只運(yùn)行一次。要讓JMeter不斷的運(yùn)行,你要選擇"永遠(yuǎn)"這個(gè)復(fù)選框。在大多數(shù)的應(yīng)用程序中,你需要手動(dòng)來接受你在控制面板中所做的修改。但在JMeter中,如果你做了修改,控制面板可以自動(dòng)的接受。如果你修改的元件的名字,樹型菜單自動(dòng)更新當(dāng)你離幵控制面板后。(例如,當(dāng)你選擇另外一個(gè)樹元件。)圖7.2為完整的JDBCUsers線程組7.2添加JDB
46、C請求我們已經(jīng)定義了用戶,現(xiàn)在要定義他們的行為了。在這一部分,我們將會(huì)詳細(xì)說明JDBC請求。首先選擇JDBC用戶元件,右鍵點(diǎn)擊,在彈出的菜單中選擇Add->JDBCConnectionConfiguration。然后,選擇這個(gè)新的元件來顯示它的控制面板(見圖7.3)。設(shè)定下面的文本域的值(我們這里假定用一個(gè)本地的MySQL數(shù)據(jù)庫名為test)。9Variablenameboundtopool.這需要能夠唯一標(biāo)識(shí)這個(gè)配置。Username:guest9Password:passwordforguest剩下的文本域我們可以保留默認(rèn)的值。Figure7.3.JDBCConfiguration再
47、次選擇JDBC用戶元件。右鍵點(diǎn)擊,并在彈出的菜單中選擇Add->JDBCRequest。然后,選擇一個(gè)新的元件來顯示其控制面板(見圖7.4)。Figure7.4.JDBCRequest在我們這個(gè)測試計(jì)劃中,我們將發(fā)送2個(gè)JDBC請求。第一個(gè)是向EastmanKodakstock,第二個(gè)是向Pfizerstock(很顯然需要改變這些例子來適合你的特殊的數(shù)據(jù)庫)。下面的插圖文字說明。JMeter發(fā)送請求的次序就是你向樹中添加它們的次序。首先修改下面的屬性值勤(見圖7.5):9修改名字Name為"Kodak"9輸入PoolName:MySQL(在配置元件里面一樣)?輸入SQ
48、LQueryString(數(shù)據(jù)庫查訊字符串)Figure7.5.JDBCRequestforEastmanKodakstock然后,添加第二個(gè)JDBC請求并編輯正面的屬性(見圖7.6):9修改名字Name為"Pfizer"?輸入SQLQuery語句Figure7.6.JDBCRequestforPfizerstock7.4添加一個(gè)監(jiān)聽器瀏覽/保存測試結(jié)果你需要添加到你測試計(jì)劃的最后元件是一個(gè)監(jiān)聽器。這個(gè)元件責(zé)任是儲(chǔ)存所有你的JDBC請求結(jié)果到文件,并且展示一個(gè)可視數(shù)據(jù)模型。選擇JDBCUsers元件,添加一個(gè)GraphResults監(jiān)聽器(Add->GraphResu
49、lts)。Figure7.7.GraphresultsListener7.5保存測試計(jì)劃雖然它不是需要的,但是我們推薦你在運(yùn)行前保存測試計(jì)劃到一個(gè)文件。為了保存測試計(jì)劃,從File菜單選擇SaveTestPlan(使用最新版本,它不再需要首先選擇測試計(jì)劃元件)。JMeter允許你保存這個(gè)測試計(jì)劃樹或者其中一部分。為了僅保存在測試計(jì)劃樹上的特殊"分支",選擇在樹中用來啟動(dòng)"分支"的測試計(jì)劃元件,然后右擊在菜單項(xiàng)中選擇"Save"?;蛘?,選擇合適測試計(jì)劃元件,然后從Edit菜單選擇Save。7.6運(yùn)行測試計(jì)劃從Run菜單,選擇Runo如果你測試正在運(yùn)行,JMeter在右手上方的角落點(diǎn)燃一個(gè)綠正方形顯示。當(dāng)所有測試停止,那
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河北省安全員《A證》考試題庫及答案
- 二零二五年度智能制造入股合同協(xié)議書
- 2025年度農(nóng)業(yè)科技企業(yè)員工借調(diào)與農(nóng)業(yè)技術(shù)推廣合同
- 2025年度個(gè)體工商戶合伙協(xié)議范文與投資融資及財(cái)務(wù)規(guī)劃協(xié)議
- 2025年度征收城市老舊危房房屋拆遷補(bǔ)償協(xié)議
- 2025年度人事專員勞動(dòng)合同(附員工培訓(xùn)服務(wù)內(nèi)容)
- 2025年度文化產(chǎn)業(yè)發(fā)展勞動(dòng)合同法規(guī)范與創(chuàng)意人才合同
- 2025年度個(gè)人租賃市場租賃合同電子簽名合同
- 2025年度健康養(yǎng)生館店鋪承包合作協(xié)議
- 2025年度太陽能光伏發(fā)電站機(jī)電安裝服務(wù)協(xié)議
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 廣西壯族自治區(qū)公路發(fā)展中心2025年面向社會(huì)公開招聘657名工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 大學(xué)轉(zhuǎn)專業(yè)高等數(shù)學(xué)試卷
- DBJ51-T 198-2022 四川省既有民用建筑結(jié)構(gòu)安全隱患排查技術(shù)標(biāo)準(zhǔn)
- 公司廠區(qū)保潔培訓(xùn)
- 江蘇省招標(biāo)中心有限公司招聘筆試沖刺題2025
- 2024年防盜門銷售合同范本
- 支付令申請書(2025版)
- 《干細(xì)胞及其應(yīng)用》課件
- 麻醉護(hù)士的 工作職責(zé)
- 2025年中考語文一輪復(fù)習(xí):九年級(jí)下冊知識(shí)點(diǎn)梳理
評(píng)論
0/150
提交評(píng)論