上篇博客介紹了基準測試的一些思路和方法策略,這篇博客,聊聊基準測試的MVP(最小可行性方案)。。。web
思惟導圖緩存
1、測試策略服務器
策略名稱 | 閾值 | 運行時間 | 性能指標 | 基線 | 註釋 |
併發測試 | CPU75%+Error0.01% | 10-30min | 併發數、TPS、RT、內存佔比 | 併發基線 | 併發測試獲得的結果能夠做爲實際生產環境峯值流量下的性能表現 |
容量測試 | CPU<100%+Error0.01% | 10-30min | 併發數、TPS、RT、內存佔比 | 容量基線 | 通常來講90%便可做爲閾值 |
雙節點測試 | CPU<100%+Error0.01% | 10-30min | 併發數、TPS、RT、內存佔比 | 負載均衡基線 | 應考慮隨着服務節點的增長,性能的遞減效應,通常每增長1個節點,理論上性能遞減2-5%(以實際測試結果爲準) |
穩定性測試 | CPU75%+Error0.01% | ≥12h | 併發數、TPS、RT、內存佔比 | 穩定性基線 | 穩定性的運行時間根據具體狀況調整,通常不能低於12h |
PS:今天和朋友聊起這個話題,朋友說還應該有一個高可用測試,不過仔細想了下,高可用我的認爲應該更側重容災和失效恢復測試領域。。。網絡
2、系統配置併發
nCnG:性能測試可能涉及多個系統,每一個系統的服務器配置存在不一樣,所以要明確不一樣系統的硬件配置,這樣也方便針對性的設定測試策略以及分析性能指標。負載均衡
內存分配:這裏主要指的是堆內存分配,須要根據具體的服務器配置進行分配,固然,最好針對性的進行配置測試來肯定內存的合理分配。分佈式
應用版本:以JDK爲例,每一個版本都有不一樣的改進和優化,且被測系統環境應與實際生產環境保持一致的版本。工具
線程池:線程池數量,也是一個須要重視的問題(我本人就遇到過因爲線程耗盡最終致使的OOM)。性能
最大鏈接數:容器、DB的最大鏈接數,消息隊列的消費者數量,也是一個須要考慮的因素。測試
緩存策略:爲了提升系統應對大流量衝擊以及提升可用性,緩存是離不開的一種方法,這裏須要關注的是緩存命中以及緩存穿透的問題。
3、環境選型
SIT:通常來講不多在SIT環境進行基準測試,緣由不少,好比:交叉影響、穩定性、配置不一致甚至多個項目部署在同一個SIT環境等。
UAT:大多數時候,性能測試都是在UAT環境下進行,由於UAT相比SIT穩定性更好,已經經過了系統測試階段,且進行性能測試的成本相比生產環境更低。
PAT:在生產環境進行性能測試,測試結果的準確性是最高的,但也須要考慮到這幾點因素:數據污染、隔離、改形成本、不能影響實際生產業務運行、測試時間等。
4、執行方式
穩定施壓:上面提到的併發、容量、雙節點、穩定性測試通常都是基於一個固定的併發數來模擬負載進行測試,具體的併發數值須要根據實際的用戶數、使用頻次、業務場景考慮。
浪涌測試:在實際生產環境中,有時候存在這種狀況:短期內有很高的流量衝擊,好比限時秒殺等場景。
階梯式加壓:階梯式加壓是尋找系統拐點的最有效的方式。
5、風險預估
在進行基準測試前,要考慮到以當前的環境、業務模型、系統配置可能存在哪些影響測試的因素,以及影響程度、應對策略,好比:網絡延時、網絡波動、交叉影響等。
6、業務模型
基準測試的業務模型選擇,不管是從實施難易程度或者成本考慮,通常都以如下三種類型出發:
核心業務:通常來講核心業務的重要性和使用頻次都是優先級最高的,好比支付、訂單。
高頻次業務:查詢、更新等高頻操做場景,也是須要重點關注的場景。
平常輪詢業務:基準測試的實施前提就是可重複執行和長時間進行測試,這樣才能夠進行對比和統計,來分析長期的系統性能基線變化。
7、工具選型
性能測試過程當中,須要藉助的工具不少,使用佔比最高的爲如下幾種:
負載生成工具:好比Jmeter、Loadrunner、Locust、Gatling、Artillery。
應用監控工具:主要用來監控服務端的各項指標,好比Nmon、Skywalking。
代碼分析工具:好比SonarQube、Codacy,通常結合持續集成工具來進行。
日誌分析工具:好比如今最經常使用的ELK。
DB監控工具:好比Zabbix、DBMonitor。
8、異常處理
在性能測試過程當中,常常會遇到一些異常狀況,好比超時、失敗、接口依賴、敏感數據等狀況,針對這些狀況,設計合理可行的解決方案。
9、統計維度
測試的結果必定要方便從各個層次、維度進行統計,這樣能夠爲後續的分析提供更可靠的數據來源,以響應時間來講,通常從如下幾個維度統計:
維度 | 舉例 | 適用測試策略 |
峯值 | 取系統CPU在75%左右的表現進行屢次統計,加權平均計算 | 併發測試 |
極值 | 取系統CPU<100%的表現進行屢次統計,加權平均計算 | 容量測試 |
平均值 | 平均值的統計,比較適用於響應時間波動不大的狀況 | 雙節點測試 |
百分比值 | 對於服務集羣部署或者分佈式部署的系統,百分比值,更能反映系統的性能表現 | 穩定性測試 |
10、查詢展現
上篇博客介紹過,基準測試的結果必定要便於統計展現,能夠明瞭直觀的展現給相關人員,通常來講,能夠從不一樣維度,粒度從大到小的形式進行查詢展現,好比:
維度 | 說明 |
時間範圍 | 好比默認展現最近一個月的基準變化,也能夠設置根據時間來查詢不一樣時間範圍內的基準表現 |
系統名稱 | 對於涉及對個業務系統的狀況,能夠根據系統名稱進行查詢 |
業務模型 | 從核心業務、高頻次業務、平常輪詢業務等維度,進行展現 |
測試策略 | 根據基準測試的策略,從併發、容量、雙節點、穩定性等角度進行查詢展現 |
能夠經過web頁面、儀表盤、折線圖、樹狀圖等形式,進行不一樣角度的系統基準表現展現,具體如何設計,能夠進行需求調研,而後針對性的設計。