Jmeter性能測試學習隨筆(一)

Jmeter簡介

對於性能測試來說,工具並不是核心,分析、評估、找出性能問題纔是核心,這些是主管因素;工具是客觀因素,在工具選擇時,專業穩定高效的Loadrunner是最佳選擇,但要考慮投入產出比,我們可以選擇免費開源的Jmeter。
Jmeter可以對web應用進行測試,同事也提供了web錄製功能。其可以作爲web服務器與瀏覽器直接的代理網關,以便捕獲瀏覽器的請求和web服務器的響應,如此就可以很容易地生成性能測試腳本。有了性能測試腳本,jmeter就可以通過線程來模擬真實用戶對web服務器的訪問壓力。

Jmeter體系結構

  • 取樣器:用來模擬用戶操作,向服務器(被測試系統)發出 Http請求、WebService (SOAP/XML-RPC Request)請求或者Java請求等。我們可以把 Http 請求元件看成是一個沒有界面的瀏覽器,它可以發送 Http 請求,接收服務器的響應數據。取樣器
  • 斷言:斷言用來驗證結果是否正確,用過LoadRunner的讀者應該會知道檢查點這個功能,可以幫助我們來判斷請求是否成功返回且是否符合要求,在JMeter中我們不叫檢查點,我們叫斷言。說白了就是用一個預設的結果(值、表達式、時間長短等條件)與實際結果匹配,匹配到則成功,反之失敗。斷言
  • 監聽器:JMeter 的測試結果需要添加監聽器來收集,JMeter結果收集程序的設計模式就是監聽器模式。JMeter的監聽器有兩個任務。
    (1)添加結果監聽,並且可以保存測試結果到文件,這些結果數據可以供再次分析使用。
    (2)展示結果,JMeter可以以表格及圖形的形式展現結果,方便測試人員分析測試結果。我們在開發測試腳本時,不可避免需要調試,監聽器也提供了輔助(比如察看結果樹,我們可以在其中看到請求與響應的數據)。監聽器
  • 前置處理器:在測試腳本開發過程中,我們在請求發送前可能會做一些環境或者參數的準備工作,那麼我們可以在前置處理器中來完成這些工作。比如,我們在對數據庫進行操作前需要先建立一個數據庫連接,那麼前置處理器就可以完成這個功能。前置處理器
  • 配置元件:性能測試中爲了模擬大量用戶操作我們往往需要做參數化,Jmeter 的參數化可以通過配置元件來完成,比如CSV Data Set Config,它可以幫助我們從文件中讀取測試數據。另外JMeter也提供了衆多的函數來幫我們生成動態數據。當然配置元件的作用不僅於此,它還可以用來記錄服務器的返回數據,比如Http Cache Manager,自動記錄服務器返回的Cache信息。簡而言之它爲取樣器提供預備數據,然後由取樣器發出請求。配置元件
  • 後置處理器:後置處理器一般放在取樣器之後,用來處理服務器的返回結果,比如一個Web應用程序,我們登錄後會返回一個SessionID,這個SessionID在登錄之後的業務操作過程中會作爲驗證條件,驗證用戶是否合法登錄了。我們利用取樣器模擬這個請求時就需要帶上這個屬性,那麼如何獲取呢?首先我們要知道這個SessionID 從哪裏來?它是由服務器返回的。接着我們要獲取它,用什麼工具獲取呢?JMeter 幫我們提供了元件,比如正則表達式提取器,它支持正則表達式的方式來提取數據。後置處理器就是專門用來對響應數據做處理的元件,JMeter的關聯就是通過後置處理器來完成的。後置處理器
  • 控制器:我們在收郵件時,只需要登錄一次郵箱即可以查看多封郵件。如果這個場景我們要在JMeter中實現,我們需要控制登錄的次數,如何實現呢?JMeter邏輯控制器中的僅一次控制器即可以完成。當然了,控制器不只有這一個,還有很多其他的控制器來完成我們的各種需求。邏輯控制器
  • 定時器:爲了足夠真實地模擬用戶負載,我們有時會需要模擬這些請求在同一時刻發送,就好像把大家集合在一條起跑線上,然後一聲令響,同時起跑。那麼我們此時需要一個集合的功能,JMeter中可以通過定時器來完成這個需求。定時器
  • 測試片段:測試片段是一個輔助的組件,在此節點下幾乎可以放置任何JMeter測試元件,但它一般不會被運行。
    (1)在腳本開發過程中可以用來備份元件。
    (2)TestFragment下的元件可以被模塊控制器調用,我們可以利用它來模塊化請求供模塊控制器調用。測試片段

Jmeter測試計劃要素

Jmeter中一個腳本即是一個測試計劃,也是一個管理單元。Jmeter的請求模擬與併發數設置都在腳本文件中一起設置:
(1)要素一:腳本中測試計劃只能有一個
(2)要素二:測試計劃中至少要有一個線程組
(3)要素三:至少要有一個取樣器
(4)要素四:至少要有一個監聽器

學習參考書籍: 全棧性能測試修煉寶典Jmeter實戰.