<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    利用JMeter進行Web測試(簡介適合初學者)

    利用JMeter進行Web測試
    JMeter介紹
    腳本錄制
    運行JMeter進行測試
    JMeter主要組件介紹
    參數化設置
    動態數據關聯
    使用命令行運行JMeter腳本
    利用XSLT分析JMeter結果文件

    JMeter介紹

    JMeter, 一個100%的純Java桌面應用,它是Apache組織的開放源代碼項目,它是功能和性能測試的工具。JMeter可以用于測試靜態或者動態資源的性能 (文件、Servlets、Perl腳本、Java對象、數據庫和查詢、ftp服務器或者其他資源)。原先Jmemer是為Web/HTTP測試而設計 的,但是它已經擴展以支持各種各樣的測試模塊。它和用于HTTP和SQL數據庫(使用JDBC)的模塊一起運送。它可以用來測試靜止資料庫或者活動資料庫 中的服務器的運行情況,可以用來模擬對服務器或者網絡系統加以重負荷以測試它的抵抗力,或者用來分析不同負荷類型下的所有運行情況。它也提供了一個可替換 的界面用來定制數據顯示,測試同步及測試的創建和執行。
      Jmeter的下載地址:http://jakarta.apache.org/jmeter/usermanual/index.html
      JMeter 的特性:
      a) 能夠對HTTP和FTP服務器進行壓力和性能測試, 也可以對任何數據庫進行同樣的測試(通過JDBC)。
      b) 完全的可移植性和100% 純Java。
      c) 完全 Swing 和輕量組件支持(預編譯的JAR使用 javax.swing.*)包。
      d) 完全多線程 框架允許通過多個線程并發取樣和 通過單獨的線程組對不同的功能同時取樣。
      e) 精心的GUI設計允許快速操作和更精確的計時。
      f) 緩存和離線分析/回放測試結果。
      g) 高可擴展性:
      h) 可鏈接的取樣器允許無限制的測試能力。
      i) 各種負載統計表和可鏈接的計時器可供選擇。
      j) 數據分析和可視化插件提供了很好的可擴展性以及 以及個性化。
      k) 具有提供動態輸入到測試的功能(包括Javascrīpt)。
      l) 支持腳本變成的取樣器(在1.9.2及以上版本支持BeanShell)。

    腳本錄制


    利用BadBoy進行腳本錄制
    利用BadBoy錄制JMeter腳本(1)
    通過Badboy的官方網站(http://www.badboy.com.au)下載Badboy的最新版本;
    安裝Badboy。安裝過程同一般的Windows 應用程序沒有什么區別,安裝完成后你可以在桌面和Windows開始菜單中看到相應的快捷方式——如果找不到,可以找一下Badboy安裝目錄下的Badboy.exe 文件,直接雙擊啟動Badboy;
    啟動Badboy,你可以看到下面的界面。
    利用BadBoy錄制JMeter腳本(2)
    在地址欄(圖中紅色方框標注的部分)中輸入你需要錄制的Web應用的URL——這里我們以http://www.baidu.com 為例 。
    點擊 開始錄制 按鈕(圖中藍色圓圈標注的部分)開始錄制。
    開 始錄制后,你可以直接在Badboy內嵌的瀏覽器(主界面的右側)中對被測應用進行操作,所有的操作都會被記錄在主界面左側的編輯窗口中(圖中黃色方框標 注的部分)——在這個試驗中,我們在baidu的搜索引擎中輸入 JMeter 進行搜索。不過錄制下來的腳本并不是一行行的代碼,而是一個個Web對象——這有點像LoadRunner的VuGen中的Tree View視圖;
    錄制完成后,點擊工具欄中的“停止錄制”按鈕(圖中紫色方框標注的部分),完成腳本的錄制
    利用BadBoy錄制JMeter腳本(3)
    選擇“File -> Export to JMeter”菜單,填寫文件名“baidu.jmx”,將錄制好腳本導出為JMeter腳本格式。也可以選擇“File -> Save”菜單保存為Badboy腳本;
    啟動JMeter并打開剛剛生成的測試腳本,就可以用JMeter進行測試了

    利用JMeter的代理服務器功能進行腳本錄制
    利用JMeter的代理服務器功能
    進行腳本錄制(1)
    在測試計劃中添加線程組,在線程組中添加邏輯控制器-錄制控制器。
    在工作臺中添加非測試元件-HTTP代理服務器。
    端口:即代理服務器的監聽端口,我們設為8080。
    目標控制器選擇:測試計劃>線程組;
    分組選擇:每個組放入一個新的控制器。
    在HTTP代理服務器中添加定時器-高斯隨機定時器(用于告知Jmeter來在其生成的HTTP請求中自動的增加一個定時器)。定時器將會使相 應的的取樣器被延遲。 延時的規則是,在上一個訪問請求被響應并延時了指定的時間后,下一個被定時器影響的取樣訪問請求才會被發送出去。

    如果在代理服務器元件里使用了高斯隨機定時器,就應該在其中的固定延遲偏移(Constant Delay Offset)設置項里添上${T}(用于自動引用紀錄的延遲時間)。
    代理服務器配置好以后,點擊啟動,代理服務器就會開始記錄所接受的HTTP 訪問請求。
    打開瀏覽器,打開Internet選項,將局域網(LAN)設置中的代理服務器設為:localhost,端口為在代理服務器中設的端口:8080。
    在瀏覽器地址欄中輸入地址并進行相關的操作進行錄制,錄制完成后, 停止HTTP 代理服務器; 在錄制控制器元件上單擊右鍵將記錄的元件保存為一個文件用于以后重用,另外,不要忘了恢復瀏覽器的代理服務器設置。

    運行Jmeter進行測試(1)


    腳本錄制完畢后,就可以運行JMeter來進行我們的測試了。
    到JMeter的網站http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
    下載JMeter的最新版本,將zip文件解壓縮到D:/JMeter,運行D:/JMeter/bin下的jmeter.bat即可。
    打開JMeter會有一個默認的測試計劃,點擊文件-打開,選中錄制的腳本文件如:WebXSample_addUser.jmx,打開腳本進行測試。
    在線程組上添加監聽器-聚合報告(用于分析測試結果)后,點擊運行-啟動,開始測試,測試完畢后在聚合報告中就可以看到測試結果。一個簡單的測試計劃就完成了。
    聚合報告顯示測試結果
    Label:每個 JMeter 的 element (例如 HTTP Request )都有一個 Name 屬性,這里顯示的就是 Name 屬性的值
    #Samples:表示你這次測試中一共發出了多少個請求,如果測試計劃模擬10個用戶,每個用戶迭代10次,這里就會顯示100
    Average:平均響應時間 — 默認情況下是單個 Request 的平均響應時間,當使用了事務控制器時,也可以以事務為單位顯示平均響應時間
    Median:中位數,也就是 50 %用戶的響應時間
    90% Line: 90 %用戶的響應時間
    Min:最小響應時間
    Max:最大響應時間
    Error%:錯誤率,本次測試中出現錯誤的請求的數量 / 請求的總數
    Throughput:吞吐量 —— 默認情況下表示每秒完成的請求數( Request per Second )
    KB/Sec:每秒從服務器端接收到的數據量
    測試計劃(Test Plan)是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。
    線程組(Thread Group)代表一定數量的并發用戶,它可以用來模擬并發用戶發送請求。
    取樣器(sampler)定義實際的請求內容,被線程組包含,我們主要用HTTP請求。
    監聽器(Listener)
    邏輯控制器(Logic Controller)
    斷言(Assertions)
    配置元件(Config Element)
    前置處理器(Pre Processors)和后置處理器(Post Processors)
    定時器(Timer)

    JMeter主要組件介紹-測試計劃


    測試計劃(Test Plan)是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。
    名稱:你可以為你的測試計劃取一個有意義的名字。
    注釋:對測試計劃的注釋。
    用戶定義的變量:用戶可以自己定義變量,在用到此變量的時候直接用${變量名}引用即可。例:變量名=url,值=http://www.baidu.com,在需要http://www.baidu.com時直接用${url}即可。
    Add directory or jar to classpath:向類路徑即%JMETER-HOME%\lib中添加目錄及jar包。
    JMeter主要組件介紹-線程組
    名稱:為線程組起名字。
    線程屬性-線程數:設置發送請求的用戶數目 ,即并發數。
    線程屬性-Ramp-Up Period(in second):線程間的時間間隔,單位是秒。即所有線程在多少時間內啟動。
    線程屬性-循環次數:請求的重復次數,如果選擇后面的forever(默認),那么 請求將一直繼續,如果不選擇forever,而在輸入框中輸入數字,那么請求將重復指定的次數,如果輸入1,那么請求將執行一次,如果是0,會出現問題。
    調度器配置-啟動時間:測試計劃什么時候啟動,啟動延遲會覆蓋它。
    調度器配置-結束時間:測試計劃什么時候結束,持續時間會覆蓋它。
    調度器配置-持續時間:測試計劃持續多長時間,會覆蓋結束時間。
    調度器配置-啟動延遲:測試計劃延遲多長時間啟動,會覆蓋啟動時間。
    JMeter主要組件介紹-取樣器(HTTP請求)
    名稱:HTTP請求的名字。
    Web服務器-服務器名稱或IP、端口號,腳本錄制時自動添加,也可以使用“用戶自定義變量”。
    HTTP請求:用默認值即可。
    同請求一起發送參數:請求中的參數、值可以在此設置,需要用到參數化及動態數據關聯,我們在后面專門介紹。
    同請求一起發送文件:我可以制定同請求一起發送哪個文件。
    其他任務包括:從HTML文件中獲取所有內含的資源、用作監視器、Embedded URLs must match
    監聽器(Listener)負責收集測試結果,同時也被告知了結果顯示的方式。我們常用的包括:聚合報告、查看結果樹、用表格查看結果,都支持將結果數據寫入文件。其他的添加上去看看就行。聚合報告前面我們介紹過,后面是查看結果樹和用表格查看結果的截圖。
    JMeter主要組件介紹-監聽器(用表格查看結果)

    JMeter主要組件介紹-邏輯控制器

    邏輯控制器(Logic Controller)可以自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列。
    循環控制器可以設置請求的循環次數或永遠循環(如果選中永遠的話)。
    事務控制器可以將多個請求放在同一個事務中。如果選中Gegerate parent sample,則聚合報告中只顯示事務控制器的數據,而不會顯示其中的各個請求的數據,反之則全部顯示。

    JMeter主要組件介紹-斷言

    斷言(Assertions)可以用來判斷請求響應的結果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執行壓力測試。這個限制對于有效的測試是非常有用的。

    JMeter主要組件介紹-配置元件


    配置元件(Config Element)維護Sampler需要的配置信息,并根據實際的需要會修改請求的內容。我們主要在參數化中用到CSV Data Set Config


    JMeter主要組件介紹-前置處理器和后置處理器

    前置處理器(Pre Processors)和后置處理器(Post Processors)負責在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設置,后置處理器則常常用來處理響應的數據。我們主要在動態關聯中用到后置處理器的正則表達式提取器。     

    JMeter主要組件介紹-定時器


    定時器(Timer)負責定義請求之間的延遲間隔。

    參數化設置


    在我們的測試計劃中我們使用的都是HTTP請求,在HTTP請求中常常會提交一些參數,我們為了不想在每一次請求中都使用相同的參數值,就要想辦法讓每一次請求的參數的值都是不一樣的,我們就需要進行參數化設置,這里我們介紹兩種參數化設置的方法。
    一種是利用函數助手中的_Random函數進行參數化設置;
    一種是利用配置元件中的CSV Data Set Config進行參數化設置。

    參數化設置-函數助手(1)

    JMeter中有一個函數助手的功能,里面內置了多個函數,我們可以利用其中的_Random函數來進行請求中的參數化設置。
    在JMeter中選擇“選項-函數助手對話框”打開函數助手對話框。
    選擇一個功能_Random。
    設定最小值為1。
    設定最大值為100。
    函數名稱設為func1。
    點擊生成將生成一個引用字符串${_Random(1,100,func1},在需要的請求參數中拷貝該字符串即可。
    其中函數名稱用來在引用中作區別,即我們可以設定不同的名稱在不同的地方引用同一個函數的功能
    例如:我們生成了兩個串${_Random(1,100,func1)}、 ${_Random(1,100,func2)},在添加圖書的請求中,我們在bookName的參數值中引 用${_Random(1,100,func1)},在bookConcern的參數值中應用${_Random(1,100,func2)},見截圖, 這樣測試運行時不同的線程將產生不同的bookName和bookConcern。

    參數化設置-CSV Data Set Config(1)


    在線程組上點擊右鍵選擇添加-配置元件-CSV Data Set Config,打開CSV Data Set Config。
    Filename文件名:即參數化要引用的文件名。這里是d:\number.txt
    File encoding文件編碼:可以不填。
    Variable Names(comma-delimited)變量名(用逗號分割):多個變量可以引用同一個文件,用逗號分割。這里是num1,num2
    Delimiter(use ‘\t’ for tab):參數文件中多個變量值的分隔符,\t表示用tab鍵分割,默認是逗號。
    Recycle on EOF?:結束后是否循環?默認是True.
    Number.txt文件內容見截圖。

    參數化設置-CSV Data Set Config(2)


    在添加圖書的請求中,我們在bookName的參數值中引用${num1},在bookConcern的參數值中應用${num2},見截圖,這樣測試運行時不同的線程將產生不同的bookName和bookConcern。

    動態數據關聯

    在HTTP請求的參數中經常會遇到一些參數的值是從服務器相應的動態數據,這些數據需要進行關聯才能使得每一次請求都能成功得被服務器接受,在JMeter中采用正則表達式提取器來獲取這些動態的數據。
    正則表達式允許用戶從服務器響應中獲取數據,作為一個后置處理器,正則表達式提取器會在每一個請求執行后再執行,正則表達式提取請求的參數值,產生模板字符串,并將結果保存到給出的變量中。

    動態數據關聯(1)-正則表達式提取器


    在HTTP請求的參數中經常會遇到一些參數的值是從服務器相應的動態數據,這些數據需要進行關聯才能 使得每一次請求都能成功得被服務器接受,在JMeter中采用正則表達式提取器來獲取這些動態的數據。比如我們想要獲得從服務器相應的TOKEN,就可以 使用下面的正則表達式提取器。
    使用時就可以使用${token_g1}來表示獲取到的TOKEN值。如下圖:

    使用命令行運行JMeter腳本


    JMeter -n -t my_test.jmx -l log.jtl
    -n告知JMeter采用非圖形化運行JMeter腳本
    -t指定要運行的腳本文件
    -l指定保存執行結果的文件名
    執行命令前要檢查當前目錄是否是%JMeter_Home%\bin 目錄;
    如果 JMeter 腳本不在當前目錄,需要指定完整的路徑;如果要把執行的結果保存在其他地方也要指定完整的路徑。

    利用XSLT分析JMeter結果文件(1)


    將結果文件的擴展名改為xml,例:將log.jtl改為log.xml。
    在log.xml的文件頭
    <?xml version="1.0" encoding="UTF-8"?>
    <testResults version="1.2">
    中添加
    <?xml-stylesheet type=“text/xsl” href=“jmeter-results-report.xsl” ?>
    使之變成
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="jmeter-results-report.xsl" ?>
    <testResults version="1.2">
    其中href指定xsl文件的路徑,如果與xml文件在同一目錄,則只寫文件名即可,否則要寫明詳細路徑。
    利用XSLT分析JMeter結果文件(2)
    將修改后的xml文件用瀏覽器打開即可得到統計結果
    JMeter中進行分布式測試
    作為一個純 JAVA 的GUI應用,JMeter對于CPU和內存的消耗還是很驚人的,所以當需要模擬數以千計的并發用戶時,使用單臺機器模擬所有的并發用戶就有些力不從心, 甚至還會引起JAVA內存溢出的錯誤。不過,JMeter也可以像 LoadRunner 一樣通過使用多臺機器運行所謂的代理來分擔負載產生器自身的壓力,并借此來獲取更大的并發用戶數,我們只需手動配置一下即可。
    1、在所有期望運行 JMeter作為 負載產生器的機器上安裝JMeter,并確定其中一臺機器作為 控制器,其他的機器作為 代理。然后運行所有 代理 機器上的JMeter-server.bat文件—假定我們使用兩臺機器172.20.80.47和172.20.80.68作為 代理;
    2、在Controller 機器的JMeter安裝目錄下找到 bin 目錄,再找到 jmeter.properties 這個文件,使用記事本或者其他文字編輯工具打開它;
    3、 在打開的文件中查找“remote_hosts=”這個字符串,你可以找到這樣一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示運行JMeter代理的機器,這里需要修改為“remote_hosts=172.20.80.47,172.20.80.68”;
    4、保存文件,并重新啟動控制器機器上的JMeter,并進入啟動 ->遠程啟動菜單項。就會看到我們剛才添加的兩個代理的地址,選中即可運行,如果想同時啟動所有代理,選擇遠程全部啟動即可。
    要進行分布式測試代理機器上需要添加環境變量,即添加用戶變量JMETER_HOME=d:\jmeter,系統變量中的path中添加d:\jmeter\bin(假設jmeter放在d盤根目錄下)。

    OK  簡單的介紹到此  希望大家多動手練 才是王道~












    posted on 2012-04-09 14:37 順其自然EVO 閱讀(43254) 評論(1)  編輯  收藏 所屬分類: jmeter and badboy

    評論

    # re: 利用JMeter進行Web測試(簡介適合初學者) 2014-10-30 21:21 jmeter.cf

    更多jmeter資料請訪問 http://jmeter.cf  回復  更多評論   

    <2012年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产美女在线精品免费观看| 久久亚洲精精品中文字幕| 亚洲av无码电影网| 久久国产精品免费网站| 久热综合在线亚洲精品| 中文字幕在线免费播放| 中文字幕亚洲不卡在线亚瑟| 无码免费又爽又高潮喷水的视频| 国产一级一片免费播放i| 亚洲av无码专区青青草原| 美女视频黄的全免费视频网站| 亚洲视频国产视频| 久久久久久精品免费看SSS| 亚洲18在线天美| 日韩成人免费在线| 狠狠热精品免费观看| 在线观看亚洲精品国产| 久久九九AV免费精品| 亚洲国产成人久久99精品| 成人黄页网站免费观看大全| 亚洲av无码无线在线观看| 亚洲视频在线一区二区| 好久久免费视频高清| 亚洲欧洲精品视频在线观看| 女人被弄到高潮的免费视频| 男人j进女人p免费视频| 亚洲AV无码成人精品区在线观看| 精品一区二区三区免费毛片爱| 亚洲xxxxxx| 亚洲美日韩Av中文字幕无码久久久妻妇| 91成人免费福利网站在线| 亚洲美女视频免费| 国产一级高清免费观看| 18禁在线无遮挡免费观看网站| 久久精品国产亚洲av麻豆色欲| 成人黄软件网18免费下载成人黄18免费视频 | 亚洲福利电影一区二区?| 最近2019中文免费字幕| 男女猛烈激情xx00免费视频| 青青草原精品国产亚洲av| 毛片免费全部免费观看|