Jmeter錄製複雜web測試指令碼

NO IMAGE

jmeter的功能簡單,不需要有指令碼語言的編寫經驗,純圖形介面新增測試場景, 用起來上手很快。但是如果手動新增每一個web(http/https)請求,費時又費力。而且有可能最後手動編寫的和實際發的請求有出入。
  1web效能測試以及web http請求基本原理。
  再介紹錄製jmeter指令碼之前,我們先談一下web效能測試。web就是呼叫http/https介面, 其實沒有是什麼複雜度可言。只是我們必須清楚,對於一個網站說,一個頁面並通常不是隻有一個http請求。如果需要測試一個rich web page,必須瞭解到這一點(測試http介面則簡單的許多,只是單一的http介面請求)。
  例如這樣一個頁面(下面是html程式碼)

  如果向伺服器請求上面的一個頁面,則除了本身頁面的請求本身,還有一個css和img的資源。這樣開啟這樣一個頁面,本需要有三個http請求。
  1. http1 -> get the web page (首先獲取你要訪問的頁面的html程式碼)
  2. the web page contain two resources (假設該頁面,有一個css資源和一個圖片)
  3. then request  http2 and http3 to  get the css file and image respecitively. (則會繼續發起獲取css和圖片的請求)
  所以這樣就是發起了3個http請求,才完整的開啟了一個頁面。瀏覽器實際是這麼做的,但瀏覽器作了很多優化。 (比如多執行緒[一般2-6個http connection,不同瀏覽器核心不同],  http keep-alive,快取圖片,css等資源)。說道這裡,不得不佩服loadrunner的強大。他可以儘量模擬瀏覽器的這些行為,來保證測試的結果準確性。但這些引數都可以動態調整的。(通常我們錄製的富web頁面, 也就是rich webpage, 通常需要使用事務控制器來輔助我們進行度量資料, 關於事務控制器請訪問”jmeter如何使用事務控制器”)
  注意: 最新的jmeter-plugins 已經支援了webdriver sampler,  已經可以模擬瀏覽器的行為,更真實的模擬使用者訪問web的行為, 可以得到更真實的效能資料. 具體是否使用,還需要根據自己的測試場景進行判斷. (作者目前並不建議盲目的使用, 需要慎重考慮. 原因: 使用者體驗方面的效能測試可以由其他工具完成, 而效能測試則專注於特定的問題 )
  具體資料資訊,請訪問 http://jmeter-plugins.org/wiki/WebDriverSet/
  2。實際錄製指令碼
  好,那麼我們現在就來實際錄製指令碼吧,並且體驗一下真正一個頁面的實際http請求過程。這裡我們只談http,https不在本文所講範圍內。
  錄製指令碼目前有2種方法,我們先介紹jmeter proxy方法。另一個是badboy錄製的指令碼轉化為jmeter指令碼,直接想了解badboy,請直接訪問
  http://www.badboysoftware.biz/docs/jmeter.htm
  jmeterproxy 來了。
  1)啟動jmeter,這個不多說了。
  2)選擇測試計劃,右鍵新增執行緒組(thread group)
  3)選擇這個執行緒組,右鍵新增config element -〉 http預設請求

  4)在http預設請求單元,填入server name 為jakarta.apache.org. 這個是我們要錄製的頁面。其他地方不填
  5)然後選擇剛才那個縣城組,右鍵加入一個錄製控制器。位於Add>Logic Controllers -> Recording Controller
  6) 選擇WorkBench,右鍵加入 Non-Test Elements -> Http proxy server
  7)在http proxy server裡, 的patterns to include 裡,寫入.*.html  這個是正規表示式,意思是錄製所有的html為字尾名的頁面。 那麼如果你要錄製字尾名為jsp或者do的,則寫入.*.jsp  和 .*.do 分別。
  8)對於url patterns to excllude的地方,是寫入不想被錄製的一些資原始檔url(往往我們根據字尾名來進行區分)。比如不想錄制http發起獲取圖片的請求,就需要寫上*.jpg 或者 *.png 。 這些是否配置,視測試的具體場景而定。比如是否要測試靜態圖片等。
  9)為了除錯錄製的情況,我們選擇http proxy server ,新增一個察看結果樹監聽器。這個以前我們曾經用過。

  10)回到http proxy server然後,選擇開始啟動。這樣proxy server 就啟動了。
  11)這樣我們開啟一個瀏覽器,將瀏覽器的代理設定為jmeter proxy server 的ip和埠號。 因為proxy server 就在本地,所以就寫localhost 和埠即可。
  12)設定好代理後,用瀏覽器訪問http://jakarta.apache.org/jmeter/index.html
  13)隨便點選一些連線,然後回到jmeter 的視窗,你檢視結果樹就看到了錄製的http請求了。

  14)這樣的指令碼,我們稍做修改,就可以使用了。