目前常用的測試工具對比
LoadRunner
- 性能穩定,壓測結果及細粒度大,可以自定義腳本進行壓力,但是太過於重大,功能比較繁多
Apache AB(單接口壓測最方便)
- 模擬多線程並發請求,ab命令對發出負責的計算機要求很低,既不會占用很多CPU,也不會占用太多的內存,但卻給目標的服務器造成巨大的負載,簡單DDOS攻擊等
Webbench
- webbench首先fork出多個子進程,每個紫禁城都循環做web訪問測試,子進程把訪問的結果通過pipe告訴父進程,父進程做最終的統計結果
Jmeter
- 開源免費,功能強大,在還聯網公司普遍使用
- 壓測不同的協議和應用
- Web-》HTTP,HTTPS(java、NodeJS、PHP、ASP.NET,...)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP 輕量目錄訪問協議
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S),POP3(s) and IMAP(S)
- TCP等等
- 使用從場景及優點
- 功能測試
- 壓力測試
- 分布式壓力測試
- 純java開發
- 上手容易,高性能
- 提供測試數據分析
- 各種報表數據圖形展示
Jmeter壓測工具本地快速安裝
- 需要安裝jdk8 以上
- 官網地址:https://jmeter.apache.org/
- 文檔地址:
下載
我已經上傳至百度雲
鏈接: https://pan.baidu.com/s/1Cjyxo1otjKY97Mplo2m2pw 密碼: 75w9
目錄講解和漢化操作
bin:核心可執行文件,包含配置
jmeter.bat:windows啟動文件
jmeter:mac或者linux啟動文件
jmeter-server:mac或者linux分布式壓測使用的啟動文件
jmeter-server.bat:windows分布式壓測使用的啟動文件
jmeter.properties:核心配置文件
extras:插件擴展的包
lib:核心的依賴包
Jmetera語言版本中英文切換
切換中文顯示的時候,有坑,請看我另一篇博客:點我直達
GUI菜單欄主要組件
添加->threads->線程組(控制總體並發)
線程數:虛擬用戶數。一個虛擬用戶占用一個進程或線程
准備時長(Ramp-Up Period(in seconds)):全部線程啟動的時長,比如100個線程,20秒,則表示20秒內100個線程都要啟動完成,每秒啟動5個線程
循環次數:每個線程發送的次數,例如值為5,100個線程,則會發送500次請求,可以勾選永遠循環
線程組->添加Sampler(采樣器)->Http(一個線程組下面可以增加幾個Sampler)
名稱:采樣器名稱
注釋:對這個采樣器的描述
wbe服務器:
默認協議是http
默認端口是80
服務器名稱或ip:請求的目標服務器名稱或ip地址
路徑:服務器URL
查看測試結果
新增聚合報告:線程組->添加->監聽器->聚合報告(Aggregate Report)
lable:sampler的名稱
Samples(樣本):一共發出多少請求,例如10個用戶,循環10次,則是100
Average(平均值):平均響應時間
Median(中位數):中位數,也就是50%用戶的響應時間
90% Line:90% 用戶的響應不會超過該時間 (90% of the samples took no more than this time.The remaining samples at least as long this)
95% Line:95%用戶的響應不會超過該時間
99% Line:99%用戶的響應不會超過該時間
min(最小值):最小響應時間
max(最大值):最大響應時間
Error%(異常):錯誤的請求的數量/請求的總數
Throughput(吞吐量):吞吐量--默認情況下表示每秒完成的請求數(Request per Second)可類比為qps、tps KB、Sec:每秒接收數據量
驗證
可以看出,單機並發差不多在2萬5左右,嘻嘻,下面貼出我的電腦配置
當前測壓電腦配置
CPU:I7 9750
內存16G
注:接口的性能影響因素很多,機器的配置如CPU、內存、當前負載情況等,還有網絡帶寬因素影響,只能盡量減少影響因素