常用的性能測試工具
對于開發人員來說,首選是一些開源免費的性能(壓力)測試軟件,例如 ab(ApacheBench)、JMeter 等;對于專業的測試團隊來說,付費版的 LoadRunner 是首選。當然,也有很多公司是自行開發了一套量身定做的性能測試軟件,優點是定制化強,缺點則是通用性差。
重點介紹 ab 和 JMeter 兩款測試工具的特點以及常規的使用方法。
1.ab
ab 測試工具是 Apache 提供的一款測試工具,具有簡單易上手的特點,在測試 Web 服務時非常實用。
ab 可以在 windows 系統中使用,也可以在 linux 系統中使用。這里我說下在 Linux 系統中的安裝方法,非常簡單,只需要在 Linux 系統中輸入 yum-y install httpd-tools 命令, 就可以了。
ab 工具用來測試 post get 接口請求非常便捷,可以通過參數指定請求數、并發數、請求參數等。例如,一個測試并發用戶數為 10、請求數量為 100 的的 post 請求輸入如下:
ab -n 100 -c 10 -p 'post.txt' -T 'Application/x-www-form-urlencoded' 'http://test.api"
post.txt 為存放 post 參數的文檔,存儲格式如下:
usernanme=test&password=test&sex=1
附上幾個常用參數的含義:
-n:總請求次數(最小默認為 1);
-c:并發次數(最小默認為 1 且不能大于總請求次數,例如:10 個請求,10 個并發, 實際就是 1 人請求 1 次);
-p:post 參數文檔路徑(-p 和 -T 參數要配合使用);
-T:header 頭內容類型(此處切記是大寫英文字母 T)。
當我們測試一個 get 請求接口時,可以直接在鏈接的后面帶上請求的參數:
ab -c 10 -n 100 http://www.test.api.com/test/login?userName=test&password=test
有幾項性能指標可以提供給你參考使用:
Requests per second:吞吐率,指某個并發用戶數下單位時間內處理的請求數;
Time per request:上面的是用戶平均請求等待時間,指處理完成所有請求數所花費的時間 /(總請求數 / 并發用戶數);
Time per request:下面的是服務器平均請求處理時間,指處理完成所有請求數所花費的時間 / 總請求數;
Percentage of the requests served within a certain time:每秒請求時間分布情況,指在整個請求中,每個請求的時間長度的分布情況,例如有 50% 的請求響應在 8ms內,66% 的請求響應在 10ms 內,說明有 16% 的請求在 8ms~10ms 之間。
2.JMeter
JMeter 是 Apache 提供的一款功能性比較全的性能測試工具,同樣可以在 Windows 和Linux 環境下安裝使用。
JMeter 在 Windows 環境下使用了圖形界面,可以通過圖形界面來編寫測試用例,具有易學和易操作的特點。
JMeter 不僅可以實現簡單的并發性能測試,還可以實現復雜的宏基準測試。我們可以通過錄制腳本的方式,在 JMeter 實現整個業務流程的測試。JMeter 也支持通過 csv 文件導入參數變量,實現用多樣化的參數測試系統性能。
Windows 下的 JMeter 安裝非常簡單,在官網下載安裝包,解壓后即可使用。如果你需要 打開圖形化界面,那就進入到 bin 目錄下,找到 jmeter.bat 文件,雙擊運行該文件就可以了。
JMeter 的功能非常全面,我在這里簡單介紹下如何錄制測試腳本,并使用 JMeter 測試業務的性能。
錄制 JMeter 腳本的方法有很多,一種是使用 Jmeter 自身的代理錄制,另一種是使用Badboy 這款軟件錄制,還有一種是我下面要講的,通過安裝瀏覽器插件的方式實現腳本的錄制,這種方式非常簡單,不用做任何設置。
首先我們安裝一個錄制測試腳本的插件,叫做 BlazeMeter 插件。你可以在 Chrome 應用商店中找到它,然后點擊安裝
然后使用谷歌賬號登錄這款插件,如果不登錄,我們將無法生成 JMeter 文件
最后點擊開始,就可以錄制腳本了。錄制成功后,點擊保存為 JMX 文件,我們就可以通過
JMeter 打開這個文件,看到錄制的腳本了
這個時候,我們還需要創建一個查看結果樹,用來可視化查看運行的性能結果集合
設置好結果樹之后,我們可以對線程組的并發用戶數以及循環調用次數進行設置
設置成功之后,點擊運行,我們可以看到運行的結果
3.LoadRunner
LoadRunner 是一款商業版的測試工具,并且 License 的售價不低。
作為一款專業的性能測試工具,LoadRunner 在性能壓測時,表現得非常穩定和高效。相比 JMeter,LoadRunner 可以模擬出不同的內網 IP 地址,通過分配不同的 IP 地址給測試 的用戶,模擬真實環境下的用戶。