JMeter&Badboy使用初步

JMeter是一款在國外非常流行和受歡迎的開源性能測試工具,像LoadRunner 一樣,它也提供了一個利用本地Proxy Server(代理服務器)來錄製生成測試腳本的功能,但是這個功能並不好用。所以在本文中介紹一個更爲常用的方法——使用Badboy錄製生成JMeter 腳本。

JMeter下載與安裝

JMeter下載地址:

http://jmeter.apache.org/download_jmeter.cgi

選擇Download Releases --點擊下載Binary:apache-jmeter-2.13_src.zip(注意zip包纔是適合windows系統的,其中Source是可以看到源碼的包,如果不需要查看源碼可以只下載Binary下的zip包。)下載後解壓.

打開方式:

apache-jmeter-2.13\bin\jmeter.bat

啓動常見錯誤:

jmeter.bat 運行出錯,unable to access jarfile apachejmeter.jar error value=1

原因:下載的JMeter非完整版,請重新下載。

Badboy

Badboy是一款不錯的Web自動化測試工具,Badboy 是澳大利亞的一個軟件公司設計的,有免費版可以下載。優勢:(1)Badboy提供了將Web測試腳本直接導出生成JMeter 腳本的功能,並且這個功能非常好用,也非常簡單。你可以跟着下面的試驗步驟來邁出你在開源世界的第一步。(2)使用 jmeter 的代理服務器可以順利錄製完整的 http 請求,包括請求的頭;但無法錄製cookies,對於網站腳本,大多需要 cookies 支持,可以使用 badboy 來錄製。

1.      通過Badboy的官方網站下載Badboy的最新版本;

2.      安裝Badboy。安裝過程同一般的Windows 應用程序沒有什麼區別,安裝完成後你可以在桌面和Windows開始菜單中看到相應的快捷方式——如果找不到,可以找一下Badboy安裝目錄下的Badboy.exe 文件,直接雙擊啓動Badboy

3.      啓動Badboy,你可以看到下面的界面。

JMeter使用

Jmeter和LR一樣有着錄製腳本、參數化、檢查點、集合點、設置關聯、場景等。

一、錄製腳本

(一). 使用JMeter錄製

在“工作臺”添加“HTTP 代理服務器”。

代理服務器的端口,默認 8080,可自行修改,但不要與其它應用端口衝突
目標控制器:錄製的腳本存放的位置,可選擇項爲測試計劃中的線程組

分組:對請求進行分組。“ 分組”的概念是將一批請求彙總分組,可以把 url 請求理解爲組。

“不對樣本分組”: 所有請求全部羅列
“在組間添加分隔”: 加入一個虛擬的以分割線命名的動作,運行同“不對樣本分組”,
無實際意義
“每個組放入一個新的控制器”: 執行時按控制器給輸出結果
“只存儲每個組的第一個樣本”: 對於一次 url 請求,實際很多次 http 請求的情況,這
個選項很好用,因爲我們常常是不關心後面的那些請求的。

記錄 HTTP 信息頭:錄製 request 的 head 信息
添加斷言:錄製時加入空的檢查點
Regex matching:錄製時加入空的正則匹配

在瀏覽器中錄製:
啓動 HTTP 代理服務器後,打開瀏覽器(IE,Firefox,Opera 等),添加代理,地址填
寫本機 ip 或 host name,端口填寫剛剛設置的代理端口,在瀏覽器中進行正常網頁瀏覽,即
可錄製下對應的操作。

缺點:;無法錄製cookies,對於網站腳本,大多需要 cookies 支持。Bayboy可以解決這個問題。

(二). 使用Badboy錄製

1. Bayboy錄製

(1) 開始錄製後,你可以直接在Badboy內嵌的瀏覽器(主界面的右側)中對被測應用進行操作,所有的操作都會被記錄在主界面左側的編輯窗口中。錄製下來的腳本並不是一行行的代碼,而是一個個Web對象——這就有點像LoadRunner的VuGen中的Tree View視圖;

(2) 錄製完成後,點擊工具欄中的“停止錄製”按鈕,完成腳本的錄製;

(3)選擇“File -> Export to JMeter”菜單,填寫文件名“login_mantis.jmx”,將錄製好腳本導出爲JMeter腳本格式。也可以選擇“File -> Save”菜單保存爲Badboy腳本;

  

2. Badboy錄製參數化

比如登錄需要用戶名,密碼,要實現參數化。在左下角“Variables”,右鍵單擊添加參數。


(二)參數化

CSV Data SetConfig(推薦)

利用JmeterCSV Data SetConfig,可以實現這個功能,具體如下:
1.新建一個文本文件,裏面保存要登錄的用戶名,密碼,文件內容如下:
admin,123
manager,456
test,test

說明:這裏用英文逗號爲分隔符,也可以用其他爲分隔符,在CSVData Set Config中可以設置。
2. 右鍵點擊Jmeter中需要參數化的某個請求,選擇添加——配置原件——CSVData Set Config,會添加一個CSV Data SetConfig,需要設置相關的一些內容,具體如下:
Filename--- 參數項文件
File Encoding --- 文件的編譯方法,一般爲空
Vaiable Names--- 文件中各列所表示的參數項;各參數項之間利用逗號分隔;參數項的名稱應該與HTTPRequest中的參數項一致。
Delimiter--- 如文件中使用的是逗號分隔,則填寫逗號;如使用的是TAB,則填寫\t;
Recycle on EOF? --- True=當讀取文件到結尾時,再重頭讀取文件
                   False=當讀取文件到結尾時,停止讀取文件
Stop thread on EOF? --- 當Recycle onEOF?一項爲False時起效;True=當讀取文件到結尾時,停止進程

Filename:文件名,,指保存信息的文件目錄,可以相對或者絕對路徑(比如:D:\CSV\userinfo.txt

注意:由於用戶名和密碼是全局變量,因此CSV Data Set Config放在全局域中,對於每個循環控制器,可以定義局部的變量。

3. 在需要使用變量的地方,比如在登錄操作中,需要提交的表單字段包含用戶名密碼,我們就可以用${變量名}的形式進行替換,例如${user}${password}

這樣,每次在登錄時,就可以從userinfo.txt中讀取自己配置的用戶名和密碼。

如果需要測試多個用戶同時登錄需要設定集合時間(詳見(四))。

4. 另外,通常有用戶認證的地方都要用到cookie或者session,那麼最好在測試計劃中加入一個httpcookie管理器(HTTP Cookie Manager),直接添加一般不需要任何設置,否則可能會出現登錄失敗(在測試結果中,如果看到多次請求不同頁面返回的字節數卻是相同的,那多半是登錄失敗了)
5. 最後,添加後,可以通過添加-監視器-查看結果樹(請求部分)”,來檢驗參數化是否成功,運行線程組,如果失敗,那麼檢查一下文本的路徑,變量大小寫等等,手冊上說使用相對文本路徑時,要以測試配置文件(默認是jmeterbin目錄)的目錄爲參考,但是我試過似乎不行,換成絕對路徑就可以了

函數助手---__CSVRead

先準備一個dat文件保存在本地,然後選擇”選項“---函數助手---__CSVRead--輸入dat文件保存的路徑如C:\test.dat,點擊生成並複製${__CSVRead(c:\test.dat,)}
找到需參數化的頁面--將複製的${__CSVRead(c:\test.dat,)}粘貼到參數化值的位置。

正則表達式參數化

在 http請求下加入“後置處理器”>“正則表達式提取器”:引用名稱即使用的參數名;填入正則表達式;模板選取匹配的組;

示例中用正則表達式匹配出產品 id 作爲後續使用的參數。
提取到的參數,調用時用${product_id_1},${product_id_2},${product_id_3}……;
如果想要得到匹配出的參數的個數,用${product_id_matchNr};如果想隨機選取其中一個,
只需將匹配數字設爲0,使用${product_id}調用即可。

可以一次匹配多組;示例中只匹配了一個,假如正則表達式爲 name="chkProductIds"
id="chk(.+?)" value="(.+?)",就會有兩組參數。想獲得匹配到的組個數用${product_id_g}。模
板針對的是匹配到的字符串再做組的區分,比如希望${product_id}取出的是第二組參數的
值,用$2$。

(二)檢查點
檢查對對象設置:右鍵點擊某頁面---->添加---->斷言---->響應斷言
檢查結果:添加一個斷言結果,右鍵點擊頁面---->添加---->監聽器---->斷言結果
還可以再添加一個“查看結果樹”右鍵點擊我們的“登錄”頁面---->添加---->監聽器---->查看結果樹

(三)設定延遲時間

在腳本中添加“定時器”à“固定定時器”,設定延遲時間。

(四)設定集合時間

在腳本中添加“定時器”->“Synchronizing Timer”。設置集合點處的併發用戶數,即“多少”個用戶達到集合點後再執行。
(五)響應數據及添加報告

JMeter報告有很多種,擦看結果樹中可以看到每個步驟的執行結果。

結果樹:

可以看到各個步驟的運行情況。


聚合報告各字段含義:

Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裏顯示的就是 Name 屬性的值

#Samples:表示你這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這裏顯示100

Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 爲單位顯示平均響應時間

Median:中位數,也就是 50% 用戶的響應時間

90% Line:90% 用戶的響應時間

Note:關於 50% 和 90% 併發用戶數的含義,請參考下文http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html

Min:最小響應時間

Max:最大響應時間

Error%:本次測試中出現錯誤的請求的數量/請求的總數

Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

KB/Sec:每秒從服務器端接收到的數據量,相當於LoadRunner中的Throughput/Sec


Summary Report:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章