1. 程式人生 > >聊聊基準測試的MVP方案

聊聊基準測試的MVP方案

inf 最終 重點 層次 基準測試 導圖 過程 nmon 容量

上篇博客介紹了基準測試的一些思路和方法策略,這篇博客,聊聊基準測試的MVP(最小可行性方案)。。。

思維導圖

技術分享圖片

一、測試策略

策略名稱 閾值 運行時間 性能指標 基線 註釋
並發測試 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:今天和朋友聊起這個話題,朋友說還應該有一個高可用測試,不過仔細想了下,高可用個人認為應該更側重容災和失效恢復測試領域。。。

二、系統配置

nCnG:性能測試可能涉及多個系統,每個系統的服務器配置存在不同,因此要明確不同系統的硬件配置,這樣也方便針對性的設定測試策略以及分析性能指標。

內存分配:這裏主要指的是堆內存分配,需要根據具體的服務器配置進行分配,當然,最好針對性的進行配置測試來確定內存的合理分配。

應用版本:以JDK為例,每個版本都有不同的改進和優化,且被測系統環境應與實際生產環境保持一致的版本。

線程池:線程池數量,也是一個需要重視的問題(我本人就遇到過由於線程耗盡最終導致的OOM)。

最大連接數:容器、DB的最大連接數,消息隊列的消費者數量,也是一個需要考慮的因素。

緩存策略:為了提高系統應對大流量沖擊以及提高可用性,緩存是離不開的一種方法,這裏需要關註的是緩存命中以及緩存穿透的問題。

三、環境選型

SIT:一般來說很少在SIT環境進行基準測試,原因很多,比如:交叉影響、穩定性、配置不一致甚至多個項目部署在同一個SIT環境等。

UAT:大多數時候,性能測試都是在UAT環境下進行,因為UAT相比SIT穩定性更好,已經通過了系統測試階段,且進行性能測試的成本相比生產環境更低。

PAT

:在生產環境進行性能測試,測試結果的準確性是最高的,但也需要考慮到這幾點因素:數據汙染、隔離、改造成本、不能影響實際生產業務運行、測試時間等。

四、執行方式

穩定施壓:上面提到的並發、容量、雙節點、穩定性測試一般都是基於一個固定的並發數來模擬負載進行測試,具體的並發數值需要根據實際的用戶數、使用頻次、業務場景考慮。

浪湧測試:在實際生產環境中,有時候存在這種情況:短時間內有很高的流量沖擊,比如限時秒殺等場景。

階梯式加壓:階梯式加壓是尋找系統拐點的最有效的方式。

五、風險預估

在進行基準測試前,要考慮到以當前的環境、業務模型、系統配置可能存在哪些影響測試的因素,以及影響程度、應對策略,比如:網絡延時、網絡波動、交叉影響等。

六、業務模型

基準測試的業務模型選擇,無論是從實施難易程度或者成本考慮,一般都以以下三種類型出發:

核心業務:一般來說核心業務的重要性和使用頻次都是優先級最高的,比如支付、訂單。

高頻次業務:查詢、更新等高頻操作場景,也是需要重點關註的場景。

日常輪詢業務:基準測試的實施前提就是可重復執行和長時間進行測試,這樣才可以進行對比和統計,來分析長期的系統性能基線變化。

七、工具選型

性能測試過程中,需要借助的工具很多,使用占比最高的為以下幾種:

負載生成工具:比如Jmeter、Loadrunner、Locust、Gatling、Artillery。

應用監控工具:主要用來監控服務端的各項指標,比如Nmon、Skywalking。

代碼分析工具:比如SonarQube、Codacy,一般結合持續集成工具來進行。

日誌分析工具:比如現在最常用的ELK。

DB監控工具:比如Zabbix、DBMonitor。

八、異常處理

在性能測試過程中,經常會遇到一些異常情況,比如超時、失敗、接口依賴、敏感數據等情況,針對這些情況,設計合理可行的解決方案。

九、統計維度

測試的結果一定要方便從各個層次、維度進行統計,這樣可以為後續的分析提供更可靠的數據來源,以響應時間來說,一般從以下幾個維度統計:

維度 舉例 適用測試策略
峰值 取系統CPU在75%左右的表現進行多次統計,加權平均計算 並發測試
極值 取系統CPU<100%的表現進行多次統計,加權平均計算 容量測試
平均值 平均值的統計,比較適用於響應時間波動不大的情況 雙節點測試
百分比值 對於服務集群部署或者分布式部署的系統,百分比值,更能反映系統的性能表現 穩定性測試

十、查詢展示

上篇博客介紹過,基準測試的結果一定要便於統計展示,可以明了直觀的展示給相關人員,一般來說,可以從不同維度,粒度從大到小的形式進行查詢展示,比如:

維度 說明
時間範圍 比如默認展示最近一個月的基準變化,也可以設置根據時間來查詢不同時間範圍內的基準表現
系統名稱 對於涉及對個業務系統的情況,可以根據系統名稱進行查詢
業務模型 從核心業務、高頻次業務、日常輪詢業務等維度,進行展示
測試策略 根據基準測試的策略,從並發、容量、雙節點、穩定性等角度進行查詢展示

可以通過web頁面、儀表盤、折線圖、樹狀圖等形式,進行不同角度的系統基準表現展示,具體如何設計,可以進行需求調研,然後針對性的設計。

聊聊基準測試的MVP方案