qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          性能測試工具JMeter的使用技巧

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

            1、如何使用英文界面的jmeter
            2、如何使用鏡像服務(wù)器
            3、Jmeter分布式測試
            4、啟動Debug 日志記錄
            5、搜索功能
            6、線程之間傳遞變量

            如何使用英文界面的JMeter

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

            強制以英文方式啟動jmeter的方法如下:

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

          .................
          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=64m
          set 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%
          .............

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

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

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

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

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

            添加HTTP Mirror Server的方式:

            右鍵點擊“工作臺”--->非測試元件--->HTTP Mirror Server

            如果有必要的話需要修改端口號,點擊“啟動”按鈕來啟動Server。

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

            使用多臺機器產(chǎn)生負載的操作步驟如下:

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

            (2)在controller機器的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 之間進行通信的默認RMI端口號,但是在測試時發(fā)現(xiàn),設(shè)置為1644運行不成功,改成1099后運行通過。另外還要留意agent的機子是否開啟了防火墻等。

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

            啟動Debug 日志記錄

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

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

            例如:我們可以點擊一個HTTP請求,選擇菜單欄“幫助”--->what's this node ?

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

          #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

            搜索功能

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

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

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

            線程之間傳遞變量

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

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

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

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

            這最后一個技巧,操作較為麻煩,暫時不給詳細的例子。算是提供個思路吧!知道有這當子事兒就行了。日后有機會再實踐^_^

          posted on 2013-01-11 11:09 順其自然EVO 閱讀(635) 評論(0)  編輯  收藏 所屬分類: jmeter and badboy

          <2013年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 个旧市| 稻城县| 宁德市| 威远县| 蕲春县| 磴口县| 许昌县| 临夏市| 开阳县| 竹北市| 庄河市| 尉氏县| 霞浦县| 晋城| 海原县| 中卫市| 五指山市| 防城港市| 潮安县| 定陶县| 聂荣县| 临沭县| 保定市| 乌苏市| 红安县| 扶余县| 包头市| 县级市| 报价| 合川市| 玉门市| 商丘市| 织金县| 河津市| 昆山市| 德兴市| 永州市| 阳春市| 察雅县| 岗巴县| 德昌县|