JMeter使用技巧

在這此對(duì)新版本jmeter的學(xué)習(xí)+溫習(xí)的過程,發(fā)現(xiàn)了一些以前不知道的功能,所以,整理出來與大分享。本文內(nèi)容如下。

1.?如何使用英文界面的jmeter

2.?如何使用鏡像服務(wù)器

3.?Jmeter分布式測(cè)試

4.?啟動(dòng)Debug 日志記錄

5.?搜索功能

6.?線程之間傳遞變量

如何使用英文界面的JMeter

Jmeter啟動(dòng)時(shí)會(huì)自動(dòng)判斷操作系統(tǒng)的locale 并選擇合適的語言啟動(dòng),所以,我們啟動(dòng)jmeter后,其會(huì)出現(xiàn)一個(gè)倍感親切的中文界面。但由于jmeter本身的漢化工作做得不好,你會(huì)看到有未被漢化的選項(xiàng)及元件的參數(shù)。而且部分翻譯并不準(zhǔn)確,因此對(duì)于英文比較好的牛人來說更喜歡純正的英文界面。

強(qiáng)制以英文方式啟動(dòng)jmeter的方法如下:

在windows環(huán)境下,打開jmeter解壓目錄,bin目錄下的jmeter.bat文件,也就是jmeter程序的啟動(dòng)文件,選擇記事本方式打開。做以下修改:

.................

set HEAP=-Xms512m -Xmx512m

set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%

set TENURING=-XX:MaxTenuringThreshold=2

set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000

set PERM=-XX:PermSize=64m -XX:MaxPermSize=64mset LOCALE=-Duser.language=en -Duser.region=rem?

set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution

.........

rem Server mode

rem Collect the settings defined above

set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %RMIGC% %PERM% %DDRAW% %LOCALE%.............

暈死,當(dāng)我上面介紹了那么多后,在最新的2.8版本,我無意中發(fā)現(xiàn)了這個(gè)功能。

如何使用鏡像服務(wù)器

  在調(diào)試和修改測(cè)試計(jì)劃的過程中,通常會(huì)為采樣器增加一些額外的設(shè)置,例何設(shè)置額外的HTTP頭、cookie管理器或認(rèn)證管理器等,但當(dāng)設(shè)置了這些內(nèi)容后,sampler發(fā)出的請(qǐng)求是否就與預(yù)期的完全一支呢?

  當(dāng)然用戶可以通過添加監(jiān)聽器來看查采樣器發(fā)出的HTTP請(qǐng)求,但如果調(diào)試過程中并不想真正地把請(qǐng)求發(fā)送給被測(cè)應(yīng)用,如何解決這個(gè)問題呢?

Jmeter 提供了一個(gè)名叫HTTP Mirror Server的組件,HTTP Mirror Server可以啟動(dòng)一個(gè)鏡像的服務(wù)器,該服務(wù)器把所有接收到的請(qǐng)求原封不動(dòng)地返回,這樣就可以看到發(fā)出請(qǐng)求的具體內(nèi)容了。

添加HTTP Mirror Server的方式:

右鍵點(diǎn)擊“工作臺(tái)”--->非測(cè)試元件--->HTTP Mirror Server

如果有必要的話需要修改端口號(hào),點(diǎn)擊“啟動(dòng)”按鈕來啟動(dòng)Server 。

接下來修改采樣器,使其將HTTP請(qǐng)求 發(fā)送到localhost:8081(也就是Mirror Server啟動(dòng)的位置)

然后,運(yùn)行測(cè)試計(jì)劃,則可以從監(jiān)聽器“查看結(jié)果樹”中看到響應(yīng)數(shù)據(jù)。

JMeter分布式測(cè)試

Jmeter 是java 應(yīng)用,對(duì)于CPU和內(nèi)存的消耗比較大,因此,當(dāng)需要模擬數(shù)以千計(jì)的并發(fā)用戶時(shí),使用單臺(tái)機(jī)器模擬所有的并發(fā)用戶就有些力不從心,甚至?xí)餔AVA內(nèi)存溢出錯(cuò)誤。為了讓jmeter工具提供更大的負(fù)載能力,jmeter短小精悍一有了使用多臺(tái)機(jī)器同時(shí)產(chǎn)生負(fù)載的機(jī)制。

  那么,是如何實(shí)現(xiàn)多臺(tái)負(fù)載機(jī)同時(shí)運(yùn)行的呢?當(dāng)然不會(huì)多個(gè)人坐在多臺(tái)負(fù)載機(jī)面前,一喊開始,大家同時(shí)啟動(dòng)jmeter。這種方式很笨,也很難達(dá)到真正的同步。其實(shí),我們通過單個(gè)jmeter 客戶端就可以控制多個(gè)遠(yuǎn)程的jmeter服務(wù)器,使它們同步的對(duì)服務(wù)器進(jìn)行壓力測(cè)試。

  通過遠(yuǎn)程運(yùn)行jmeter,測(cè)試人員可以跨越多臺(tái)低端計(jì)算機(jī)復(fù)制測(cè)試,這樣就可以模擬一個(gè)比較大的服務(wù)器壓力,一個(gè)jmeter客戶端實(shí)例,理論上可以控制任意多的遠(yuǎn)程jmeter實(shí)例,并通過他們收集測(cè)試數(shù)據(jù)。這樣一樣,就有了如下特性:

* 保存測(cè)試采樣數(shù)據(jù)到本地機(jī)器

* 通過單臺(tái)機(jī)器管理多個(gè)jmeter執(zhí)行引擎。

* 沒有必要將測(cè)試計(jì)劃復(fù)制到每一臺(tái)機(jī)器,jmeter GUI客戶端會(huì)將它發(fā)往每一臺(tái)jmeter服務(wù)器。

* 每一臺(tái)jmeter遠(yuǎn)程服務(wù)器都執(zhí)行相同的測(cè)試計(jì)劃,jmeter不會(huì)在執(zhí)行期間做負(fù)載均衡,每一臺(tái)服務(wù)器都會(huì)完整地運(yùn)行測(cè)試計(jì)劃。

  在1.4G Hz~3GHz 的CPU 、1GB 內(nèi)存的 JMeter 客戶端上,可以處理線程 100~300。但是Web Service 例外。XML處理是 CPU 運(yùn)算密集的,會(huì)迅速消耗掉所有的CPU 。一般來說,以XML技術(shù)為核心的應(yīng)用系統(tǒng),其性能將是普通Web 應(yīng)用的 10%~25% 。另外,如果所有負(fù)載由一臺(tái)機(jī)器產(chǎn)生,網(wǎng)卡和交換機(jī)端口都可能產(chǎn)生瓶頸,所以一個(gè)JMeter 客戶端線程數(shù)不應(yīng)超過 10 0 。

  采用JMeter 遠(yuǎn)程模式并不會(huì)比獨(dú)立運(yùn)行相同數(shù)目的非GUI 測(cè)試更耗費(fèi)資源。但是,如果使用大量的JMeter 遠(yuǎn)程服務(wù)器,可能會(huì)導(dǎo)致客戶端過載,或者網(wǎng)絡(luò)連接發(fā)生擁塞。

使用多臺(tái)機(jī)器產(chǎn)生負(fù)載的操作步驟如下:

(1)在所有期望運(yùn)行jmeter作為 負(fù)載生成器的機(jī)器上安裝jmeter, 并確定其中一臺(tái)機(jī)器作為 controller ,其他的的機(jī)器作為agent 。然后運(yùn)行所有 agent 機(jī)器上的jmeter-server 文件(假定使用兩臺(tái)機(jī)器192.168.0.100 和192.168.0.101 作為agent)

(2)在controller機(jī)器的jmeter的bin目錄下,找到j(luò)meter.properties 文件,編輯該文件:

查找:

remote_hosts=127.0.0.1

修改為:

remote_hosts=192.168.0.100:1099,192.168.0.101:1099

  這里要特別注意端口后,有些資料說明端口1644為jmeter的controller 和agent 之間進(jìn)行通信的默認(rèn)RMI端口號(hào),但是在測(cè)試時(shí)發(fā)現(xiàn),設(shè)置為1644運(yùn)行不成功,改成1099后運(yùn)行通過。另外還要留意agent的機(jī)子是否開啟了防火墻等。

(3)啟動(dòng)controller 機(jī)子上的jmeter應(yīng)用,選擇菜單“運(yùn)行”--->“遠(yuǎn)程啟動(dòng)”,來分別啟動(dòng)agent ,也可以直接選擇“遠(yuǎn)程全部啟動(dòng)”來將所有的agent啟動(dòng)。

啟動(dòng)Debug 日志記錄

  大多數(shù)測(cè)試元件都支持Debug 日志記錄。如果通過 GUI 運(yùn)行測(cè)試計(jì)劃,那么在選中測(cè)試元件后,可以通過“幫助”菜單enable debug或者disable debug。在“幫助”菜單 中有一個(gè)選項(xiàng)“What’s this node? ”,

  通過它可以查看GUI 和測(cè)試元件的類名,如圖 11 -7 所示。通過它們,測(cè)試人員可以決定修改哪一項(xiàng)JMeter 屬性,以便修改日志級(jí)別。

例如:我們可以點(diǎn)擊一個(gè)HTTP請(qǐng)求,選擇菜單欄“幫助”--->what's this node ?

在jmeter的bin\目錄下,找到j(luò)meter.properties 文件,關(guān)于日志級(jí)別的屬性如下:

#Logging levels for the logging categories in JMeter. Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG

# To set the log level for a package or individual class, use:

# log_level.[package_name].[classname]=[PRIORITY_LEVEL]

# But omit "org.apache" from the package name. The classname is optional. Further examples below.

log_level.jmeter=INFO

log_level.jmeter.junit=DEBUG

#log_level.jmeter.control=DEBUG

#log_level.jmeter.testbeans=DEBUG

#log_level.jmeter.engine=DEBUG

#log_level.jmeter.threads=DEBUG

#log_level.jmeter.gui=WARN

#log_level.jmeter.testelement=DEBUG

#log_level.jmeter.util=WARN

#log_level.jmeter.util.classfinder=WARN

#log_level.jmeter.test=DEBUG#log_level.jmeter.protocol.http=DEBUG

# For CookieManager, AuthManager etc:#log_level.jmeter.protocol.http.control=DEBUG

#log_level.jmeter.protocol.ftp=WARN

#log_level.jmeter.protocol.jdbc=DEBUG

#log_level.jmeter.protocol.java=WARN

#log_level.jmeter.testelements.property=DEBUG

log_level.jorphan=INFO

搜索功能

  這是在使用一個(gè)變量或含有一定的URL或參數(shù)測(cè)試計(jì)劃樹和元素有時(shí)很難找到?,F(xiàn)在一個(gè)新的特點(diǎn)是從2.6開始,你可以訪問它的菜單搜索。它提供了搜索與下列選項(xiàng):

* 使搜索區(qū)分大小寫區(qū)分大小寫:

* 正則表達(dá)式是一個(gè)正則表達(dá)式搜索文本,如果有的話將被搜索的正則表達(dá)式樹的組件,例如“\ BTEST \ b”將匹配任何組件,包含測(cè)試組件的搜索元素

線程之間傳遞變量

JMeter 變量作用域局限于所屬線程。這樣設(shè)計(jì)是經(jīng)過深思熟慮的,目的是讓測(cè)試線程能夠獨(dú)立運(yùn)轉(zhuǎn)。有時(shí)候用戶可能需要在不同線程間(可能屬于同一個(gè)線程組,也可能不屬于同一個(gè)線程組)傳遞變量。

  其中一種方法就是使用屬性。屬性為所有 JMeter 線程所共享,因此當(dāng)某個(gè)線程設(shè)置一個(gè)屬性后,其他線程就可以讀取更新后的值。

  如果存在大量數(shù)據(jù)需要在線程間傳遞,那么可以考慮使用文件。例如,測(cè)試人員可以在一個(gè)線程中使用監(jiān)聽器,保存響應(yīng)到文件(Save Responses to a file )或者 BeanShell PostProcessor 。而在另外一個(gè)線程中使用HTTP 采樣器的“file: ”協(xié)議來讀取文件,接著使用一個(gè)后置處理器或者BeanShell 測(cè)試元件提取信息。

  如果在測(cè)試啟動(dòng)前測(cè)試人員就能獲得測(cè)試數(shù)據(jù),那么最好將數(shù)據(jù)保存到文件中,使用CSV Dataset讀取。

這最后一個(gè)技巧,操作較為麻煩,暫時(shí)不給詳細(xì)的例子。算是提供個(gè)思路吧!知道有這當(dāng)子事兒就行了。日后有機(jī)會(huì)再實(shí)踐!

好啦,今天的分享到這里就結(jié)束了,如果需要更多的技術(shù)性文章,可以訪問馬哥教育官網(wǎng)歐!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JMeter是一個(gè)流行的用于負(fù)載測(cè)試的開源工具,具有許多有用的功能元件,如線程組(threadgroup),定時(shí)器...
    JAVA伯樂閱讀 919評(píng)論 0 0
  • 公司最近需要測(cè)試后臺(tái)性能,所以學(xué)習(xí)使用了Jmeter,在此做記錄,也分享給更多需要的人。 這篇文章是 JMeter...
    顧顧314閱讀 4,512評(píng)論 0 10
  • jmeter是apache公司基于java開發(fā)的一款開源測(cè)試工具,體積小,功能全,使用方便,是一個(gè)比較輕...
    快樂小白熊閱讀 1,130評(píng)論 0 50
  • JMeter簡(jiǎn)介 JMeter基本概念 Apache JMeter是Apache組織開發(fā)的基于Java的壓力測(cè)試工...
    yo_哥閱讀 3,135評(píng)論 0 19
  • 剛剛掃地看見一片樹葉,綠綠的,很完整,要知道現(xiàn)在是冬季呢,樹上的葉子全落光了,剩幾片也都是枯黃的,像這種綠綠的很罕...
    申振柱閱讀 248評(píng)論 0 1

友情鏈接更多精彩內(nèi)容