一、性能測試概述
1.1 概述
模擬各種正常的、峰值的測試環境,檢測程序的各項性能指標是否達標。
如模擬系統半小時內2000個用戶進行登錄操作。
性能指標:如要求登錄請求的響應時間在3秒鍾以內。
1.2 作用
1、項目立項初期幫助技術選型
2、測試當前程序所能支持的最大負載
3、發現系統中的性能瓶頸,提高資源利用率
4、提升用戶體驗
.......
1.3 實現
使用jmeter的定時器實現時間的性能測試
二、同步定時器--模擬高並發
2.1 測試步驟
例:同一時刻,100個用戶訪問登錄接口,統計高並發情況下平均響應時間以及錯誤率
1、新建測試計划、測試組、取樣器、結果樹,指定線程組的線程數為100,模擬100個用戶:
2、添加定時器的synchronizing timer(同步定時器),實現同時訪問:
3、運行測試計划,即可實現100個用戶並發訪問登錄接口
4、通過聚合報告組件,可以對結果進行匯總分析
5、再次點擊運行測試計划,在聚合報告中查看結果
2.2 同步定時器參數詳解
當線程組中設置的線程數(用戶數)不能整除同步定時器中設置的“模擬用戶組的數量”,且超時時間為0時,會導致程序掛起,即運行測試計划后無法結束運行。
如線程組設置的線程數為100,同步定時器的“模擬用戶組的數量”設置為30,超時時間為0,此時運行測試計划后,程序就會掛起,將會還剩10個線程無法運行:
如何避免程序掛起
方式一:修改“模擬用戶組的數量”,使得線程組用戶數能夠被整除;
方式二:設置定時器的超時時間,如設置超時時間為5000毫秒,即使線程組的線程數不能被整除,一旦過了超時時間,程序就會執行完剩余的線程。
三、常量吞吐定時器--設置接口訪問頻率
3.1 步驟
例:一個用戶以20QPS(20次/秒)的頻率訪問服務器的登錄接口,持續15秒,統計服務器的平均響應時間
1、新建測試計划、線程組、取樣器、聚合報告,設置相關測試參數
循環次數 = 訪問頻率 * 持續時間
2、添加常量吞吐定時器
3、運行測試計划,查看匯總結果
四、分布式性能測試實現
多台機器協作,以集群的方式完成性能測試,提高測試效率。
如峰值時期有30000個用戶訪問系統,一台測試機最多支持5000個用戶,可以使用6台測試機竄起來實現30000個用戶訪問
基本架構:
- 控制機:負責任務分配
- 執行機:負責任務實現
- 控制機制定測試任務,並下發到執行機,執行機執行任務並將結果返回給控制機,控制機匯總結果
4.1 分布式測試環境搭建
1、在不同測試機上安裝jmeter
2、配置基礎環境(統一操作系統、JDK、jmeter)
3、配置控制機與執行機之間的通信(端口):
- 為執行機設置端口號
%JMETER_HOME/bin/jmeter.properties --> server_port=xxx
- 控制機中設置執行機的IP和端口
%JMETER_HOME/bin/jmeter.properties --> remote_hosts=執行機A的IP:端口,執行機B的IP:端口
- 設置控制機和執行機遠程訪問相關控制:server.rmi.ssl.disable=true
4.2 分布式性能測試步驟
例:模擬100個用戶操作(默認已經搭建好分布式測試環境)
1、啟動集群機器上的控制機、執行機的jmeter
2、在控制機的jmeter中,新增測試計划、測試組、取樣器、聚合報告(具體步驟同上)
3、設置線程組的線程數,並運行測試計划: