13年測試老鳥,性能測試-618與雙11大促銷壓測(二)

目錄:導讀

    • 前言
    • 一、Python編程入門到精通
    • 二、接口自動化項目實戰
    • 三、Web自動化項目實戰
    • 四、App自動化項目實戰
    • 五、一線大廠簡歷
    • 六、測試開發DevOps體系
    • 七、常用自動化測試工具
    • 八、JMeter性能測試
    • 九、總結(尾部小驚喜)


前言

1、準備工作

準備工作在性能測試中,是最為耗時以及麻煩的,不僅需要各個團隊協同配合,還需要不斷驗證,以確保相關的準備事項不會對性能測試結果造成較大影響。

以我司的性能測試流程來說,準備階段的各事項以及對應責任人,如下圖:

在這里插入圖片描述

在準備階段,性能測試童鞋,要盡可能承擔起PM這一角色的職責,跨部門溝通,協調資源以及推動準備工作的快速落地,這樣才能在有限時間內完成準備事項,為壓測預留足夠的時間。

2、壓測監控

完成了前面的幾項工作,就可以進入壓測階段了,這一階段,可以分為兩部分,壓測+監控。

1)壓測

壓測工作主要有如下幾種情景,按照預先制定的測試策略執行即可(不排除臨時特殊情況,這里需靈活調整)。

①單機單接口測試:該策略主要是為了驗證單接口的性能基準,避免整個調用鏈路過程中某個服務/接口成為瓶頸;

②單機多接口測試:相較于微服務架構的服務解耦,有時候某些服務間互相調用依賴的強關系可能會造成資源競爭等情況,需要通過這種方式來排查驗證;

③單機混合場景測試:這種測試方式的主要作用是得到一個單機混合場景下的最優性能表現,為服務擴容和線上容量規劃提供參考數據;

④多節點測試:現在大多數的互聯網企業都采用的集群/分布式/微服務架構,在多節點部署時候,考慮到SLB的邊際遞減效應,需要進行多節點測試;

通過該種方式,來驗證負載均衡遞減比率,為生產擴容提供精確的參考依據;

⑤高可用測試:高可用主要驗證2點:服務異常/宕機是否可以恢復以及恢復到正常水*所耗費的時間(越短越好)。

⑥穩定性測試:前面提到了核心業務流程必須保證穩定性,穩定性測試一般根據系統特點和業務類型,分為兩類:5d*12h、7d*24h

一般來說,穩定性測試的執行時間,12h即可(當然,24h或者更長也可以,根據具體情況靈活調整)。

2)監控

性能測試過程中,監控是很重要的一環,它可以幫助我們驗證測試的結果是否滿足預期指標,以及協助我們發現系統存在的問題。常見的監控指標如下:

在這里插入圖片描述

那么如何監控這些指標呢?

如果采用的云服務器(比如阿里云),現在國內的云廠商都提供了監控大盤以及各種監控服務(比如阿里云的APM、ARMS、AHAS)。

如果是自建服務機房,可以借助運維搭建的監控體系,比如全鏈路追蹤(pinpoint、cat、zipkin、skywalking),專業的監控工具比如Nmon、Zabbix等。

測試指標的監控,可以搭建基于開源組件的Grafana+InfluxDB+Jmeter+Nmon2influxdb,或者ELK等監控體系。

3、分析調優

1)性能分析

性能分析是一個復雜的話題,不同的系統架構設計、應用場景、業務邏輯、編程語言及采用的框架,都有一定的差異。抽象來說,有如下三種分析思路:

①自上而下:即通過生成負載來觀察被測系統的性能表現,比如通過對TPS、RT等指標的監控,從請求發起端到OS端層層剖析,從而找到系統性能瓶頸。

②自下而上:通過監控各硬件及操作系統相關指標(CPU、Memory、磁盤I/O、網絡)來分析性能瓶頸。

③從局部到整體:即通過性能表象結合工作經驗做快速排除,確定可能存在瓶頸的局部所在,快速修改驗證,避免大而全的全面分析帶來的耗時,提高效率。

2)性能調優

性能調優主要關注三個方面:降低響應時間、提高系統吞吐量、提高服務的可用性。

性能優化的目的是:在保持和降低系統99%RT的前提下,不斷提高系統吞吐量以及流量高峰時期的服務可用性。

性能調優建議遵循如下幾點原則:

①Gustafson定律:系統優化某組件所獲得的系統性能的改善程度,取決于該部件被使用的頻率,或所占總執行時間的比例。

②Amdahl定律:S=1/(1-a+a/n)

其中,a為并行計算部分所占比例,n為并行處理結點個數。這樣,當1-a=0時,(沒有串行,只有并行)最大加速比s=n;

當a=0時(只有串行,沒有并行),最小加速比s=1;當n→∞時,極限加速比s→ 1/(1-a),這也就是加速比的上限。

③最小可用原則:一般情況下,系統的代碼量會隨著功能的增加而變多,健壯性有時候也需要通過編寫異常處理代碼來實現,異常考慮越全面,異常處理的代碼量就越大。

隨著代碼量的增大,引入BUG的概率也越大,系統也就越不健壯。從另一個方面來說,異常流程處理代碼也要考慮健壯性的問題,這就形成了無限循環。

因此在系統設計和代碼編寫過程中,要求:一個功能模塊如非必要,就不要;一段代碼如非必寫,則不寫。

4、容量規劃

性能測試的最終目的是保證線上服務的可用性,及時響應并滿足業務需求。而容量規劃,是對線上服務在峰值流量沖擊下穩定運行的最佳保障。

1)單機混合容量

這里的容量指的是在單臺服務器下,混合場景壓測的最優性能表現(而不是最高)。比如一臺4C8G的服務器,對核心業務場景進行按業務配比混合壓測,示例如下圖:

在這里插入圖片描述

得到單機最優容量數值,然后可以通過增加被測系統的服務節點,來驗證容量是否隨著服務節點的增加而線性增長。

2)多節點SLB容量

以上面的示例圖來說,單機最優TPS≈450,然后通過增加服務節點數量,再次壓測,通過擴容后的壓測數值除以服務節點數量,然后和單機混合容量對比,就可以得到多節點SLB的遞減比率。

舉例:擴容后的壓測數值為R,服務節點數量為N,單機混合容量為D,那么多節點SLB的遞減比率計算公式為:SLB%=(R/N)/D。

以前面的例子來說,單機混合容量為450,服務節點擴展到2臺,得到測試結果為750,那么SLB%=(750/2)/450≈83.33%。

以此類推,如果預期線上性能指標要求TPS≥5000,那么通過計算,我們可以得到線上服務節點最少需要擴容到14臺,才能滿足需要。

PS:服務節點數量越多,那么遞減效應越明顯,建議通過測試多個服務節點的遞減比率,來得到一個區間數。

3)告警閾值

這里的告警閾值,指的是運維同事對各個服務狀態及相關資源指標進行監控時,設定的提醒和告警閾值。

前面所說的單機混合容量的最優值,建議結合運維設定的閾值來綜合評估(比如運維告警設定的閾值是CPU使用率達到80%,那么就以單機CPU80%耗用下的容量數值作為計算基準)。

4)Buffer機

文章的開頭已經說過,系統不僅要具有高可用和穩定性,還要具有容災機制。比如某個或某部分服務不可用,服務器宕機,需要預留的機器來隨時補上來。

本文所說的Buffer機,即作為預留容災的機器。按照我個人的實踐經驗來說,以線上擴容機器數量的30%來作為預留Buffer機,已經能滿足絕大部分情況(適合中小型團隊)。

當然,有些特殊場景(比如2019年春節聯歡晚會,百度承包的口令紅包場景),就需要綜合考慮更多的影響因素。

除了容量規劃,我們還可以通過服務降級、網關限流甚至熔斷等機制,來保證系統在峰值流量的沖擊下保持服務可用。

完整版!企業級性能測試實戰,速通Jmeter性能測試到分布式集群壓測教程

下面是我整理的2025年最全的軟件測試工程師學習知識架構體系圖

一、Python編程入門到精通

請添加圖片描述

二、接口自動化項目實戰

請添加圖片描述

三、Web自動化項目實戰

請添加圖片描述

四、App自動化項目實戰

請添加圖片描述

五、一線大廠簡歷

請添加圖片描述

六、測試開發DevOps體系

請添加圖片描述

七、常用自動化測試工具

請添加圖片描述

八、JMeter性能測試

請添加圖片描述

九、總結(尾部小驚喜)

人生最動人的風景,往往藏在最險峻的山巔。當你覺得力竭時,請記住:每一次堅持都在重塑更強大的自己。別問路有多遠,只管邁步向前;別怕山有多高,向上攀登就是答案!

你體內沉睡著改變世界的力量!每個清晨都是改寫命運的新機會,每次挫折都是精心包裝的禮物。當全世界都在說"不可能"時,正是你證明"可能"的最好時機!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/923475.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/923475.shtml
英文地址,請注明出處:http://en.pswp.cn/news/923475.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

StreamCap(直播錄制) v1.0.2 綠色版

StreamCap 是一個基于FFmpeg和StreamGet的多平臺直播流錄制客戶端,覆蓋 40 國內外主流直播平臺,支持批量錄制、循環監控、定時監控和自動轉碼等功能。軟件特色 多端支持:支持Windows/MacOS/Web運行。循環監控:實時監控直播間狀態&…

OpenCV:圖像拼接(SIFT 特征匹配 + 透視變換)

目錄 一、核心技術原理與對應 API 解析 1.1 SIFT 特征檢測與描述(尺度不變特征提取) 1.1.1 灰度圖轉換:cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 1.1.2 SIFT 檢測器初始化:cv2.SIFT_create() 1.1.3 特征點檢測與描述符計算&…

日語學習-日語知識點小記-進階-JLPT-N1階段藍寶書,共120語法(10):91-100語法+考え方13

日語學習-日語知識點小記-進階-JLPT-N1階段藍寶書,共120語法(10):91-100語法1、前言(1)情況說明(2)工程師的信仰(3)高級語法N1語法和難點2、知識點-語法&…

繼承與組合:C++面向對象的核心

C 繼承:從基礎到實戰,徹底搞懂面向對象的 “代碼復用術” 在面向對象編程(OOP)的世界里,“繼承” 是實現代碼復用的核心機制 —— 就像現實中孩子會繼承父母的特征,C 的子類也能 “繼承” 父類的成員&#…

Matplotlib定制:精解顏色、字體、線型與標記

Matplotlib定制:精解顏色、字體、線型與標記導語 Matplotlib 是 Python 數據可視化領域的基石。雖然它的默認樣式足以滿足快速分析的需求,但要創作出具有專業水準、信息清晰、視覺美觀的圖表,就必須掌握其強大的定制功能。本文將深入探討 Mat…

Qt開發經驗 --- Qt監聽文件/文件夾改變(17)

文章目錄[toc]1 概述2 演示效果3 簡單使用示例4 帶界面的使用示例5 源代碼地址更多精彩內容👉內容導航 👈👉Qt開發經驗 👈1 概述 QT實現實時監控文件的創建、修改、刪除操作 跟蹤文件夾內容的增刪改變化 可用于文件發生變化時自…

數據分析:合并一

🔷 DA37:統計運動會項目報名人數(僅輸出有人報名的項目)? 題目描述給定兩個 CSV 文件:items.csv:包含項目信息(item_id, item_name, location)signup.csv:包含員工報名信…

WWW‘25一通讀 |圖Anomaly/OOD檢測相關文章(1)

寫在前面:進入新一輪學習階段,從閱讀開始。 本文分享的是WWW2025收錄的與作者研究相近的graph-based xx相關paper的閱讀筆記,含個人理解,僅供參考😄 0x01 HEI:利用不變性原理實現異配圖結構分布偏移學習 J…

static_cast:C++類型系統的“正經翻譯官”

1. 背景與核心概念 1.1 C的“類型安全”哲學 想象一下,你所在的世界突然失去了所有規則:文字可以隨意變成數字,人可以瞬間變成椅子,汽車能飛上天變成飛機… 這聽起來像是瘋狂的夢境,但對于早期C語言來說,這…

【嵌入式原理系列-第八篇】USART從原理到配置全解析

目錄 一.通信領域基礎知識介紹 1.1 串行和并行通信 1.2 同步和異步傳輸 1.3 串口和COM口 1.4 通信協議標準以及物理層定義 1.5 物理層協議之TTL / RS-232 / RS-485 二.USART介紹 2.1 USART特點介紹 2.2 UART和TTL / RS-232 / RS-485 2.3 USART硬線流控介紹 2.4 USAR…

MariaDB介紹和MariaDB包安裝

文章目錄MariaDB介紹和安裝1.MariaDB介紹1.1 起源與背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 優化的存儲引擎1.2.3 企業級功能增強1.2.4 性能優化1.2.5 安全增強1.3 社區與生態1.4 應用場景1.5 總結2.MariaDB安裝2.1 主機初始化2.1.1 設置網卡名2.1.2 設置ip地址2.1.3 配置鏡…

雙指針與滑動窗口算法精講:從原理到高頻面試題實戰

引言:算法選擇的十字路口 在算法面試中,雙指針和滑動窗口如同兩把瑞士軍刀,能高效解決80%以上的數組和字符串問題。本文將深入解析這兩種技術的核心差異,結合力扣高頻題目,提供可直接復用的代碼。 一、算法核心思想解析…

蘋果MAC、MacBook air和pro安裝windows雙系統與iOS分發

文章目錄1. main1.1 準備工作1.2 啟動轉換助理1.3 Windows安裝1.4 蘋果電腦安裝Windows雙系統切換2. 蘋果(iOS)分發/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免簽上架2.4 超級簽名2.5 企業證書2.6 app分發系統Reference1. main 蘋果電腦安裝windows雙系統 https:…

ArcGIS定向影像(1)——非傳統影像輕量級解決方案

常常聽到這樣的需求,ArcGIS能讓用戶自己低成本的做出谷歌街景嗎?現在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能夠讓用戶不使用任何插件和擴展的情況下完成街景數據集的構建,數據管理,發布服務和調用的完整解決方案。非常體…

uni-app 網絡之封裝實戰HTTP請求框架

前言在uniapp開發中,網絡請求是每個應用都必不可少的功能模塊。一個優秀的網絡請求封裝不僅能提高開發效率,還能增強代碼的可維護性和可擴展性。本文將基于實際項目經驗,詳細介紹如何封裝一個高效、可維護的Uniapp網絡請求框架,并…

架構師成長之路-架構方法論

文章目錄前言一、先搞懂:架構師不僅僅是“技術大佬”,更是“問題解決者”1.1 架構師的分類:不止“開發架構師”一種1.2 架構師要關注什么?別只盯著技術1.3 架構師解決問題的4步心法:從定義到落地1.4 架構師的成長攻略&…

uniapp在微信小程序中實現 SSE 流式響應

前言 最近需要使用uniapp開發一個智能對話頁面,其中就需要使用SSE進行通信。 本文介紹下在uniapp中如何基于uni.request實現SSE流式處理。 在線體驗 #小程序:yinuosnowball SSE傳輸格式 返回輸出的流式塊: Content-Type為text/event-stream 每個流式塊均為 d…

STM32N6AI資料匯總

文章目錄前言一、STM32N6硬件資源1.1 NUCLEO-N657X0-Q1.2 STM32N6570-DK1.3 正點原子STM32N647二、STM32N6軟件資源2.1 STM32CubeN6例程資源包2.2 STM32圖像信號處理器(ISP)調優軟件2.3 正點原子N6開發板配套軟件三、AI軟件資源3.1 STM32N6 AI軟件包總結…

Flask學習筆記(一)

1、環境準備pip install Flask使用Flask開發第1個入門程序:from flask import Flask app Flask(__name__) app.route(/) def hello_world():return Hello, World!if __name__ __main__:app.run()Flask構造函數將當前模塊的名稱(__name__)作為參數。2、route函數ap…

CSP認證練習題目推薦(4)

思維、貪心、綜合 排隊打水 這道題目不算難,但是不注意還是會出現很多錯誤,比如結構體的書寫。以及自定義結構體排序。還有這里做的優化,使用前綴和記錄打水的等待時間,但是這里很容易出錯的點在于等待時間是應該是記錄的前一個…