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

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

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

    posts - 97,  comments - 5,  trackbacks - 0
    @import url(http://www.tkk7.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
    出于學習熱情,翻譯總結Emily H. Halili的《Apache JMeter》一書的部分內容。《轉載》

     

    JMeter的簡介

    可以肯定的是,JMeter至少符合以下幾條自動測試標準:

    • 零購置成本--直接從http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi下載得到。
    • 學習曲線平滑--只需要基本的html和正則表達式知識。
    • 功能全面--不僅只能測試web應用。
    • 架構可伸縮--其組件被設計為可通過合并完成大規模測試。測試可以在多臺主機上同時運行。
    • API可擴展--API開放,并可由用戶擴展編程。
    • 技術支持良好--在線用戶指南、用戶論壇、網絡文章也包括這本書。

    本章引導您開始第一次的JMeter試用。將向您介紹JMeterm同時使您對它的能力有一個整體的認識。除此之外,還會帶您認識JMeter的操作界面,讓你親身感受到幾個重要的JMeter組件。

     

     讓我們開始...
    JMeter是一個桌面應用,被設計為用于測試c/s結構的應用程序,如web應用或FTP應用。是到目前為止,一個使用得最廣泛的開源測試工具。它是由 純java編寫的,通過其API可以對它進行擴展。JMeter位于c/s中的客戶端工作,它可以測試服務器的響應時間,CPU負載,內存占用和資源的使 用。

     

     絕大多數的JMeter測試腳本或測試計劃都涉及到創建一個循環,按照預先定義的時間間隔和線程組來模擬向服務器發出請求。這些測試腳本可以定制和擴展。一個基本的JMeter測試計劃應該至少包括三個部分:線程組,監聽器,采樣器。
    線程組用來模擬一組用戶(用戶數至少一個)。
    采樣器使請求發往目標服務器。
    監聽器捕獲每個請求后收到的響應數據。

     

    通過界面認識它
    一個典型的測試計劃由一個或多個線程組,邏輯控制器,監聽器,定時器,斷言和配置等元素組成。
    線程組:一個線程模擬一個用戶。所有的測試計劃的元素都必須放在一個線程組元素下。
    監聽器:監視JMeter運行測試用例時接收到的數據。
    控制器:其邏輯可以自定義,如讓檢驗員告訴JMeter向服務器發出請求。
    定時器:設定一個線程發出的兩次請求間的間隔時長。
    斷言:測試返回的結果是否是期望的值。
    配置:與檢驗員相關,可以增加和修改請求。

     

    以下為界面截屏圖。

     

     


    JMeter界面上有兩個面板,一旦JMeter投入運行,你可以看到它們。測試計劃和工作區面板,如下圖所示。一個測試計劃描述了JMeter投入運行后的測試步驟。工作區提供臨時的數據存放空間。工作區數據與測試計劃分開存放。


     

     

    左邊的面板以樹形顯示了我們測試計劃,其中節點的添加和刪除可以通過右擊節點進行。右邊的面板顯示了每個節點的詳細配置。


     
     

    下面是由一個線程組和其它一些元素組成的一個測試計劃例子。

     
     
     

    在我們使用JMeter進行性能測試時,線程組是必選元素。這個元素可以通過模擬多個用戶對服務器進行壓力測試。你甚至可以對測試進行的時間進行預設,下圖是線程組的詳細顯示。


     
     

    另一方面,同樣一個測試計劃可以擴展成為包括功能或回歸測試。如下圖所示添加Assertion(斷言)元素。



     
     


     正式開始使用...

     安裝JMeter
    你需要首先從以下網址下載最新發布的版本http://jakarta.apache.org/site/downloads/index.html,下載完成后,解壓縮到你想要的目錄就完成了安裝。
    提醒:為了進行遠程測試請避免在壓縮時使用帶空格的目錄名。

    設置環境變量
    首先機器上建議安裝jdk1.4或更高版本。并設置JAVA_HOME環境變量。

     

    運行JMeter
    在你的JMeter的安裝目錄下有bin目錄。在windows系統中,運行jmeter.bat。如果你運行在unix系統中,你需要運行jmeter。
    在這個過程中,JMeter會自動在它的lib目錄或lib/ext目錄中找所需要的jar包。因此,如果將來您自己開發了JMeter的組件,你也需要把它們拷貝到JMeter的lib/exit目錄中。
    如果你運行JMeter在代理或防火墻的后面,你需要提供服務器名和端口號,用命令行的參數指定。
    例如
    jmeter -H 129.198.1.1 -P 8000 -u someusername -a someuserpassword -N localhost

     

     

    測試計劃

     JMeter的測試計劃封裝了你需要手動編寫的測試腳本。
    什么是測試計劃?
    測試計劃定義了如何進行測試的框架。最簡單的測試計劃包括以下元素:
    線程組:用于指定運行線程的個數和坡道期,循環次數。每個線程模擬一個用戶,坡道期指定創建所有線程的時間。例如指定5個線程和10秒的坡道期,表示每個線程的創建時間為2秒。循環次數定義了測試重復的次數。而且可以指定開始和結束的具體時間。

    采樣器:用于發出http/ftp/soap/xml/jdbc/ldap請求到服務器。

    監聽器:用于后處理請求數據。例如你可以保存數據到文件或者以圖表顯示。

     

    開始運行JMeter,測試計劃就會出現工作區左邊的面板窗口中。



      

    具體描述如下:
    User Defined Variables:你可以定義靜態變量,它們是允許你在測試中重復提取的值,如服務器名,端口號等。例如你要測試一個www.example-jmeter.net的應用,你可以定義一個"server"變量,那么測試腳本中的"${server}"就會該值替代。

    Functional Test Mode:它會記錄下從服務器返回的數據。如果你要進行壓力測試,請不要選擇它因為它會影響結果。
    Run each Thread Group separately:單獨運行每個線程組。如果您有二個或更多的線程組在你的測試計劃中。選中該項,表示JMeter會順序地運行它們,否則會并發運行它們。

    Add directory or jar to classpath:如果你自己擴展了JMeter組件,可以使用該項添加jar包。記住需要重啟后才能生效。另外,你也可以直接把jar包拷貝到 JMeter/lib目錄下。或者通過編輯JMeter.properties文件來包含額外的jar,如"#user.classpath=.. /classes;../jars/jar1.jar,這樣可以避免出現路徑中包含空格引發的問題。

     

    測試計劃的組成
    測試計劃必須由至少一個線程組組成。每個線程組中都可以包含一個或多個以下組合:
    采樣器,邏輯控制器,配置,監聽器和定時器。每個采樣器能夠關聯一個或多個預處理元素,后處理元素和斷言元素。讓我們更進一步了解它們。

     

    線程組
    線程組是測試計劃的入口,它包含所有其它的JMeter元素,一個線程組控制所有由JMeter創建的仿真線程,它們模擬多用戶請求。
    線程組代表著一組執行特定測試用例的用戶,在線程組的控制面板里,顯示在下圖。如果有多個線程組那么它們會彼此獨立地執行。

     

    詳細描述如下:
    Action to be taken after a Sampler error:一旦采樣器在測試過程中報錯,你可以作出以下的選擇:Continue繼續進行下測試,stop Thread停止當前測試的線程,Stop Test完成停止測試,便于進行錯誤原因的查看。
    Number of Threads:模擬用戶的人數或者是web應用的連接數。
    Ramp-Up Period:定義JMeter創建所有測試線程的時長。例如設定線程數為10,坡道期為60秒,那么每個線程會以6秒/個的速度連續創建。在60秒以 后,所有的線程將會投入運行。比較好的策略是將你的坡道期設置得足夠長以避免在測試一開始就造成很大的工作負載,但不要過長,你可以一開始將坡道期設置為 等于要創建的線程數,稍后根據情況進行調整。
    Loop Count:定義測試執行的次數,默認情況下,測試僅執行一次。點擊Forever選項框那么測試會一直重復執行直到你手動停止它。
    Scheduler Configuration:1.9之后的版本具有該項,允許你設定測試的開始和結束時間。只有時間到達開始時間,測試才會真正開始。在每個測試循環之 后,除非結束時間到了,測試將會繼續下去一直到達loop count的上限。startup delay用于設定JMeter在第一個測試線程啟動前的開始等待時間,duration用于設定整個測試的進行時間。前者用于覆蓋start time的設定,后者覆蓋end time的設定。

     

     

    控制器
    JMeter有兩類控制器:
    1.Samplers:允許發送特定類型的請求給服務器。稍后我們會發送http請求給服務器,所以我們會選用Http Rquest采集器。可以通過Configuration元素給采集器進行設定。

    2.Logic Controllers:允許自定義何時發出請求的邏輯。例如你可以用Random Controllers來向服務器隨機發出http請求。

     

    采集器
    JMeter采集器允許你定義發往服務器的請求,模擬一個用戶通過網頁向服務器發出的請求。每個采集器生成結果包含以下一些,如性能、延遲時間、呑吐量 等。默認情況下,JMeter會按照采樣器出現在測試計劃樹中的順序發送請求命令。當然,為了處理的采樣的順序可以使用邏輯控制器進一步定制。這將在后面 的“邏輯控制器”中進一步解釋 。

    您可以自定義每個采樣器通過設置其屬性,或者您也可以添加配置元素。在這本書中,因為我們將發出許多HTTP請求到相同的服務器,我們可以使用默認配置元素,它預先定義了發送的http請求。


    一個http請求的采樣器面板顯示如下:


     

     
    如果你希望JMeter進行驗證,你可以添加Assertion元素,關于Assertion的更多內容,后面再詳細介紹。
    在一個Http請求采樣器面板中的響應Assertion顯示如下:

     

     

     以下是JMeter提供的所有采樣器列表:

    HTTP Request
    FTP Request
    JDBC Request
    Java Request
    SOAP/XML-RPC Request
    WebService (SOAP) Request
    LDAP Request
    LDAP Extended Request
    Access Log Sampler
    BeanShell Sampler
    BSF Sampler
    TCP Sampler
    JMS Publisher
    JMS Subscriber
    JMS Point-to-Point
    JUnit Request
    Mail Reader Sampler
    Test Action

     


    邏輯控制器:用于定義采樣器的執行順序。一個邏輯控制器的子元素有:采樣器、配置,其它邏輯控制器。JMeter可能會隨機選取(使用隨機控制器) ,重復(使用回路控制器) ,交換(使用交錯控制器)等。

    幾個邏輯控制器可以結合起來,實現不同的結果。
    一個循環控制器的面板顯示如下:
    以下列出JMeter提供的所有的邏輯控制器:
    Simple Controller
    Loop Controller
    Once Only Controller
    Interleave Controller
    Random Controller
    Random Order Controller
    Throughput Controller
    Runtime Controller
    If Controller
    While Controller
    Switch Controller
    ForEach Controller
    Module Controller
    Include Controller
    Transaction Controller
    Recording Controller
    監聽器
    顯示采集器的結果為表、圖、樹或者日志文本。僅顯示定義在監聽器下的元素的數據。
    每種監聽器以自己的方式來顯示數據,例如為了顯示圖,可以使用"Aggregate Report"監聽器。"Aggregate Report"或"Summary Report"監聽器顯示表。所有的監聽器都會把數據寫到輸出文件,擴展名為jtl。
    一個Aggregate Graph監聽器的面板顯示如下:


     
    所有監聽器的公共屬性:
    Configure button:用于選擇寫到文件中的信息,保存為xml或cvs格式,擴展名為jtl,其中cvs格式使得文件較小。一旦選擇,Save Configuration Window將會出現。


    Browser button:如果你想讀或者顯示以前保存的結果。
    一個監聽器會耗費相當多的內存,如果它關聯多少個采集器。JMeter會變慢,如果你選擇激活多個監聽器。因此盡量選擇合適的監聽器來使用。
    一個減少內存占用的方法是用CSV默認的格式來保存數據,并且使用Simple data Writer監聽器。
    你可以改變默認的格式為xml,通過編輯jmeter.properties。將jmeter.save.saveservice.output_format=csv,改為xml即可。
    以下為所有的監聽器列表:
    Sample Result Save Configuration
    Graph Full Results
    Graph Results
    Spline Visualizer
    Assertion Results
    View Results Tree
    Aggregate Report
    View Results in Table
    Simple Data Writer
    Monitor Results
    Distribution Graph (alpha)
    Aggregate Graph
    Mailer Visualizer
    BeanShell Listener
    Summary Report
    定時器
    定時器組件是可選組件,它會引起JMeter暫停,因為默認情況下JMeter會在一個請求結束后馬上發出下一個請求,這樣能會造成服務器過載。通過添加定時器會降低服務器崩潰的危險。這項功能在進行功能性測試時非常有用。
    不管怎樣,你需要小心在一個測試計劃中添加了過多的定時器。JMeter會在兩次請求間暫停可使用的所有定時器指定時間的總和。
    Constant Timer控制面板如下:


     
    以下是所有JMeter提供的定時器列表:
    Constant Timer
    Gaussian Random Timer
    Uniform Random Timer
    Constant Throughput Timer
    Synchronizing Timer
    BeanShell Timer
    Assertions斷言:允許你針對響應添加驗證條件。它們被添加為采集器的子元素。在進行功能性測試時特別有用。在性能測試中可以用它來保證你收到了響應數據。不包含內容的錯誤或遺失的部分,因為這可能會影響有效性的測試。
    你可以利用類似Perl的正則表達式來創建斷言。用這來判斷應用返回的值是否是你所期望的。
    讓我們來看一下這樣的場景,在一個Http請求的采樣器中,你請求一個頁面,如果返回"Login Successful"字符串表示訪問成功,你可使用Response Assertion來判斷響應中是否具有該字符串。如下圖所示:


    與Assertions相關的監聽器有"View Result in Table", "View Result Tree", "Aggregate Report","Summary Report"監聽器,前三種監聽器將會詳細顯示Assertions結果,而后者只是簡要顯示失敗的比例。
    以下是一個Assertion Results面板顯示:

     
    以下是所有JMeter提供的Assertion的列表:
    Response Assertion
    Duration Assertion
    Size Assertion
    XML Assertion
    BeanShell Assertion
    MD5Hex Assertion
    HTML Assertion
    XPath Assertion
    XML Schema Assertion
    配置元素
    配置元素允許你創建默認的變量在采樣器中使用。用于修改采樣器發出的請求內容。
    它們只能被同一范圍內的采樣器訪問,并且先于采樣器被執行。
    以下是HTTP Request Defaults 面板,如圖:


     
    Request Default 1可以被Request1和Request3采樣器訪問,因為它是父節點,而Request Default2只能被Request1訪問,Request Default3只能被Request3訪問。
    以下是JMeter提供的所有配置元素列表:
    CSV Data Set Config
    FTP Request Defaults
    HTTP Authorization Manager
    HTTP Cookie Manager
    HTTP Proxy Server
    HTTP Request Defaults
    HTTP Header Manager
    Java Request Defaults
    JDBC Connection Configuration
    Login Config Element
    LDAP Request Defaults
    LDAP Extended Request Defaults
    TCP Sampler Config
    User Defined Variables
    Simple Config Element
    Pre-Processor Elements
    預先處理允許你修改范圍內的采樣器。他們經常用于在運行之前修改請求的設置,或者更新不能從響應文本中獲取的變量。
    以下是JMeter提供的預先處理元素。
    HTML Link Parser
    HTTP URL Re-writing Modifier
    HTML Parameter Mask
    HTTP User Parameter Modifier
    User Parameters
    Counter
    BeanShell PreProcessor
    Post-Processor Elements
    后處理元素在采樣器發出請求后執行。一種好的做法是將其做為采樣器的子元素,以保證它只在特定的采樣器運行后執行,而不是全部的采樣器。該元素一般用于處理響應數據,例如,提取稍后要用到的變量值。
    以下是JMeter提供的全部后處理元素。
    Regular Expression Extractor
    XPath Extractor
    Result Status Action Handler
    Save Responses to a file
    Generate Summary Results
    BeanShell PostProcessor
    構建一個用于測試web站點的測試計劃
    本節描述如何創建一個基本的網站測試計劃。我們稍后會對該計劃進行擴展以進行性能測試(第5章)和功能測試(第6章)。
    以下是基本的測試計劃所需要的元素:
    Thread Group
    HTTP Request (Sampler)
    HTTP Request Default (Configuration Element)
    Summary Report (Listener)
    我們可以按照以下的步驟來進行:
    • 添加用戶
    • 添加和配置默認的HTTP Request
    • 添加HTTP Request
    • 添加監聽器顯示、存放測試結果
    • 保存和運行測試計劃
     
    首先,運行JMeter(雙擊JMeter.bat在jmeter/bin目錄中),你可以看到默認的界面,包括測試計劃和工作區。
    添加用戶
    1.右擊Test Plan圖標在左邊窗格,然后選擇add|Thread Group。


     右邊的將顯示Thread Group的控制面板。


    2.將Thread Group更名為My Users.
    3.設定為一次連接和一個用戶。
    4.更變Ramp-Up Period(坡道期)為0,意味著用戶將會馬上開始測試。如果還有其他的用戶,那就意味著所有的用戶立即開始測試。
    設定之后圖如下:

     
    接下來做其它的步驟。
    添加默認的HTTP Request
    1.右擊My Users元素,選擇Add | Config Element | HTTP Request Defaults。
    2.選擇后顯示它的控制臺界面。
    3.重命名為My URL。
    4.在服務器名或IP地址欄中輸入www.mocksite.net或其它你想用的網址。其余不動。設置HTTP Request Default Element會引起在My Users中的所有請求采樣器訪問同一個服務器。
    顯示如下:


     
    添加HTTP Requests
    在這一步,我們將向服務做兩個模擬的請求:默認的頁面和另一個頁面。JMeter會以它們在測試計劃樹中出現的次序來執行,我們首先添加默認頁面的請求。
    1.右擊My Users線程元素,選擇Add | Sampler | HTTP Request.
    2.選擇HTTP Request從左邊窗格,并做以下修改:
    a. Name欄:Home Page
    b. Web Server:這個信息已經在HTTP Request Defaults中設置。在這里不需要修改,除非你需要重定向到另一個不同的路徑。
    c. Path欄:/
    因為我們已經在HTTP Request Default元素中指定Server name,我們就不必再指定其它內容。
    完成后如圖:


    3.添加其它HTTP Request元素在Home Page元素之下。
    a. Name欄:Sample Page
    b. Path欄:/sample.html(或你自己知道的url)
    因為我們已經在HTTP Request Default element指定了服務器名www.mocksite.com,該path就會添加在其后形成完整路徑。
    以下為完成圖:

     
    添加監聽器
    最后,我們添加一個簡單的監聽器,Aggregate Report。這個元素將存放所有http請求的結果,并以表格形式輸出。
    1.選擇My Users元素并Add | Listener | Aggregate Report。
    2.在Write All Data to a File:在Filename欄中輸出目錄名或用browse按鈕選擇,并輸入輸出文件名。
    以下為完成圖:


     
    保存和運行測試計劃
    JMeter要求我們在運行之前保存測試計劃。
    1.選擇Save Test Plan從File菜單。JMeter允許你只保存一部分,通過選擇分支。
    2.在Save as中輸入文件名,例如輸入My Users。擴展名為.jmx。
    3.從run 菜單選擇運行。
    以下為Aggregate Report Element和Control Panel運行結果。注意右上角有小的方框,旁邊的數字顯示激活的線程數和總線程數。


     
    以下為運行測試計劃之后的界面。右上角方框為灰色,只顯示總線程數,你也可以手動停止測試,通過選擇Stop從Run菜單。


     
    報表列解釋如下:
    Label—例子的標簽
    # Samples—URL的樣本數量
    Average—平均時間
    Median—The time in the middle of a set of results
    90% Line—The maximum time taken for the fastest 90% of the samples
    Min—The lowest time for the samples
    Max—The longest time for the samples
    Error %—Percent of requests with errors or failures
    Throughput—Throughput measured in requests per unit of time
    Kb/sec—The throughput measured in Kilobytes per second


    天貓 軟件自動化測試開發

    posted on 2015-03-31 09:46 zouhui 閱讀(548) 評論(0)  編輯  收藏 所屬分類: 2.軟件測試 性能自動化
    <2015年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(2)

    隨筆分類(94)

    隨筆檔案(94)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产免费av片在线播放| 亚洲成人中文字幕| 美女巨胸喷奶水视频www免费| 亚洲精品国产精品乱码视色| 曰批全过程免费视频播放网站 | 亚洲看片无码在线视频| 免费观看国产小粉嫩喷水| 免费成人在线视频观看| 亚洲综合小说另类图片动图| 久久亚洲色一区二区三区| 91频在线观看免费大全| 一级a性色生活片久久无少妇一级婬片免费放 | 一区二区三区免费在线观看| 亚洲精品视频在线播放| xvideos亚洲永久网址| 1000部羞羞禁止免费观看视频| 青青视频免费在线| 亚洲性69影院在线观看| 亚洲人成无码www久久久| 成年人视频免费在线观看| 精品乱子伦一区二区三区高清免费播放| 亚洲日本在线看片| 国产亚洲自拍一区| 日本特黄a级高清免费大片| 99re免费视频| 中文字幕不卡免费视频| 亚洲精品无码久久久久APP | 免费一级成人毛片| 无码人妻一区二区三区免费| a毛片免费全部播放完整成| 亚洲AV成人一区二区三区观看| 亚洲最新在线视频| 亚洲av无码潮喷在线观看| 久久久久亚洲av毛片大| 日本成人在线免费观看| av无码久久久久不卡免费网站| a级成人免费毛片完整版| 永久免费精品影视网站| 久久久亚洲精华液精华液精华液 | 无码A级毛片免费视频内谢| 免费无毒a网站在线观看|