一、什麼是效能測試
是不斷的通過不同場景的系統表現去**系統設計與資源消耗之間的平衡。
我們可以認為效能測試是:通過在測試環境下對系統或構件的效能進行探測,用以驗證在生產環境下系統效能是否達到預估的效能
需求,發現系統可能存在的效能瓶頸,進而改善優化並系統的效能,提高系統的可擴充套件性、穩定性。
從上面的描述可以看出,效能測試的主要工作包括:獲得預估的效能需求、搭建測試環境、執行測試、分析測試結果。其中,最為重要兩個工作是確定測試的目的、方案,並對結果進行分析。
二、效能測試的目的
(1)驗證系統是否滿足預期需求;
(2)驗證系統在高壓下的表現;
(3)驗證系統是否能持續穩定的執行;
(4)探測系統的瓶頸和產生瓶頸的原因;
(5)探測系統設計與資源之間的最佳平衡,改善並優化系統的效能。
三、如何做效能測試
1.負載測試:
找到系統穩定時(或滿足效能需求下)的最大吞吐量;(要有響應時間、成功率的限制,比如定義:99.9%的響應時間必需在1ms之內,平均響應時間在1ms以內,100%的請求成功)
2.穩定性(通過浸泡測試soak test):
以系統穩定時的最大吞吐量(或滿足效能需求時的最大吞吐量),長時間對系統進行測試,已檢查系統是否穩定
3.壓力測試:
找到系統極限值,系統瓶頸(系統崩潰臨界值)(要求:響應時間可以變慢,但系統不能崩潰;)
(根據測試目的,選擇是進行負載、壓力、穩定性還是幾種測試;)
4.併發有兩個概念:
多個使用者同時進行相同操作,訪問同一介面——單個業務介面併發;
多個使用者同時訪問系統,但進行不同的操作,訪問不同的介面——系統級併發;
(在效能測試過程中,根據
具體場景和業務
選擇合適的方案,一般第2種更符合實際場景。以上2種都需要進行測試;)
5.測試流程:
確定測試目的與需求——根據需求與場景,梳理測試要點——根據測試目的,制定測試方案——準備測試環境與資料——測試執行(指令碼或工具)——統計測試結果——分析結果——測試報告
ps:1 .測試執行時,執行多次,取平均結果更為準確。
2. 單機併發不夠時,採用多機分布式併發;
3. 測試過程,一定要盡可能模擬實際應用場景;
四、效能測試關注的指標
併發使用者數
吞吐量:tps/qps
成功率失敗率
開發人員關注(系統層面指標):
1. tomcat、資料庫等;
2. 容量:系統能承載的最大訪問量是多少?系統最大的業務處理量是多少?
3. 穩定性:是否支援7*24小時(一周)的業務訪問?
運維人員關注(
硬體資源相關指標):
硬體資源消耗情況:cpu、記憶體、i/o讀寫速度、網路頻寬等
五、效能結果分析
響應時間不要光看平均值,平均值不靠譜。要求最好定成:99.9%請求必須<1s,所有的平均響應時間必須<1s,這兩個條件限制;
響應時間要和吞吐量tps/qps掛鉤;
系統的效能如果只看吞吐量,不看響應時間是沒有意義的。我的系統可以頂10萬請求,但是響應時間已經到了5秒鐘,這樣的系統已經不可用了,這樣的吞吐量也是沒有意義的。
我們知道,當併發量(吞吐量)**的時候,系統會變得越來越不穩定,響應時間的波動也會越來越大,響應時間也會變得越來越慢,而吞吐率也越來越上不去(如上圖所示),包括cpu的使用率情況也會如此。所以,當系統變得不穩定的時候,吞吐量已經沒有意義了。吞吐量有意義的時候僅當系統穩定的時候。
所以,吞吐量的值必須有響應時間來卡。比如:
tp99小於100ms的時候,系統可以承載的最大併發數是1000qps。這意味著,我們要不斷的在不同的併發數上測試,以找到軟體的最穩定時的最大吞吐量。 3.
響應時間吞吐量要和成功率掛鉤
;不難理解,如果請求可以併發10w,但是成功率只有40%,那也沒什麼用。
效能測試的失敗率的容忍應該是非常低的。對於一些關鍵系統,成功請求數必須在100%,一點都不能含糊。
4. cpu、記憶體等硬體資源佔比持續超過90%,說明效能存在瓶頸;
5. 頻寬波動起伏很大,說明頻寬受限;
如何做效能測試?
一提到效能測試,大家首先想到的就是測試工具,很多人認為效能測試就是使用測試工具,會使用測試工具就是會效能測試,我認為這種思想是不對的。什麼叫效能測試呢?效能測試是通過自動化的測試工具模擬多種正常 峰值以及異常負載條件來對系統的各項效能指標進行測試。測試工具只是用於模擬某些特定的情況的,模擬出某些情況...
如何做SQL Server效能測試?
對於dba來講,我們都會做新伺服器的效能測試。我會從tpc的基準測試入手,使用hammerdb做整體效能評估 前身是hammerora 跟廠商資料對比。再使用diskspd針對性的測試磁碟io效能指標 前身是sqlio 再到sqliosim測試儲存的完整性,再到ostress併發壓力測試,對於資料庫...
如何做效能測試工作
接下來就是大概的說下具體的流程 調研效能需求 了接系統架構情況 確認測試範圍 是否呼叫外圍系統 確認測試交易 有多少支交易,交易型別,交易的複雜情況 分析專案組的測試目的 技術方案對比測試 確認專案的效能測試週期 分析設計測試模型 分析現有業務資料 分析測試覆蓋率情況 確認交易佔比 設計測試模型 設...