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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JMETER中文手冊分享1.簡介Apache JMeter是100%純java桌面應用程序,被設計用來測試C/S結構的軟件(例如web應用程序)。它可以用來測試包括基于靜態(tài)和動態(tài)資源程序的性能,例如靜態(tài)文件,Java Servlets,Java對象,數據庫,F(xiàn)TP服務器等等。JMeter可以用來在一個服務器、網絡或者對象上模擬重負載來測試它的強度或者分析在不同的負載類型下的全面性能。另外,JMeter能夠通過讓你們用斷言創(chuàng)建測試腳本來驗證我們的應用程序是否返回了我們期望的結果,從而幫助我們回歸測試我們的程序。為了最大的靈活性,JMeter允許我們使用正則表達式創(chuàng)建斷言。1.1 歷史Apache

2、軟件組織的Stefano Mazzocchi是JMeter的創(chuàng)始人。他編寫它起初是為了測試Apache JServ的性能(一個已經被Apache Tomcat工程所替代的工程)。我們重新設計JMeter來增強用戶界面并增加功能測試的能力。1.2 未來我們希望看到作為開發(fā)者利用它的可插入架構使JMeter的功能快速擴展。未來發(fā)展的主要目標是在沒有影響JMeter的負載測試能力的情況下盡可能使JMeter成為最實用的回歸測試工具。2.入門開始使用JMeter最容易的方法是首先下載最新版并且安裝它。這個版本包含所有你在構建和運行Web,F(xiàn)TP,JDBC,和JNDI等測試時使用需要的所有文件。如果你想

3、執(zhí)行JDBC測試,你當然需要從供應商得到適當的JDBC驅動。JMeter沒有提供任何JDBC驅動。你可能需要下載的其它軟件:BeanShell - BeanShell函數和測試元件需要Java Activation Framework - JavaMail需要Java Mail - Mail可視化,Mail Reader 和 WebService(SOAP)取樣器需要JMS - JMS取樣器需要下一步, 開始使用JMeter并且參見用戶手冊創(chuàng)建一個測試計劃一章使自己更加熟悉JMeter基礎(例如,添加和刪除元件)。最后, 參見如何構建一個明確類型的測試用例的適合章節(jié)。例如,如果你對Web應用測

4、試感興趣,那就參見創(chuàng)建一個Web測試計劃。其他具體的測試計劃章節(jié)是:高級Web測試計劃、JDBC、FTP、JMS 點到點、JMS 主題、LDAP2.1 需求JMeter 需要最小需求的運行環(huán)境。2.1.1 Java版本JMeter需要一個完全適當的JVM1.4或者更高因為JMeter 僅使用Java標準API, 請不要把因為JRE實現(xiàn)版本而無法運行JMeter的bug報告提交。2.1.2 操作系統(tǒng)JMeter是100%純Java應用程序并且能夠正確的在任何有適當的Java實現(xiàn)的操作系統(tǒng)上運行。JMeter 在下列環(huán)境已經被測試:Unix(Solaris, Linux, 等)、Windows (

5、98, NT, 2000, xp)、OpenVMS Alpha 7.3+2.2 可選如果你計劃做JMeter開發(fā)或者想使用SUN的java標準擴展包,你將需要下列更多的可選包。2.2.1 Java編譯器如果你想編譯JMeter源代碼或者開發(fā)JMeter插件,你將需要一個完整的適當的JDK1.4或者更高。2.2.2 SAX XML解析器JMeter 使用 Apache的 Xerces XML解析器,你可以選擇告訴JMeter使用一個不同的XML解析器。這樣做,把第三方的解析器的類包包含在JMeter的classpath中, 并更新 perties 文件里的解析器實現(xiàn)的全類名。

6、2.2.3 Email支持JMeter有有限的Email能力。 它能夠發(fā)送基于測試結果的Email,并且支持POP/IMAP 取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email, 需要添加Sun的JavaMail包和activation包到JMeter classpath 。2.2.4 SSL加密為了測試一個使用SSL加密(HPPS)的web服務器, JMeter 需要一個提供SSL實現(xiàn)(例如 Sun的Java Secure Sockets Extension - JSSE)。包含需要的加密包到JMeter的classpath。 同樣,通過注冊SSL提供者更新pert

7、ies文件。JMeter默認協(xié)議等級TLS(傳輸層安全性)。這可以通過修改在erties或者perties文件中的tocol來改變。JMeter被配置接受所有的證書,不管是否信賴和合法時間等。這允許在測試服務器最大靈活性。如果服務器需要一個客戶端證書,這是可以提供的。為了更好的管理證書,也要有一個SSL管理器 。2.2.5 JDBC驅動如果你需要JDBC測試,需要添加廠商的JDBC驅動到classpath。確認文件是一個jar文件,而不是zip。2.2.6 Apache SOAPApache SOAP需要mail.jar和a

8、ctivation.jar.你需要下載并拷貝這兩個jar文件到你jmeter/lib 目錄.一旦文件放到那里,JMeter 會自動找到它們。2.2.7 BeanShell為了運行BeanShell函數或者任何BeanShell測試元件(取樣器,定時器等),你需要從/下載beanshell的jar文件并拷貝jar文件到jmeter/lib目錄,JMeter會自動找到它。2.2.8 ActiveMQ 3.0類庫詳細參見 /initial-configuration.html詳細參見JMeter Clas

9、spath 一章安裝附加的jar包2.3 安裝我們推薦大多數用戶運行最新版本。要安裝一個構建版本,簡單解壓zip/tar文件到你想安裝JMeter的目錄。保證一個JRE/JDK正確的安裝并且設置環(huán)境變量JAVA_HOME,其它不需要做什么了。安裝目錄接口應該看到的像這樣一些東西(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/

10、ext jakarta-jmeter-2.3.1/lib/junit jakarta-jmeter-2.3.1/printable_docs如果你想的話你可以重命名父目錄(例如 jakarta-jmeter-2.3.1) ,但是不要改變任何子目錄命。父目錄路徑中不能包含任何空格;如果包含,你運行客戶端-服務器模式會有問題。2.4 運行JMeter要運行JMeter, 運行jmeter.bat (for Windows)或者jmeter (for Unix) 文件。那些文件在bin目錄下。稍微暫停后,JMeter GUI會顯示出來。在bin目錄你會發(fā)現(xiàn)有些附加腳本很有用。Windows腳本文件(

11、CMD文件需要Win2K或者更新):jmeter.bat - 運行JMeter(默認在GUI模式)jmeter-n.cmd - 使用一個JMX文件運行非GUI測試jmeter-n-r.cmd - 使用一個JMX文件遠程運行一個非GUI測試jmeter-t.cmd - 在GUI模式使用一個JMX文件jmeter-server.bat - 以服務器模式啟動JMeter注意: LAST可以在jmeter-n.cmd, jmeter-t.cmd 和 jmeter-n-r.cmd中使用,意味著最后一次測試會運行.Unix腳本文件可以運行在大多Linux/Unix系統(tǒng).jmeter - 運行JMeter(

12、默認在GUI模式)jmeter-server - 以服務器模式啟動JMeter2.4.1 JMeter ClasspathJMeter 自動從下列目錄中的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文件(類庫)應該放在lib目錄.如果你不想把擴展jar包放到lib/ext目錄,可以在pertie

13、s中定義search_paths屬性。不要使用lib/ext給那些公用的jar包;它僅僅是存放JMeter組件。其他jar包(例如JDBC, 和任何JMeter代碼需要支持的類庫)應該被代替放在lib目錄 ,而不是lib/ext目錄。你可以在$JAVA_HOME/jre/lib/ext安裝有用的jar文件,或者(自從2.1.1版本)你可以在perties中設置user.classpath屬性。注意設置CLASSPATH環(huán)境變量將不起作用。這是因為JMeter 使用java -jar啟動,并且java命令無記錄忽略CLASSPATH變量,并且當使用-jar選項時-classp

14、ath/-cp選項也被使用。2.4.2 使用代理服務器如果你從防火墻/代理服務器后測試,你需要提供給JMeter防火墻/代理服務器的主機名和端口號。這樣做,從命令行使用以下參數運行jmeter.bat/jmeter文件: -H 代理服務器主機名或者ip地址-P 代理服務器端口-N 非代理主機 (例如:*.|localhost)-u 代理證書用戶名- 如果需要-a 代理證書密碼 - 如果需要例如 : jmeter -H xy.server -P 8000 -u username -a password -N localhost或者, 你使用 -proxyHost,

15、 -proxyPort, -username, and -passwordJMeter也有自己的內建HTTP代理服務器,來記錄HTTP(不是 HTTPS)瀏覽器會話。這是和上面的代理設置描述不混淆的,它是在JMeter發(fā)出HTTP或者HTTPS請求時使用的。2.4.3 非用戶界面模式(命令行模式)為了不相互影響測試, 你可以選擇運行沒有用戶界面的JMeter。這樣做,使用下列命令選項:-n 這是指定JMeter在非用戶界面模式運行-t 包含測試計劃的JMX文件的名字-l 記錄取樣結果的JTL文件的名字-r 運行在perties文件里所有的遠程服務器 (或者通過在命令行覆蓋屬

16、性指定遠程服務器)這個腳本也允許我們指定可選的防火墻/代理服務器信息:-H 代理服務器主機名或者ip地址-P 代理服務器端口例如 : jmeter -n -t my_test.jmx -l log.jtl -H xy.server -P 80002.4.4 服務器模式為了分布測試,在服務器模式運行JMeter,并且通過用戶界面控制每一臺服務器。jmeter-server/jmeter-server.bat 腳本使用適當的classpath為你開始遠程注冊。如果失敗,參見關于JMeter服務器啟動細節(jié)。運行jmeter-server/jmeter-server.bat,加上下列選項命

17、令:這個腳本也允許我們指定可選的防火墻/代理服務器信息:-H 代理服務器主機名或者ip地址-P 代理服務器端口例如 : jmeter-server -H xy.server -P 80002.4.5 通過命令行覆蓋屬性Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過命令行直接覆蓋(代替更改perties文件)。這樣做,使用下列選項:-Dprop_name=value - 定義一個java系統(tǒng)屬性值。-Jprop name=value - 覆蓋一個JMeter屬性。-Lcategory=priority - 覆蓋一個日志設置,設置一個特殊目錄為給定的優(yōu)先級。

18、-L 標志也可以使用沒有目錄名來設置根目錄日志等級。例如 :jmeter -Duser.dir=/home/mstover/jmeter_stuff -Jremote_hosts= -Ljmeter.engine=DEBUGjmeter -LDEBUG注意:命令行參數在啟動時較早被處理,但是在日志系統(tǒng)被設置以后。嘗試使用-J標志更新log_level或者log_file屬性無效。2.4.6 日志和錯誤信息如果JMeter發(fā)現(xiàn)一個錯誤, 一個消息將被寫入日志文件。日志文件名在perties文件中定義。一般定義為jmeter.log 。并且在JMeter啟動目

19、錄,例如bin。當在Windows下運行時,如果你不設置Windows顯示文件擴展名,文件名會僅顯示為 JMeter。還有記錄錯誤,jmeter.log 文件記錄一些測試運行信息。例如:10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.2003100210/17/2003 12:19:45 PM INFO - jmeter.gui.action.Load:Loadingfile:c:mytestfilesBSH.jmx10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMete

20、rEngine: Running the test!10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Continue on error10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 starte

21、d10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has ended日志文件對發(fā)現(xiàn)錯誤原因很有幫助,作為JMeter不會打斷一個測試來顯示一個錯誤對話框。2.4.7 命令行選項目錄調用JMeter的jmeter -?命令將打印所有命令選項的一個列表。列表如下:-h,-help打印使用信息并退出-v, -version打印版本信息并推出-p, -

22、propfile argument使用的JMeter屬性文件-q, -addprop argument附加的屬性文件-t, -testfile argument運行的JMeter測試文件(.jmx)-l, -logfile argument日志取樣文件-n, -nongui 非用戶界面運行JMeter-s, -server 運行JMeter服務器-H, -proxyHost argument設置JMeter使用的代理服務器-P, -proxyPort argument設置JMeter使用的代理服務器端口-u, -username argument設置JMeter使用的代理服務器用戶名-a, -

23、password argument設置JMeter使用的代理服務器密碼-J, -jmeterproperty argument=value定義附加的 JMeter 屬性-D, -systemproperty argument=value定義附加的 System 屬性-S, -systemPropertyFile filename一個屬性文件被做為系統(tǒng)屬性添加-L, -loglevel argument=value定義日志等級: category=level例如 jorphan=INFO or jmeter.util=DEBUG-r, -runremote從非用戶界面模式啟動遠程服務器-d, -

24、homedir argument 使用的JMeter目錄2.5 配置JMeter如果你希望改變JMeter運行時的屬性你需要改變在/bin目錄下的perties文件,或者創(chuàng)建你自己的perties文件并且在命令行指定它。注意:自從2.1.2,你能夠通過JMeter屬性perties在文件中定義附加的JMeter屬性,perties默認值是perties。如果在當前目錄被發(fā)現(xiàn),這個文件被自動加載。類似的,perties被用來更新系統(tǒng)屬性。參數:屬性描述vider你可以為你的S

25、SL實現(xiàn)指定類。如果你想使用來自sun的JSSE,是這樣:.ssl.Internal.ssl.Provider。JMeter默認提供https支持。如果你正在使用JDK1.4, 或者你使用帶JSSE類的jar文件在JMeter的classpath里的JDK1.4。 C.ernal.ssl.ProviderJMeter默認提供https支持是在你使用JDK1.4或者你使用把JSSE類的jar包放到JMeter classpath中的JDK1.3時候。 xml.parser你可以指明一個你的XML解析器實現(xiàn)。默認值是:org.apache.xerces.parsers.SAXPars

26、er remote_hosts逗號分割遠程JMeter主機列表。如果你在一個分布式環(huán)境運行JMeter,列出你用JMeter遠程主機運行的機器。這允許你使用機器的用戶界面控制那些服務器。 not_in_menu在JMeter選項屏中你不想看到的組件列表。如果JMeter被添加越來越多的組件,你會希望定制JMeter只出現(xiàn)那些你感興趣的組件。你可以在這兒列出那些類名和他們的類標簽(JMeter的用戶界面出現(xiàn)的字符串),它們將在選項屏中不出現(xiàn)。 search_paths列出那些JMeter搜索JMeter附加類的路徑(以;分割);例如附加的取樣器。被添加到lib/ext目錄的任何jar包都被發(fā)現(xiàn)。

27、 user.classpathJMeter搜索的公用類庫的路徑列表。被添加到lib目錄的任何jar包都被發(fā)現(xiàn)。 perties附加的JMeter屬性文件名。 初始化屬性文件后它們被添加,但是在-q和-J選項被處理之前。 perties附加的系統(tǒng)屬性文件名。 -S和-D選項被執(zhí)行前添加。 3. 創(chuàng)建一個測試計劃一個測試計劃描述了一系列Jmeter運行時要執(zhí)行的步驟。一個完整的測試計劃包含一個或者多個線程組,邏輯控制器,取樣發(fā)生控制,監(jiān)聽器,定時器,斷言和配置元件。3.1 添加和刪除元件在一個樹上通過右擊可以添加元件到一個測試計劃 ,并且從添加列表中選擇一個新元

28、件。另外,元件可以從文件加載并且通過選擇打開選項添加。為了刪除元件,確保元件被選中,正確在元件上右擊,并且選擇刪除選項。3.2 加載和保存元件為了從文件加載元件,右擊將要加載元件到的已經存在的樹元件,并選擇打開選項。選擇你的元件保存的文件。JMeter會加載元件到樹中。為了保存樹元件,在一個元件上右擊,選擇保存選項。JMeter會保存已選的元件,加上所有下面的子元件。用這種方法,你能夠保存測試樹的片段,單獨元件,或者整個測試計劃。3.3 配置樹元件在測試樹中的任何元件都在JMeter的右側框架顯示配置。那些配置允許你配置測試元件的細節(jié)行為,對于一個元件什么能被配置依賴于它是一個什么類型的元件。

29、3.4 保存測試計劃雖然這不是必須的,我們推薦你在運行前保存測試計劃。為了保存測試計劃,從文件菜單選擇保存測試計劃(使用最新版本,你不再需要首先選擇測試計劃元件)。JMeter允許你保存整個測試計劃樹或者僅它的一部分。為了僅保存測試計劃樹中特殊支位置的元件,從從這個支開始的地方選擇樹中的測試計劃元件,然后右擊鼠標訪問保存菜單項。另外選擇合適的測試計劃元件并從編輯菜單選擇保存。3.5 運行一個測試計劃為了運行一個測試計劃,從運行菜單項選擇開始。為了停止你的測試計劃,從同樣的菜單選擇停止。JMeter不會自動給它是否正在運行任何顯示。如果JMeter運行,一些監(jiān)聽器使它變明顯,但是唯一確定的方法是

30、檢查運行菜單。如果開始不可用,停止 可用,證明JMeter正在運行你的測試計劃(或者至少它認為它是)。有兩個類型的停止命令:停止(Control + .)- 立刻停止所有的線程關閉(Control + ,)- 請求所有線程在當前任務結束后停止3.6 元件作用域及執(zhí)行順序3.6.1 作用域規(guī)則JMeter中共有8類可被執(zhí)行的元件(測試計劃與線程組不屬于元件),這些元件中,取樣器是典型的不與其它元件發(fā)生交互作用的元件,邏輯控制器只對其子節(jié)點的取樣器有效,而其它元件(configelements、timers、post-processors、assertions、listeners、)需要與取樣器(

31、sampler)等元件交互。配置元件(configelements):元件會影響其作用范圍內的所有元件。前置處理程序(Per-processors):元件在其作用范圍內的每一個sampler元件之前執(zhí)行。定時器(timers):元件對其作用范圍內的每一個sampler有效后置處理程序(Post-processors):元件在其作用范圍內的每一個sampler元件之后執(zhí)行。斷言(Assertions):元件對其作用范圍內的每一個sampler元件執(zhí)行后的結果執(zhí)行校驗。監(jiān)聽器(Listeners):元件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。在jmeter中,元件的作用域是靠測試計劃

32、的的樹型結構中元件的父子關系來確定的,作用域的原則是:取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。邏輯控制器(LogicController)元件只對其子節(jié)點中的取樣器和邏輯控制器作用。除取樣器和邏輯控制器元件外,其他6類元件,如果是某個sampler的子節(jié)點,則該元件公對其父子節(jié)點起作用。除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點不是sampler,則其作用域是該元件父節(jié)點下的其他所有后代節(jié)點(包括子節(jié)點,子節(jié)點的子節(jié)點等)。3.6.2 元件的執(zhí)行順序了解了元件有作用域之后,來看看元件的執(zhí)行順序,元件執(zhí)行順序的規(guī)則很簡單,在同一作用域名范圍內,測試計

33、劃中的元件按照如下順序執(zhí)行。(1)配置元件(configelements)(2)前置處理程序(Per-processors)(3)定時器(timers)(4)取樣器(Sampler)(5)后置處理程序(Post-processors)(除非Sampler得到的返回結果為空)。(6)斷言(Assertions)(除非Sampler得到的返回結果為空)。(7)監(jiān)聽器(Listeners)(除非Sampler得到的返回結果為空)。關于執(zhí)行順序,有三點需要注意:*前置處理器、后置處理器和斷言等元件只能對取樣器作用,因此如果在它們的作用域內沒有任何取樣器,則不會被執(zhí)行。*如果在同一作用域范圍內有多個同一

34、類型的元件,則這些元件按照它們在測試計劃中的上下順序依次執(zhí)行。* 一個斷言在測試樹中是分等級的。如果它的父元件是請求,它就被應用于那個請求。如果它的父元件是控制器,它就影響所有那個控制器下的所有請求。請求的順序是 One,Two,Three,F(xiàn)our。一些控制器影響它的子元件的順序,你可以在組件參考讀到特定的控制器。Assertion #1僅被應用于請求One,Assertion #2僅被應用于請求Two和Three。在這個例子里,請求的命名表現(xiàn)它們被執(zhí)行的順序。Timer #1應用于請求Two,Three,和Four(注意對于分等級的元件怎樣的順序是不相關的)。Assertion #1應用于

35、請求Three。Timer #2對所有請求有效。元件首部管理器,Cookie管理器和授權管理器的配置和默認元件的配置被視為是不同的默認元件配置的設置被并入取樣器可以到達的一組值里了。然而來自管理器的設置沒有并入。如果多于一個管理器在一個取樣器范圍中,僅僅一個被使用,但是現(xiàn)在沒有辦法指定那個被使用。3.7 錯誤報告JMeter把警告和錯誤信息報告在jmeter.log文件中,也有一些測試運行本身的信息.只是偶爾地,JMeter對于某些錯誤是無法補捉和記錄的,這些信息會顯示在命令臺上。如果一個測試的執(zhí)行并不是你所期待的,請檢查日志,也許錯誤會被報告(例如:也許在函數調用上有語法錯誤)。取樣錯誤(例

36、如:HTTP 404 -找不到文件)是不會被正常的記錄在日志中的,取而代之的,他們會被當作取樣結果的屬性來儲存,取樣結果的狀態(tài)能被許多不同的監(jiān)聽器所得到。4. 測試計劃元件測試計劃對象有一個叫做功能測試復選框。如果被選擇,它會使JMeter記錄來自服務器返回的每個取樣的數據。如果你在測試監(jiān)聽器中選擇一個文 件,這個數據將被寫入文件。如果你嘗試一個較小的測試來保證JMeter配置正確并且你的服務器正在返回期望的結果,這是很有用的。這樣的后果就是這個文 件會快速的增大,并且JMeter的效率會影響。如果你不做壓力測試這個選項應該關閉(默認關閉)。如果你不記錄數據到文件,這個選項就沒有不同了。4.1

37、 線程組線程組元件是任何測試計劃的起點。一個測試計劃的所有元件必須在一個線程組下。由名字可以看出,線程組元件控制JMeter運行測試時使用的線程數。線程組管理允許你:設置線程數設置ramp-up period設置執(zhí)行測試的次數每個線程會作為一個整體執(zhí)行測試計劃并完全獨立于他測試線程。多線程用來模擬到達服務器程序的同步連接。 Ramp-up period告訴JMeter多久開始ramp-up選擇的全部線程。如果使用10個線程,ramp-up period是100秒,那么JMeter用100秒使所有10個線程啟動并運行。每個線程會在上一個線程啟動后10秒(100/10)啟動。如果有30 個線程和一

38、個120秒的ramp-up period,那么每個連續(xù)的線程會延遲4秒。Ramp-up需要要充足長以避免在啟動測試時有一個太大的工作負載,并且要充足小以至于最后一個線程在第一個完成前啟動(除非你想那樣發(fā)生)。 使用ramp-up=線程數啟動,并上下調整到所需的。默認,線程組被配置僅循環(huán)一次。 1.9版本引入了一個測試運行*調度器*。 單擊在線程組面板底部的復選框來顯示額外的文本域,在里面你可以輸入啟動和結束時間。當測試啟動時,如果必須JMeter會等待啟動時間到達。在每個周期 結束,JMeter檢驗結束時間是否到達,如果是,運行停止,如果不是測試被允許繼續(xù),直到迭代限制到達。另外你可以使用啟動

39、延遲和持續(xù)時間文本域。注意啟動延遲會覆蓋啟動時間,持續(xù)時間會覆蓋結束時間。 4.2控制器JMeter有兩種控制器:取樣器和邏輯控制器。取樣器告訴JMeter發(fā)送請求到服務器。例如,如果你要JMeter發(fā)送一個HTTP請求添加一個HTTP請求取樣器。你也可以通過添加一個或者多個配置元件到一個取樣器來定制一個請求。更多信息,見取樣器。邏輯控制器讓你定制當發(fā)送請求時JMeter使用的判斷邏輯。例如,你可以添加交替控制器來在兩個HTTP請求取樣器之間交替 。更多信息,見邏輯控制器。4.2.1 取樣器(Sampler)取樣器告訴JMeter發(fā)送請求到服務器。JMeter取樣器包括:FTP 請求HTTP

40、請求JDBC 請求Java object 請求LDAP 請求SOAP/XML-RPC 請求WebService (SOAP) 請求每個取樣器有一些你可以設置的屬性。你可以通過添加一個或多個配置元件到取樣器來進一步定制它。注意JMeter發(fā)送請求按照取樣器出現(xiàn)在樹中的順序。 如果你想發(fā)送多個相同類型的請求(例如,HTTP Request)到相同的服務器,可以考慮使用一個默認配置元件。每個控制器有一個或者多個默認配置元件(見下)。 記得添加一個監(jiān)聽器到線程組來查看/保存你的請求結果到磁盤。如果你對使用JMeter平臺的基礎驗證器到你的請求響應感興趣,添加一個斷言到請求控制器。例如, 在壓力測試一個

41、web程序時,服務器會返回一個成功的HTTP響應代碼,但是這個頁面有錯誤或者被忽略部分。你可以添加斷言來檢查某個HTML標簽,一些 錯誤字符串,等等。JMeter允許你使用正則表達式創(chuàng)建斷言。JMeter 內建取樣器4.2.2 邏輯控制器保持邏輯控制器讓你定制當發(fā)送請求時JMeter使用的判斷邏輯。邏輯控制器還可以作為下列任何元件的子元件:取樣器(請求)、配置元件、和其他邏輯控制器。邏輯控制器可以改變來自它們的子元件的請求順序。它們可以修改請求本身,導致JMeter重復請求,等。理解邏輯控制器在測試計劃中的效果,考慮下列測試樹:測試計劃 線程組 僅一次控制器 登錄請求(一個HTTP請求)加載搜

42、索頁面(HTTP取樣器)Interleave Controller 搜索A(HTTP取樣器)搜索B(HTTP取樣器)HTTP默認請求(配置元件)HTTP默認請求(配置元件)Cookie管理器(配置元件)這個測試的第一件事就是登錄請求僅在第一次經過時被執(zhí)行。隨后的迭代會忽略它。這應使用僅一次控制器。登陸后,下一個取樣器加載搜索頁面( 假設一個用登錄的web應用程序,并到達搜索頁面去搜索)。這僅是一個簡單的請求,不會被任何邏輯控制器過濾。加載搜索頁面后,我們要做一個搜索。事實上,我們想做兩個不同的搜索。然而,在每個搜索之間我們想要自己重新加載搜索頁面。我們通過4個簡單 HTTP元件這樣做。(loa

43、d search, search A, load search, search B). Instead, we use the Interleave Controller which passes on one child request each time through the test. It keeps the ordering (ie - it doesnt pass one on at random, but remembers its place) of its child elements. Interleaving 2 child requests may be overki

44、ll, but there could easily have been 8, or 20 child requests.注意HTTP默認請求屬于插入控制器。假如Search A和Search B共享同樣的PATH信息(一個HTTP請求說明中包括域,端口,方法,協(xié)議路徑和參數,附加其他可選項)。兩個搜索請求訪問同樣的后端搜索引擎(比方 說Servle,或者cgi腳本),這樣是說得通的。與其兩者都配置使用相同信息的HTTP取樣器,我們可以抽象那些新到一個單獨的配置元件。當內部控制 器通過Search A或者Search B傳遞時,它會從HTTP默認請求配置元件中獲得值填充空白。所以我們可以為那些

45、請求保留PATH域為空,然后把那些信息放到配置元件。在這個例子中, 這至多是一個很小的好處,但它顯示了這個特性。在這個樹中下一個元件是另一個HTTP默認請求,這個時間被添加到線程組本身。這個線程組有一個內建的邏輯控制器,因此它正好使用這個配置元件做為 上面的描述。它填充任何穿過的請求的空白。 在web程序中你所有的HTTP取樣器元件DOMAIN域為空,這是極度有用的,替代的,把那些信息放到HTTP默認請求元件中,添加到線程組。通過這樣 做,你可以在一個同的服務器通過改變你測試計劃中的一個域來測試你的程序。另外,你必須編輯每個取樣器。最后一個元件是一個HTTP Cookie管理器。一個Cooki

46、e管理器應該添加到所有web測試上-否則JMeter會忽略Cookie。通過在線程組級添加它,我們可以確定所有的線程分享同樣的Cookie。邏輯控制器可以組合達到不同的結果。見內建邏輯控制器列表。 4.3 監(jiān)聽器監(jiān)聽器提供訪問JMeter收集當JMeter運行的關于測試計劃的信息。圖形結果監(jiān)聽器在一張圖上繪制響應時間。查看結果樹監(jiān)聽器顯示了請求和響應取樣器的細節(jié),并且以基礎的HTML和XML顯示響應表現(xiàn)。其他監(jiān)聽器提供了摘要或者集合信息。另外,監(jiān)聽器可以指導它們收集的數據到一個文件供以后用。在JMeter中每一個監(jiān)聽器提供一個域來指出存儲數據的文件。在測試中監(jiān)聽器可以添加到任何位置。它們僅僅會

47、從它們等級或者它們以下等級的元件收集數據。伴隨JMeter有很多有趣的監(jiān)聽器。4.4 定時器默認,JMeter線程發(fā)送請求時不在請求間暫停。我們建議你通過添加一個可用的定時器到你的線程組來指定一個延遲。如果你不添加延遲,JMeter會在短時間內產生太多請求,可能會壓倒你的服務。 定時器會使JMeter在一個線程開始每個請求間延遲一段時間。如果你選擇添加多于一個定時器到一個線程組,JMeter會在執(zhí)行取樣器前獲得定時器數量并暫停那個時間量。4.5 斷言斷言允許你斷言關于從測試服務器收到的響應的行為。使用斷言你本質上你可以測試你的應用程序返回你期望的結果。 例如,你可以斷言一個查詢的響應會包含一些

48、特殊的文本。你指定的文本可能是Perl風格的正則表達式, 并且你可以指出這個響應是包含這個文本,還是匹配整個響應。你可以添加一個斷言到任何取樣器。例如你可以添加一個斷言到HTTP請求檢查文本。JMeter會檢查在HTTP響應中表現(xiàn)的文本。如果JMeter沒有找到這個文本,它會標記這個為一個失敗的請求。為了查看斷言結果,添加一個斷言監(jiān)聽器到線程組。Assertion-斷言,通常是用于對每一個request sampler進行額外驗證的工具。下面通過一個例子來介紹一下常用的幾個Assertions。假設現(xiàn)在要進行一個登陸的壓力測試,下面是對pass的幾個定義:1.正確login后,必須收到返回的身

49、份驗證和用戶個人信息下載的完成信息;2.響應時間不能超過150毫秒3.返回的結果大小不能小于750bytes根據以上的要求,我們在對應的request sampler下面添加了以下的Assertions。A.Response AssertionResponse Field to Test - 標示被檢查對象是什么?Pattern Matching Rules - 標明被檢查對象與驗證內容之間的關系,Contains(包含關系);Matches(匹配關系);Equals(相等關系);Not(非關系)Pattern to Test - 需要驗證的內容列表B.Duration AssertionDu

50、ration to Assert - 允許的響應時間的最大值C.Size AssertionSize to Assert - 對于返回結果文件大小的標準定義二、結果分析添加了以上的Assertions后,我運行了一次腳本。以下是存放結果的.jtl文件的內容:timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,Latency11/04/08 13:22:03,172,Do Login,200,OK,Thread Group 1-1,text,fa

51、lse,The operation lasted too long: It took 172 milliseconds, but should not have lasted longer than 150 milliseconds.,835,17211/04/08 13:22:03,156,Do Login,200,OK,Thread Group 1-2,text,false,Test failed: text expected to contain /loginMsg=OK/,633,15611/04/08 13:22:03,156,Do Login,200,OK,Thread Group

52、 1-3,text,false,The operation lasted too long: It took 156 milliseconds, but should not have lasted longer than 150 milliseconds.,839,15611/04/08 13:22:03,156,Do Login,200,OK,Thread Group 1-4,text,false,The operation lasted too long: It took 156 milliseconds, but should not have lasted longer than 1

53、50 milliseconds.,836,15611/04/08 13:22:03,78,Do Login,200,OK,Thread Group 1-5,text,true,779,7811/04/08 13:22:03,63,Do Login,200,OK,Thread Group 1-7,text,false,Test failed: text expected to contain /loginMsg=OK/,570,6311/04/08 13:22:03,141,Do Login,200,OK,Thread Group 1-6,text,false,The result was th

54、e wrong size: It was 721 bytes, but should have been greater than 750 bytes.,721,14111/04/08 13:22:03,78,Do Login,200,OK,Thread Group 1-9,text,false,The result was the wrong size: It was 724 bytes, but should have been greater than 750 bytes.,724,7811/04/08 13:22:03,204,Do Login,200,OK,Thread Group

55、1-10,text,false,The operation lasted too long: It took 204 milliseconds, but should not have lasted longer than 150 milliseconds.,1137,20411/04/08 13:22:03,2985,Do Login,200,OK,Thread Group 1-8,text,false,Test failed: text expected to contain /loginMsg=OK/,570,2985我們可以看到,每一個Sampler都會經過Assertions的判斷,

56、只要有一個不符合條件的都會標示為False。4.6 配置元件配置元件配合取樣器工作。雖然它不發(fā)送請求(除了HTTP代理服務器),但是它可以添加或者修改請求。一個配置元件進能訪問有所代替元件所在的樹分支的內部。例如,如果你在一個簡單邏輯控制器里面設置一個HTTP Cookie管理器,Cookie管理器很容易訪問web Page 1和web Page 2HTTP請求。但是不能訪問web Page 3。 同樣,一個在樹枝內部的配置元件比在父支的同樣元件有更高的優(yōu)先級。例如,我們定義兩個HTTP默認請求元件,Web Defaults 1和Web Defaults 2。 如果我們把Web Defaults 1放置在一個循環(huán)控制器內部,僅Web Page 2可以訪問它。另一HTTP請求會使用Web Defaults 2,如果我們把它放置在線程組 (所有其他分支的父支)。圖 1 - 測試計劃展示配置元件的可達性4.7 前置處理器元件前置處理器在取樣器請求建立前執(zhí)行一些行為。如果前置處理器附屬于取樣器元件,那么它會

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論