JMETER中文手冊分享簡介_第1頁
JMETER中文手冊分享簡介_第2頁
JMETER中文手冊分享簡介_第3頁
JMETER中文手冊分享簡介_第4頁
JMETER中文手冊分享簡介_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

JMETER中文手冊分享

1.簡介

ApacheJMeter是100%純java桌面應(yīng)用程序,被設(shè)計用來測試C/S結(jié)構(gòu)的軟件(例如

web應(yīng)用程序)。它可以用來測試包括基于靜態(tài)和動態(tài)資源程序的性能,例如靜態(tài)文件,Java

Servlets,Java對象,數(shù)據(jù)庫,F(xiàn)TP服務(wù)器等等。JMeter可以用來在一個服務(wù)器、網(wǎng)絡(luò)或者

對象上模擬重負(fù)載來測試它的強度或者分析在不同的負(fù)載類型下的全面性能。

另外,JMeter能夠通過讓你們用斷言創(chuàng)建測試腳本來驗證我們的應(yīng)用程序是否返回了

我們期望的結(jié)果,從而幫助我們回歸測試我們的程序。為了最大的靈活性,JMeter允許我

們使用正則表達式創(chuàng)建斷言。

1.1歷史

Apache軟件組織的StefanoMazzocchi是JMeter的創(chuàng)始人。他編寫它起初是為了測試

ApacheJServ的性能(一個已經(jīng)被ApacheTomcat工程所替代的工程)。我們重新設(shè)計JMeter

來增強用戶界面并增加功能測試的能力。

1.2未來

我們希望看到作為開發(fā)者利用它的可插入架構(gòu)使JMeter的功能快速擴展。未來發(fā)展的

主要目標(biāo)是在沒有影響JMeter的負(fù)載測試能力的情況下盡可能使JMeter成為最實用的回歸

測試工具。

2.入門

開始使用JMeter最容易的方法是首先下載最新版并且安裝它。這個版本包含所有你在

構(gòu)建和運行Web,FTP,JDBC,和JND1等測試時使用需要的所有文件。

如果你想執(zhí)行JDBC測試,你當(dāng)然需要從供應(yīng)商得到適當(dāng)?shù)腏DBC驅(qū)動。JMeter沒有提

供任何JDBC驅(qū)動。你可能需要下載的其它軟件:

BeanShell-BeanShell函數(shù)和測試元件需要

JavaActivationFramework-JavaMail需要

JavaMail-Mail可視化,MailReader和WebService(SOAP)取樣器需要

JMS-JMS取樣器需要

下一步,開始使用JMeter并且參見用戶手冊創(chuàng)建一個測試計劃一章使自己更加熟悉

JMeter基礎(chǔ)(例如,添加和刪除元件)。

最后,參見如何構(gòu)建一個明確類型的測試用例的適合章節(jié)。例如,如果你對Web應(yīng)用

測試感興趣,那就參見創(chuàng)建一個Web測試計劃。其他具體的測試計劃章節(jié)是:高級Web測

試計劃、JDBC、FTP、JMS點到點、JMS主題、LDAP

2.1需求

JMeter需要最小需求的運行環(huán)境。

2.1.1Java版本

JMeter需要一個完全適當(dāng)?shù)腏VM1.4或者更高

因為JMeter僅使用Java標(biāo)準(zhǔn)API,請不要把因為JRE實現(xiàn)版本而無法運行JMeter的bug

報告提交。

2.1.2操作系統(tǒng)

JMeter是100%純Java應(yīng)用程序并且能夠正確的在任何有適當(dāng)?shù)腏ava實現(xiàn)的操作系統(tǒng)

上運行。

JMeter在下列環(huán)境已經(jīng)被測試:

Unix(Solaris,Linux,等)、Windows(98,NT2000,xp)、OpenVMSAlpha7.3+

2.2可選

如果你計劃做JMeter開發(fā)或者想使用SUN的java標(biāo)準(zhǔn)擴展包,你將需要下列更多的可

選包。

2.2.1Java編譯器

如果你想編譯JMeter源代碼或者開發(fā)JMeter插件,你將需要一個完整的適當(dāng)?shù)腏DK1.4

或者更高。

2.2.2SAXXML解析器

JMeter使用Apache的XercesXML解析器,你可以選擇告訴JMeter使用一個不同的

XML解析器。這樣做,把第三方的解析器的類包包含在JMeter的classpath中,并更新rties

文件里的解析器實現(xiàn)的全類名。

2.2.3Email支持

JMeter有有限的Email能力。它能夠發(fā)送基于測試結(jié)果的Email,并且支持POP/IMAP

取樣器。它現(xiàn)在不支持SMTP取樣。為了能夠支持Email,需要添加Sun的JavaMail包和

activation包至!JJMeterclasspath。

2.2.4SSL力口密

為了測試一個使用SSL加密(HPPS)的web服務(wù)器,JMeter需要一個提供SSL實現(xiàn)

(例如Sun的JavaSecureSocketsExtension-JSSE)。包含需要的加密包到JMeter的

classpath?同樣,通過注冊SSL提供者更新rties文件。

JMeter默認(rèn)協(xié)議等級TLS(傳輸層安全性)。這可以通過修改在ties或者rties文件中

的"Itocol"來改變。

JMeter被配置接受所有的證書,不管是否信賴和合法時間等。這允許在測試服務(wù)器最

大靈活性。如果服務(wù)器需要一個客戶端證書,這是可以提供的。為了更好的管理證書,也要

有一個SSL管理器。

2.2.5JDBC驅(qū)動

如果你需要JDBC測試,需要添加廠商的JDBC驅(qū)動到classpatho確認(rèn)文件是一個jar

文件,而不是zip。

2.2.6ApacheSOAP

ApacheSOAP需要和.你需要下載并拷貝這兩個jar文件到你jmeter/lib目錄.一旦文件

放到那里,JMeter會自動找到它們。

2.2.7BeanShell

為了運行BeanShell函數(shù)或者任何BeanShell測試元件(取樣器,定時器等),你需要

從下載beanshell的jar文件并拷貝jar文件至I]jmeter/lib目錄,JMeter會自動找到它。

2.2.8ActiveMQ3.0類庫

詳細(xì)參見

,詳細(xì)參見JMeterClasspath一章安裝附加的jar包

2.3安裝

我們推薦大多數(shù)用戶運行最新版本。要安裝一個構(gòu)建版本,簡單解壓zip/tar文件到你

想安裝JMeter的目錄。保證一個JRE/JDK正確的安裝并且設(shè)置環(huán)境變量JAVA_HOME,其它

不需要做什么了。

安裝目錄接口應(yīng)該看到的像這樣一些東西(2.3.1版本):

jakarta-jmeter-2.3.1

jakarta-jmeter-2.3.1/bin

jakarta-jmeter-2.3.1/docs

jakarta-jmeter-2.3.1/extras

jakarta-jmeter-2.3.1/lib/

jakarta-jmeter-2.3.1/lib/ext

jakarta-jmeter-2.3.1/lib/junit

jakarta-jmeter-2.3.1/printable_docs

如果你想的話你可以重命名父目錄(例如jakarta-jmeter-2.3.1),但是不要改變?nèi)魏?/p>

子目錄命。父目錄路徑中不能包含任何空格;如果包含,你運行客戶端?服務(wù)器模式會有問

題。

2.4運行JMeter

要運行JMeter;運行(forWindows)或者jmeter(forUnix)文件。那些文件在bin

目錄下。稍微暫停后,JMeterGUI會顯示出來。

在bin目錄你會發(fā)現(xiàn)有些附加腳本很有用。Windows腳本文件(CMD文件需要Win2K

或者更新):

-運行JMeter(默認(rèn)在GUI模式)

-使用一個JMX文件運行非GUI測試

-使用一個JMX文件遠程運行一個非GUI測試

-在GUI模式使用一個JMX文件

-以服務(wù)器模式啟動JMeter

注意:LAST可以在,和中使用,意味著最后一次測試會運行.

Unix腳本文件可以運行在大多Linux/Unix系統(tǒng).

jmeter-運行JMeter(默認(rèn)在GUI模式)

jmeter-server-以服務(wù)器模式啟動JMeter

2.4.1JMeterClasspath

JMeter自動從下列目錄中的jar文件發(fā)現(xiàn)類。

JMETER_HOME/lib-用來放使用的jar文件

JMETER_HOME/lib/ext-用來放JMeter組件和擴展

如果你開發(fā)新品JMeter組件,你可以壓縮它們成jar包并拷貝到JMeter的/lib/ext目錄。

JMeter將會自動發(fā)現(xiàn)在這里的任何jar文件中的JMeter組件。

支持的jar文件(類庫)應(yīng)該放在lib目錄.

如果你不想把擴展jar包放到lib/ext目錄,可以在rties中定義search_paths屬性。不

要使用lib/ext給那些公用的jar包;它僅僅是存放JMeter組件。

其他jar包(例如JDBC,和任何JMeter代碼需要支持的類庫)應(yīng)該被代替放在lib目錄,

而不是lib/ext目錄。

你可以在$爐丫人》01^/旌/1切6*1安裝有用的jar文件,或者(自從2.1.1版本)你可

以在rties中設(shè)置path屬性。

注意設(shè)置CLASSPATH環(huán)境變量將不起作用。這是因為JMeter使用“java-jar”啟動,并

且java命令無記錄忽略CLASSPATH變量,并且當(dāng)使用-jar選項時?classpath/?cp選項也被使

用。

2.4.2使用代理服務(wù)器

如果你從防火墻/代理服務(wù)器后測試,你需要提供給JMeter防火墻/代理服務(wù)器的主機

名和端口號。這樣做,從命令行使用以下參數(shù)運行/jmeter文件:

-H[代理服務(wù)器主機名或者ip地址]

-P[代理服務(wù)器端口]

-N[非代理主機](例如:*.|bcalhost)

-u[代理證書用戶名-如果需要]

-a[代理證書密碼-如果需要]

例如:jmeter-Hmy.r-P8000-uusername-apassword-Nlocalhost

或者,你使用-proxyHost,—proxyPort,—username,and-password

JMeter也有自己的內(nèi)建HTTP代理服務(wù)器,來記錄HTTP(不是

HTTPS)瀏覽器會話。這是和上面的代理設(shè)置描述不混淆的,它是在

JMeter發(fā)出HTTP或者HTTPS請求時使用的。

2.4.3非用戶界面模式(命令行模式)

為了不相互影響測試,你可以選擇運行沒有用戶界面的JMeter。這樣做,使用下列命令

選項:

-n這是指定JMeter在非用戶界面模式運行

-t[包含測試計劃的JMX文件的名字]

-1[記錄取樣結(jié)果的JTL文件的名字]

-r運行在rties文件里所有的遠程服務(wù)器(或者通過在命令行覆蓋屬性指定遠程服務(wù)

器)這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:

-H[代理服務(wù)器主機名或者ip地址]

-P[代理服務(wù)器端口]

例如:jmeter-n-tmy_-1-Hmy.r-P8000

2.4.4服務(wù)器模式

為了分布測試,在服務(wù)器模式運行JMeter,并且通過用戶界面控制每一臺服務(wù)器.

jmeter-server/腳本使用適當(dāng)?shù)腸lasspath為你開始遠程注冊。如果

失敗,參見關(guān)于JMeter服務(wù)器啟動細(xì)節(jié)。

運行jmeter-server/,加上下列選項命令:

這個腳本也允許我們指定可選的防火墻/代理服務(wù)器信息:

-H[代理服務(wù)器主機名或者ip地址]

-P[代理服務(wù)器端口]

例如:jmeter-server-Hmy.r-P8000

2.4.5通過命令行覆蓋屬性

Java系統(tǒng)屬性,JMeter屬性,和日志屬性可以通過命令行直接覆蓋(代替更改rties文

件)。這樣做,使用下列選項:

-D[prop_name]=[value]-定義一個java系統(tǒng)屬性值。

-J[propname]=[value]-覆蓋一個JMeter屬性。

-L[category]=[priority]-覆蓋一個日志設(shè)置,設(shè)置一個特殊目錄為給定的優(yōu)先級。

-L標(biāo)志也可以使用沒有目錄名來設(shè)置根目錄日志等級。

例如:

jmeter=/home/mstover/jmeter_stuff\

-Jremote_hosts=e=DEBUG

jmeter-LDEBUG

注意:命令行參數(shù)在啟動時較早被處理,但是在日志系統(tǒng)被設(shè)置以

后。嘗試使用?J標(biāo)志更新bgjevel或者k)g_file屬性無效。

2.4.6日志和錯誤信息

如果JMeter發(fā)現(xiàn)一個錯誤,一個消息將被寫入日志文件。日志文件名在jmeter.

properties文件中定義。一般定義為。并且在JMeter啟動目錄,例如bin。

當(dāng)在Windows下運行時,如果你不設(shè)置Windows顯示文件擴展名,文件名會僅顯示為

JMetero

還有記錄錯誤,文件記錄一些測試運行信息。例如:

10/17/200312:19:20PMINFO-r:Version1.9.

10/17/200312:19:45PMINFO-.:Loadingfile:c:\mytestfiIes\

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

10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Starting1threadsforgroupBSH.

Rampup=1.

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

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

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

10/17/200312:19:52PMINFO-e.StandardJMeterEngine:Testhasended

日志文件對發(fā)現(xiàn)錯誤原因很有幫助,作為JMeter不會打斷一個測試來顯示一個錯誤對

話框。

2.4.7命令行選項目錄

調(diào)用JMeter的"jmeter-?"命令將打印所有命令選項的一個列表。列表如下:

-h,-help打印使用信息并退出

-v,??version打印版本信息并推出

-p,-propfile{argument}使用的JMeter屬性文件

?q,-addprop{argument}附加的屬性文件

-t,-testfile{argument}運行的JMeter測試文件(.jmx)

-I-logfile{argument)日志取樣文件

-n,-nongui非用戶界面運行JMeter

-s,-server運行JMeter服務(wù)器

-H,--proxyHost{argument}設(shè)置JMeter使用的代理服務(wù)器

-B-proxyPort{argument}設(shè)置JMeter使用的代理服務(wù)器端口

-u,-username{argument}設(shè)置JMeter使用的代理服務(wù)器用戶名

-a,-password{argument}設(shè)置JMeter使用的代理服務(wù)器密碼

?J,??jmeterproperty{argument}={value}定義附力II的JMeter屬性

-D,--systemproperty{argument}={value}定義附加的System屬性

?S,-systemPropertyFile{filename}一個扇性文件被做為系統(tǒng)屬性添加

-L,-bglevel{argument}={value}定義日志等級:[category=]level

例如jorphan=INFOor=DEBUG

-n-runremote從非用戶界面模式啟動遠程服務(wù)器

-d,-homedir{argument}使用的JMeter目錄

2.5配置JMeter

如果你希望改變JMeter運行時的屬性你需要改變在/bin目錄下的rties文件,或者創(chuàng)建

你自己的rties文件并且在命令行指定它。

注意咱從2.1.2,你能夠通過JMeter屬性rties在文件中定義附加的

JMeter屬性,rties默認(rèn)值是rties?如果在當(dāng)前目錄被發(fā)現(xiàn),這個文件

被自動加載。,rties被用來更新系統(tǒng)屬性。

參數(shù):

屬性描述

你可以為你的SSL實現(xiàn)指定類。如果你想使用來自

sun的JSSE,是這樣:...Provi

derder°JMeter默認(rèn)提供https支持。如果你正在使用JDK1.4,

或者你使用帶JSSE類的jar文件在JMeter的classpath里

的JDK1.4。

JMeter默認(rèn)提供https支持是在你使用JDK1.4或者你

..internal

使用把JSSE類的jar包放到JMeterclasspath中的JDK1.3

.der

時候。

你可以指明一個你的XML解析器實現(xiàn)。默認(rèn)值是:

r

e.rs.SAXParser

逗號分割遠程JMeter主機列表。如果你在一個分布

remote_hosts式環(huán)境運行JMeter,列出你用JMeter遠程主機運行的機

器。這允許你使用機器的用戶界面控制那些服務(wù)器。

在JMeter選項屏中你不想看到的組件列表。如果

JMeter被添加越來越多的組件,你會希望定制JMeter只

notjn.menu出現(xiàn)那些你感興趣的組件。你可以在這兒列出那些類名和

他們的類標(biāo)簽(JMeter的用戶界面出現(xiàn)的字符串),它們

將在選項屏中不出現(xiàn)。

列出那些JMeter搜索JMeter附加類的路徑(以;分

search_paths割);例如附加的取樣器。被添加到lib/ext目錄的任何

jar包都被發(fā)現(xiàn)。

JMeter搜索的公用類庫的路徑列表。被添加到lib目

P錄的任何jar包都被發(fā)現(xiàn)。

附加的JMeter屬性文件名。初始化屬性文件后它們

被添加,但是在刃和-J選項被處理之前。

rties附加的系統(tǒng)屬性文件名。-S和-D選項被執(zhí)行前添加。

3.創(chuàng)建一個測試計劃

一個測試計劃描述了一系列Jmeter運行時要執(zhí)行的步驟。一個完整的測試計劃包含一

個或者多個線程組,邏輯控制器,取樣發(fā)生控制,監(jiān)聽器,定時器,斷言和配置元件。

3.1添加和刪除元件

在一個樹上通過右擊可以添加元件到一個測試計劃,并且從“添加”列表中選擇一個新

元件。另外,元件可以從文件加載并且通過選擇“打開"選項添加。

為了刪除元件,確保元件被選中,正確在元件上右擊,并且選擇"刪除"選項。

3.2加載和保存元件

為了從文件加載元件,右擊將要加載元件到的己經(jīng)存在的樹元件,并選擇"打開"選項。

選擇你的元件保存的文件。JMeter會加載元件到樹中。

為了保存樹元件,在一個元件上右擊,選擇"保存"選項。JMeter會保存已選的元件,加

上所有下面的子元件。用這種方法,你能夠保存測試樹的片段,單獨元件,或者整個測試計

劃。

3.3配置樹元件

在測試樹中的任何元件都在JMeter的右側(cè)框架顯示配置。那些配置允許你配置測試元

件的細(xì)節(jié)行為,對于一個元件什么能被配置依賴于它是一個什么類型的元件。

3.4保存測試計劃

雖然這不是必須的,我們推薦你在運行前保存測試計劃。為了保存測試計劃,從文件菜

單選擇保存測試計劃(使用最新版本,你不再需要首先選擇測試計劃元件)。

JMeter允許你保存整個測試計劃樹或者僅它的一部分。為了僅保存

測試計劃樹中特殊"支"位置的元件,從從這個“支"開始的地方選擇樹中

的測試計劃元件,然后右擊鼠標(biāo)訪問保存菜單項。另外選擇合適的測試

計劃元件并從編輯菜單選擇保存。

3.5運行一個測試計劃

為了運行一個測試計劃,從“運行”菜單項選擇"開始"。為了停止你的測試計劃,從同樣

的菜單選擇"停止"。JMeter不會自動給它是否正在運行任何顯示.如果]Meter運行,一些

監(jiān)聽器使它變明顯,但是唯一確定的方法是檢查“運行"菜單。如果“開始"不可用,"停止”可

用,證明JMeter正在運行你的測試計劃(或者至少它認(rèn)為它是)。

有兩個類型的停止命令:

停止(Control+-立刻停止所有的線程

關(guān)閉(Control+,;)-請求所有線程在當(dāng)前任務(wù)結(jié)束后停止

3.6元件作用域及執(zhí)行順序

3.6.1作用域規(guī)則

JMeter中共有8類可被執(zhí)行的元件(測試計劃與線程組不屬于元件),這些元件中,

取樣器是典當(dāng)?shù)牟慌c其它元件發(fā)生交互作用的元件,邏輯控制器只對其子節(jié)點的取樣器有

效,而其它元件(configelements>timers>post-processorsassertions>listeners、)需

要與取樣器(sampler)等元件交互。

配置元件(configelements):元件會影響其作用范圍內(nèi)的所有元件。

前置處理程序(Per-processors):元件在其作用范圍內(nèi)的每一個sampler元件之前執(zhí)

行。

定時器(timers):元件對其作用范圍內(nèi)的每一個sampler有效

后置處理程序(Post-processors):元件在其作用范圍向的每一個sampler元件之后執(zhí)

行。

斷言(Assertions):元件對其作用范圍內(nèi)的每一個sampler元件執(zhí)行后的結(jié)果執(zhí)行校

驗。

監(jiān)聽器(Listeners):元件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。

在jmeter中,元件的作用域是靠測試計劃的的樹型結(jié)構(gòu)中元件的父子關(guān)系來確定的,

作用域的原則是:

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

邏輯控制器(LogicController)元件只對其子節(jié)點中的取樣器和邏輯控制器作用。

除取樣器和邏輯控制器元件外,其他6類元件,如果是某個sampler的子節(jié)點,則該

元件公對其父子節(jié)點起作用。

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

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

3.6.2元件的執(zhí)行順序

了解了元件有作用域之后,來看看元件的執(zhí)行順序,元件執(zhí)行順序的規(guī)則很簡單,在同

一作用域名范圍內(nèi),測試計劃中的元件按照如下順序執(zhí)行。

(1)配置元件(configelements)

(2)前置處理程序(Per-processors)

(3)定時器(timers)

(4)取樣器(Sampler)

(5)后置處理程序(Post-processors)(除非Sampler得到的返回結(jié)果為空)。

(6)斷言(Assertions)(除非Sampler得到的返回結(jié)果為空)°

(7)監(jiān)聽器(Listeners)(除非Sampler得到的返回結(jié)果為空)。

關(guān)于執(zhí)行順序,有三點需要注意:

*前置處理器、后置處理器和斷言等元件只能對取樣器作用,因此如果在它們的作用域

內(nèi)沒有任何取樣器,則不會被執(zhí)行。

*如果在同一作用域范圍內(nèi)有多個同一類型的元件,則這些元件按照它們在測試計劃中

的上下順序依次執(zhí)行。

*一個斷言在測試樹中是分等級的。如果它的父元件是請求,它就被應(yīng)用于那個請求。

如果它的父元件是控制器,它就影響所有那個控制器下的所有請求。

91TestPlan

9應(yīng)'ThreadGroup

One

9:為SimpleController

Two

/Three

/?Four

請求的順序是One,Two,Three,Four。

一些控制器影響它的子元件的順序,你可以在組件參考讀到特定的控制器。

<?&TestPlan

92ThreadGroup

0/One

□Assertion#1

中⑥SimpleController

/Two

4*Three

QAssertion#2

Four

Assertion#1僅被應(yīng)用于請求One,Assertion#2僅被應(yīng)用于請求Two和Three。

9匚TestPlan

9盤ThreadGroup

One

9⑥SimpleController

/Two

Timer#1

9.Three

PlAssertion#1

9,⑥SimpleController

「Four

Five

ETimer#2

在這個例子里,請求的命名表現(xiàn)它們被執(zhí)行的順序。Timer#1應(yīng)用于請求Two,Three,

和Four(注意對于分等級的元件怎樣的順序是不相關(guān)的)。Assertion#1應(yīng)用于請求Three。

Timer#2對所有請求有效。

元件首部管理器,Cookie管理器和授權(quán)管理器的配置和默認(rèn)元件的配置被視為是不同

的默認(rèn)元件配置的設(shè)置被并入取樣器可以到達的一組值里了。然而來自管理器的設(shè)置沒有并

入。如果多于一個管理器在一個取樣器范圍中,僅僅一個被使用,但是現(xiàn)在沒有辦法指定那

個被使用。

3.7錯誤報告

JMeter把警告和錯誤信息報告在文件中,也有一些測試運行本身的信息.只是偶爾地,

JMeter對于某些錯誤是無法補捉和記錄的,這些信息會顯示在命令臺上。如果一個測試的

執(zhí)行并不是你所期待的,請檢查日志,也許錯誤會被報告(例如:也許在函數(shù)調(diào)用上有語法

錯誤)。

取樣錯誤(例如:HTTP404-找不至U文件)是不會被正常的記錄在日志中的,取而代之

的,他們會被當(dāng)作取樣結(jié)果的屬性來儲存,取樣結(jié)果的狀態(tài)能被許多不同的監(jiān)聽器所得到。

4.測試計劃元件

測試計劃對象有一個叫做“功能測試”復(fù)選框。如果被選擇,它會使JMeter記錄來自服

務(wù)器返回的每個取樣的數(shù)據(jù)。如果你在測試監(jiān)聽器中選擇一個文件,這個數(shù)據(jù)將被寫入文

件。如果你嘗試一個較小的測試來保證JMeter配置正確并且你的服務(wù)器正在返回期望的結(jié)

果,這是很有用的。這樣的后果就是這個文件會快速的增大,并且JMeter的效率會影響。

如果你不做壓力測試這個選項應(yīng)該關(guān)閉(默認(rèn)關(guān)閉)。

如果你不記錄數(shù)據(jù)到文件,這個選項就沒有不同了。

4.1線程組

線程組元件是任何測試計劃的起點。一個測試計劃的所有元件必須在一個線程組下。由

名字可以看出,線程組元件控制JMeter運行測試時使用的線程數(shù)。線程組管理允許你:

設(shè)置線程數(shù)

設(shè)置ramp-upperiod

設(shè)置執(zhí)行測試的次數(shù)

每個線程會作為一個整體執(zhí)行測試計劃并完全獨立于他測試線程。多線程用來模擬到達

服務(wù)器程序的同步連接。

Ramp-upperiod告訴JMeter多久開始"ramp-up"選擇的全部線程。如果使用10個線程,

ramp-upperiod是100秒,那么JMeter用100秒彳吏所有10個線程啟動并運行。每個線程

會在上一個線程啟動后10秒(100/10)啟動。如果有30個線程和一個120秒的ramp-up

period,那么每個連續(xù)的線程會延遲4秒。

Ramp-up需要要充足長以避免在啟動測試時有一個太大的工作負(fù)載,并且要充足小以

至于最后一個線程在第一個完成前啟動(除非你想那樣發(fā)生)。

使用ramp-up=線程數(shù)啟動,并上下調(diào)整到所需的。

默認(rèn),線程組被配置僅循環(huán)一次。

1.9版本引入了一個測試運行*調(diào)度器*。單擊在線程組面板底部的復(fù)選框來顯示額外的

文本域,在里面你可以輸入啟動和結(jié)束時間。當(dāng)測試啟動時,如果必須JMeter會等待啟動

時間到達。在每個周期結(jié)束,JMeter檢驗結(jié)束時間是否到達,如果是,運行停止,如果不

是測試被允許繼續(xù),直到迭代限制到達。

另外你可以使用啟動延遲和持續(xù)時間文本域。注意啟動延遲會覆蓋啟動時間,持續(xù)時間

會覆蓋結(jié)束時間。

4.2控制器

JMeter有兩種控制器:取樣器和邏輯控制器。

取樣器告訴JMeter發(fā)送請求到服務(wù)器。例如,如果你要JMeter發(fā)送一個HTTP請求添

加一個HTTP請求取樣器。你也可以通過添加一個或者多個配置元件到一個取樣器來定制一

個請求。更多信息,見取樣器。

邏輯控制聯(lián)立你定制當(dāng)發(fā)送請求時JMeter使用的判斷邏輯.例如,你可以添加交替控

制器來在兩個HTTP請求取樣器之間交替。更多信息,見邏輯控制器。

4.2.1取樣器(Sampler)

取樣器告訴JMeter發(fā)送請求到服務(wù)器。JMeter取樣器包括:

FTP請求

HTTP請求

JDBC請求

Javaobject請求

LDAP請求

SOAP/XML-RPC請求

WebService(SOAP)請求

每個取樣器有一些你可以設(shè)置的屬性。你可以通過添加一個或多個配置元件到取樣器來

進一步定制它。注意JMeter發(fā)送請求按照取樣器出現(xiàn)在樹中的順序。

如果你想發(fā)送多個相同類型的請求(例如,HTTPRequest)到相同的服務(wù)器,可以考

慮使用一個默認(rèn)配置元件。每個控制器有一個或者多個默認(rèn)配置元件(見下)。

記得添加一個監(jiān)聽器到線程組來查看/保存你的請求結(jié)果到磁盤。

如果你對使用JMeter平臺的基礎(chǔ)驗證器到你的請求響應(yīng)感興趣,添加一個斷言到請求

控制器。例如,在壓力測試一個web程序時,服務(wù)器會返回一個成功的HTTP響應(yīng)代碼,

但是這個頁面有錯誤或者被忽略部分。你可以添加斷言來檢查某個HTML標(biāo)簽,一些錯誤

字符串,等等。JMeter允許你使用正則表達式創(chuàng)建斷言。

JMeter內(nèi)建取樣器

4.2.2邏輯控制器

保持

邏輯控制器讓你定制當(dāng)發(fā)送請求時JMeter使用的判斷邏輯。邏輯控制器還可以作為下列任

何元件的子元件:取樣器(請求)、配置元件、和其他邏輯控制器。邏輯控制器可以改變來

自它們的子元件的請求順序。它們可以修改請求本身,導(dǎo)致JMeter重復(fù)請求,等。

理解邏輯控制器在測試計劃中的效果,考慮下列測試樹:

測試計劃

線程組

僅一次控制器

登錄請求(一個HTTP請求)

加載搜索頁面(HTTP取樣器)

InterleaveController

搜索"A"(HTTP取樣器)

搜索"B"(HTTP取樣器)

HTTP默認(rèn)請求(配置元件)

HTTP默認(rèn)請求(配置元件)

Cookie管理器(配置元件)

這個測試的第一件事就是登錄請求僅在第一次經(jīng)過時被執(zhí)行。隨后的迭代會忽略它。這

應(yīng)使用僅一次控制器。

登陸后,下一個取樣器加載搜索頁面(假設(shè)一個用登錄的web應(yīng)用程序,并到達搜索

頁面去搜索)。這僅是一個簡單的請求,不會被任何邏輯控制器過濾。

加載搜索頁面后,我們要做一個搜索。事實上,我們想做兩個不同的搜索。然而,在每

個搜索之間我們想要自己重新加載搜索頁面。我們通過4個簡單HTTP元件這樣做。(bad

search,search"A",loadsearch,search"B").Instead,weusetheInterleaveControllerwhich

passesononechildrequesteachtimethroughthetest.Itkeepstheordering(ie-itdoesn't

passoneonatrandom,but"remembers"itsplace)ofitschildelements.Interleaving2child

requestsmaybeoverkill,buttherecouldeasilyhavebeen8,or20childrequests.

注意HTTP默認(rèn)請求屬于插入控制器。假如"SearchA"和"SearchB”共享同樣的PATH信

息(一個HTTP請求說明中包括域,端口,方法,協(xié)議路徑和參數(shù),附加其他可選項)。兩

個搜索請求訪問同樣的后端搜索引擎(比方說Servle,或者cgi腳本),這樣是說得通的。

與其兩者都配置使用相同信息的HTTP取樣器,我們可以抽象那些新到一個單獨的配置元

件。當(dāng)內(nèi)部控制器通過"SearchA"或者"SearchB"傳遞時,它會從HTTP默認(rèn)請求配置元件

中獲得值填充空白。所以我們可以為那些請求保留PATH域為空,然后把那些信息放到配置

元件。在這個例子中,這至多是一個很小的好處,但它顯示了這個特性。

在這個樹中下一個元件是另一個HTTP默認(rèn)請求,這個時間被添加到線程組本身。這個

線程組有一個內(nèi)建的邏輯控制器,因此它正好使用這個配置元件做為上面的描述。它填充

任何穿過的請求的空白。在web程序中你所有的HTTP取樣器元件DOMAIN域為空,這是

極度有用的,替代的,把那些信息放到HTTP默認(rèn)請求元件中,添加到線程組。通過這樣做,

你可以在一個同的服務(wù)器通過改變你測試計劃中的一個域來測試你的程序。另外,你必須編

輯每個取樣器。

最后一個元件是一個HTTPCookie管理器。一個Cookie管理器應(yīng)該添加到所有web測

試上-否則JMeter會忽略Cookie。通過在線程組級添加它,我們可以確定所有的線程分享同

樣的Cookie(>

邏輯控制器可以組合達到不同的結(jié)果。見內(nèi)建邏輯控制器列表。

4.3監(jiān)聽器

監(jiān)聽器提供訪問JMeter收集當(dāng)JMeter運行的關(guān)于測試計劃的信息。

圖形結(jié)果監(jiān)聽器在一張圖上繪制響應(yīng)時間。

"查看結(jié)果樹"監(jiān)聽器顯示了請求和響應(yīng)取樣器的細(xì)節(jié),并且以基礎(chǔ)的HTML和XML顯

示響應(yīng)表現(xiàn)。

其他監(jiān)聽器提供了摘要或者集合信息。

另外,監(jiān)聽器可以指導(dǎo)它們收集的數(shù)據(jù)到一個文件供以后用.在JMeter中每一個監(jiān)聽

器提供一個域來指出存儲數(shù)據(jù)的文件。

在測試中監(jiān)聽器可以添加到任何位置。它們僅僅會從它們等級或者它們以下等級的元件

收集數(shù)據(jù)。

伴隨JMeter有很多有趣的監(jiān)聽器。

4.4定時器

默認(rèn),JMeter線程發(fā)送請求時不在請求間暫停。我們建議你通過添加一個可用的定時

器到你的線程組來指定一個延遲。如果你不添加延遲,JMeter會在短時間內(nèi)產(chǎn)生太多請求,

可能會壓倒你的服務(wù)。

定時器會使JMeter在一個線程開始每個請求間延遲一段時間。

如果你選擇添加多于一個定時器到一個線程組,JMeter會在執(zhí)行取樣器前獲得定時器

數(shù)量并暫停那個時間量。

4.5斷言

斷言允許你斷言關(guān)于從測試服務(wù)器收到的響應(yīng)的行為。使用斷言你本質(zhì)上你可以測試你

的應(yīng)用程序返回你期望的結(jié)果。

例如,你可以斷言一個查詢的響應(yīng)會包含一些特殊的文本。你指定的文本可能是Perl

風(fēng)格的正則表達式,并且你可以指出這個響應(yīng)是包含這個文本,還是匹配整個響應(yīng)。

你可以添加一個斷言到任何取樣器。例如你可以添加一個斷言到HTTP請求檢查文本

"</HTML>",JMeter會檢查在HTTP響應(yīng)中表現(xiàn)的文本。如果JMeter沒有找到這個文本,

它會標(biāo)記這個為一個失敗的請求。

為了查看斷言結(jié)果,添加一個斷言監(jiān)聽器到線程組。

Assertion--斷言,通常是用于對每一個requestsampler進行額外驗證的工具。下面通過

―■個例子來介紹一下常用的幾個Assertionso

假設(shè)現(xiàn)在要進行一個登陸的壓力測試,下面是對pass的幾個定義:

1.正確bgin后,必須收到返回的身份驗證和用戶個人信息下載的完成信息;

2.響應(yīng)時間不能超過150毫秒

3.返回的結(jié)果大小不能小于750bytes

根據(jù)以上的要求,我們在對應(yīng)的requestsampler下面添加了以下的Assertions?

?aBadboyTestPlan

?腎ThreadGroup

,修HTTPCookieManager

|_jUserParameters

q通Step1

f/DoLogin

CSVDataSetConfig

ResponseAssertion

SizeAssertion

回AggregateReport

回ViewResultsTree

國WorkBench

A.ResponseAssertion

ResponseAssertion

Name:ResponseAssertion

________________________________________________________________________________________

ResponseFieldtoTest

?TextResponseURLSampledResponseCodeResponseMessageResponseHeadersIgnoreStatus

PatternMatchingRules

色Contains(MatchesCEquals[Not

PatternstoTest

ResponseFieldtoTest■■標(biāo)示被檢查對象是什么?

PatternMatchingRules-標(biāo)明被檢查對象與驗證內(nèi)容之間的關(guān)系,Contains(包含關(guān)

系);Matches(匹配關(guān)系);Equals(相等關(guān)系);Not(非關(guān)系)

PatterntoTest-需要驗證的內(nèi)容列表

B.DurationAssertion

DurationAssertion

Name:DurationAssertion

Comments:

DurationtoAssert

Durationinmilliseconds:123

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

C.SizeAssertion

SizeAssertion

Name:IsizeAssertion

Comments:

SizetoAssert

TypeofComparison

0ss

O!=

Sizeint)ytes:10⑥〉

O<

o>=

o<=

SizetoAssert-對于返回結(jié)果文件大小的標(biāo)準(zhǔn)定義

二、結(jié)果分析

添加了以上的Assertions后,我運行了一次腳本。以下是存放結(jié)果的.jtl文件的內(nèi)容:

timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success/

ailureMessage,bytes,Latency

11/04/0813:22:03,172,DoLogin,200,OK,ThreadGroupfalse,Theoperationlasted

toobng:Ittook172milliseconds,butshouldnothavelastedlongerthan150

milliseconds.,835,172

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?2,text,false,Testfailed:text

expectedtocontain/bginMsg="OK"/,633,156

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?3,text,false,Theoperationlasted

toobng:Ittook156milliseconds,butshouldnothavelastedlongerthan150

milliseconds.,839,156

11/04/0813:22:03,156,DoLogin,200,OK,ThreadGroup1?4,text,false,Theoperationlasted

toolong:Ittook156milliseconds,butshouldnothavelastedlongerthan150

milliseconds.,836,156

11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroupl?5,text,true〃779,78

11/04/0813:22:03,63,DoLogin,200,OK,ThreadGroup1?7,text,false,Testfailed:textexpected

tocontain/foginMsg="OK"/,570,63

11/04/0813:22:03,141,DoLogin,200,OK,ThreadGroup1?6,text,false,Theresultwasthe

wrongsize:Itwas721bytes,butshouldhavebeengreaterthan750bytes.,721,141

11/04/0813:22:03,78,DoLogin,200,OK,ThreadGroup1?9,text,false,Theresultwasthe

wrongsize:Itwas724bytes,butshouldhavebeengreaterthan750bytes.,724,78

11/04/0813:22:03,204,DoLogin,200,0K,ThreadGroup1-10,text,false,Theoperationlasted

toobng:Ittook204milliseconds,butshouldnothavelastedlongerthan150

milliseconds.,1137,204

11/04/0813:22:03,2985,DoLogin,200,OK,ThreadGroup1?8,text,false,Testfailed:text

,

expectedtocontain/foginMsg='OK'7/570,2985

我?可以看到,每一個Sampler都會經(jīng)過Assertions的判斷,只要有一個不符合條件的

都會標(biāo)示為False。

4.6配置元件

配置元件配合取樣器工作。雖然它不發(fā)送請求(除了HTTP代理服務(wù)器),但是它可以

力口可^q多j青^

一個質(zhì)置元件進能訪問有所代替元件所在的樹分支的內(nèi)部。例如,如果你在一個簡單邏

輯控制器里面設(shè)置一個HTTPCookie管理器,Cookie管理器很容易訪問“webPage1"和“web

Page2"HTTP請求。但是不能訪問"webPage3"。

同樣,一個在樹枝內(nèi)部的配置元件比在父支的同樣元件有更高的優(yōu)先級。例如,我們定

義兩個HTTP默認(rèn)請求元件,“WebDefaults1”和"WebDefaults2%如果我們把“WebDefaults

1”放置在一個循環(huán)控制器內(nèi)部,僅"WebPage2”可以訪問它。另一HTTP請求會使用“Web

Defaults2”,如果我們把它放置在線程組(所有其他分支的父支)。

9.TestPlan

?rThreadGroup

9迪SimpleController

捷^HTTPCookieManager

JWebPage1

9fjf;LoopController

WebPage2

加JWebDefaults1

,?WebPage3

^t|WebDefaults2

UJ|WorkBench

圖1-測試計劃展示配置元件的可達性

4.7前置處理器元件

前置處理器在取樣器請求建立前執(zhí)行一些行為。如果前置處理器附屬于取樣器元件,那

么它會僅在那個取樣器元件運行前執(zhí)行。前置處理器最常用來在取樣請求運行前修改它的設(shè)

置,或者更新不能從響應(yīng)文本提取的變量。當(dāng)前置處理器執(zhí)行時,詳細(xì)信息見作用域規(guī)則。

4.8后置處理器元件

后置控制器在取樣器請求建立后執(zhí)行一些行為。如果后置處理器附屬于取樣器元件,那

么它會僅在那個取樣器元件運行后執(zhí)行。后置處理器最常用來處理響應(yīng)數(shù)據(jù),常用來從它里

面提取數(shù)值。\\\\\\詳細(xì)見作用域規(guī)則關(guān)于前置處理器執(zhí)行。

4.9執(zhí)行順序

配額制元件

前置處理器

定時器

取樣器

后置處理器(如果SampleResult不為空)

斷言(如果SampleResult不為空)

監(jiān)聽器(如果SampleResult不為空)

溫馨提示

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

評論

0/150

提交評論