jmeter的功能簡單,不需要有腳本語言的編寫經驗,純圖形界面添加測試場景, 用起來上手很快。但是如果手動添加每一個web(http/https)請求,費時又費力。而且有可能后手動編寫的和實際發(fā)的請求有出入。
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. (則會繼續(xù)發(fā)起獲取css和圖片的請求)
所以這樣是發(fā)起了3個http請求,才完整的打開了一個頁面。瀏覽器實際是這么做的,但瀏覽器作了很多優(yōu)化。 (比如多線程[一般2-6個http connection,不同瀏覽器內核不同], http keep-alive,緩存圖片,css等資源)。說道這里,不得不佩服loadrunner的強大。他可以盡量模擬瀏覽器的這些行為,來保證測試的結果準確性。但這些參數都可以動態(tài)調整的。(通常我們錄制的富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(往往我們根據后綴名來進行區(qū)分)。比如不想錄制http發(fā)起獲取圖片的請求,需要寫上*.jpg 或者 *.png 。 這些是否配置,視測試的具體場景而定。比如是否要測試靜態(tài)圖片等。
9)為了調試錄制的情況,我們選擇http proxy server ,添加一個察看結果樹監(jiān)聽器。這個以前我們曾經用過。
。保埃┗氐絟ttp proxy server然后,選擇開始啟動。這樣proxy server 啟動了。
。保保┻@樣我們打開一個瀏覽器,將瀏覽器的代理設置為jmeter proxy server 的ip和端口號。 因為proxy server 在本地,所以寫localhost 和端口即可。
。保玻┰O置好代理后,用瀏覽器訪問http://jakarta.apache.org/jmeter/index.html
13)隨便點擊一些連接,然后回到jmeter 的窗口,你查看結果樹看到了錄制的http請求了。
。保矗┻@樣的腳本,我們稍做修改,可以使用了。