轉載
原文地址:http://www.cnblogs.com/naaoveGIS/p/5476881.html
1.背景
所謂壓力測試是指,通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大的服務級別的測試。通俗地講,壓力測試是為了發現在什么條件下您的應用程序的性能會變得不可接受。通常進行壓力測試均是測試人員的工作,但是研發人員或多或少也需要對壓力測試有個基本的了解。這里我跟大家一起學習如何使用兩個常用工具進行壓力測試,即badboy和Jmeter。
2.badboy簡介及使用方法
2.1badboy簡介
Badboy是用C++開發的,被用於測試和開發復雜的動態應用。它提供了強大的屏幕錄制和回放功能,同時也提供了豐富的圖形結果分析功能。只要不用於商業目的就可以免費使用。因此這兩工具的結合,就成為了絕配。我們可以用Badboy錄制腳本,然后將錄制的腳本導出為JMeter格式的腳本,最后將該腳本導入到JMeter,借助於JMeter強大的測試功能模擬大量的虛擬用戶,進行復雜的性能測試。
其下載地址為:http://www.badboy.com.au。下載完后需要進行安裝,安裝過程同一般的Windows 應用程序沒有什么區別,安裝完成后你可以在桌面和Windows開始菜單中看到相應的快捷方式。如果找不到,可以找一下Badboy安裝目錄下的Badboy.exe文件,直接雙擊啟動Badboy。最后開到的啟動界面如下:
2.2使用方法
a.在地址欄(圖中紅色方框標注的部分)中輸入你需要錄制的Web應用的URL,這里我們以http://www.baidu.com為例。
b.點擊“開始錄制”按鈕(圖中藍色圓圈標注的部分)開始錄制 。
c.開始錄制后,你可以直接在Badboy內嵌的瀏覽器(主界面的右側)中對被測應用進行操作,所有的操作都會被記錄在主界面左側的編輯窗口中(圖中黃色方框標注的部分)。在這個試驗中,我們在baidu的搜索引擎中輸入 JMeter 進行搜索。不過錄制下來的腳本並不是一行行的代碼,而是一個個Web對象——這有點像LoadRunner的VuGen中的Tree View視圖。
d.錄制完成后,點擊工具欄中的“停止錄制”按鈕(圖中紫色方框標注的部分),完成腳本的錄制。
e.選擇“File -> Export to JMeter”菜單,填寫文件名“baidu.jmx”,將錄制好腳本導出為JMeter腳本格式。也可以選擇“File -> Save”菜單保存為Badboy腳本。
f.啟動JMeter並打開剛剛生成的測試腳本,就可以用JMeter進行測試了。
3.Jmeter的簡介和使用方法
3.1Jmeter的簡介
Apache JMeter,是Apache組織開發的基於Java的針對功能和性能的測試工具。最初JMeter是為Web/HTTP測試而設計的,但是后來它已經擴展到支持各種各樣的測試模塊。JMeter可以用於測試靜態或者動態資源的性能(如靜態文件、Java服務程序、Servlet、CGI腳本、Perl腳本、Java對象、數據庫和查詢、FTP服務器或者其他資源)。JMeter可以用於模擬對服務器、網絡或對象加以巨大的負載,在不同壓力類別下測試它們的強度,分析整體性能。另外,JMeter能夠對應用程序做功能/回歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。為了最大限度的靈活性,JMeter允許使用正則表達式創建斷言。同時它也提供了一個可替換的界面用來定制數據顯示,測試的同步及測試的創建和執行。
其下載地址為: http://jakarta.apache.org。雙擊D:/JMeter/bin下的jmeter.bat或ApacheJMeter.jar即可開啟運行。
3.2主要組件介紹
a.測試計划(Test Plan)
是使用JMeter進行測試的起點,它是其它JMeter測試元件的容器。
b.線程組(Thread Group)
代表一定數量的並發用戶,它可以用來模擬並發用戶發送請求。
c.取樣器(sampler)
定義實際的請求內容,被線程組包含,我們主要用HTTP請求。
d.監聽器(Listener)
負責收集測試結果,同時也被告知了結果顯示的方式。我們常用的包括:聚合報告、察看結果樹、用表格查看結果,都支持將結果數據寫入文件。其他的添加上去看看就行。
e.邏輯控制器(Logic Controller)
可以自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列。
其分為循環控制器和事務控制器。
f.斷言(Assertions)
可以用來判斷請求響應的結果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執行壓力測試。這個限制對於有效的測試是非常有用的。
g.配置元件(Config Element)
維護Sampler需要的配置信息,並根據實際的需要會修改請求的內容。我們主要在參數化中用到CSV Data Set Config。
h.前置處理器(Pre Processors)和后置處理器(Post Processors)
負責在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設置,后置處理器則常常用來處理響應的數據。我們主要在動態關聯中用到后置處理器的正則表達式提取器。
i.定時器(Timer)
負責定義請求之間的延遲間隔。
3.3兩種使用方法
3.3.1直接導入腳本的方法
在前面我們使用badboy進行了腳本錄制,這里可以直接將其導入到Jmeter中。具體補步驟如下:
a.打開JMeter會有一個默認的測試計划,點擊文件-打開,選中錄制的腳本文件如:WebXSample_addUser.jmx,打開腳本進行測試。
b.在線程組上添加監聽器-聚合報告(用於分析測試結果)后,點擊運行-啟動,開始測試,測試完畢后在聚合報告中就可以看到測試結果。一個簡單的測試計划就完成了。
3.3.2手動編寫測試樣例的方法
a.在測試計划中先添加一個線程組,然后在該線程組中加入http請求模塊。可以在sampler中看到,Jmeter還能測試數據庫連接查詢壓力,FTP連接壓力等。
b.編寫測試請求。
c.添加監聽等。
d.設置線程並發量。
f.點擊運行,查看運行結果,進行分析。
即300個並發量中,平均時間是17074毫秒,中間段發出的的請求耗時18891毫秒,末尾百分之90處發出的請求耗時25575毫秒。整個測試過程中,最小耗時為2616毫秒,最大耗時為26911毫秒。