一個系統上線前必須經過性能測試,如果系統性能不滿足需求,在后續的運維過程中會遇到很多麻煩,也不能給客戶提供良好的使用體驗。
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進行。通過負載測試確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大服務級別的測試。
1、使用jmeter進行壓力測試
接口測試軟件jmeter,就擁有壓力測試的功能。首先打開jmeter,創建線程組。
線程數:可以設置同時有多少線程執行測試操作
Ramp-up Period (in Seconds):用于告知JMeter 要在多長時間內建立全部的線程。默認值是0。如果未指定ramp-up period ,也就是說ramp-up period 為零, JMeter 將立即建立所有線程。假設ramp-up period 設置成T 秒, 全部線程數設置成N個, JMeter 將每隔T/N秒建立一個線程。
循環次數:就是決定一個線程要跑多少次測試
Delay Thread creation until needed:直到需要時延遲線程的創建
調度器:選中之后可以配置啟動時間,立即或者預定的時間
下面以登錄接口為例,進行配置:
首先對線程組進行配置,要求再10秒內同時跑20次登錄操作。為了查看性能結果,需要配置聚合報告。
HTTP請求和察看結果樹配置好后,點擊運行,來查看運行結果。
lable:請求名稱
#Sample:發出的請求數量,最后一行會記錄所有請求的總發出數
Average:平均響應時間
median:中位數,50%用戶的響應時間
90% Line/95% Line/99% Line:百分之90/95/99用戶的響應時間,當最小響應時間和最大響應時間差距過大時,平均響應時間是不可靠的,需要計算90%以上用戶的響應時間才能得到更真實的數據
min/max:最小/最大響應時間
Error%:本次請求出現的錯誤率,即錯誤的請求數量/總請求數
ThroughPut:吞吐量,默認為每秒完成的請求數(圖中為每分完成的請求數)
KB/sec:每秒從服務器端接收到的數據量
一般通過聚合報告來對壓力測試結果進行分析,一般在成功的前提下要求TPS越大越好而響應時間越小越好。
2、使用負載機
有時候測試使用的電腦并不能滿足壓力測試的需要,可以借助其他同事的電腦(其他的電腦被稱為負載機)分擔測試任務。當然,前提是同事的電腦也安裝了jmeter。
第一步:需要對方運行電腦中jmeter安裝目錄下bin目錄下的文件jmeter-server.bat(默認為Windows系統,如果為Mac則運行jmeter-server.sh即可)
第二步:在自己電腦上找到jmeter的配置文件jmeter.properties,在數據remot_hosts后添加負載機的IP地址(需要加端口號),remot_hosts后本來跟有本機的IP地址,只需要用英文逗號隔開即可
第三步:重啟主控機的jmeter
第四步:配置好線程組、請求及測試數據
第五步:選擇遠程全部運行
ps:如果有參數從文件中獲取,則負載機和主控機的bin目錄下都需要有這個文件
ps:端口號默認為1099,如果負載機修改了端口號,配置文件中IP地址后的端口號也需要修改。