目錄
一、什么是性能?
二、什么是性能測試?
三、性能測試結果需要記錄哪些參數?
四、如何做性能測試(性能測試流程)?
1、指標建模?
2、診斷調優
五、常見性能測試工具
一、什么是性能?
時間復雜度和空間復雜度:性能不僅僅包括處理的效率,還要包括資源的占用;
相同的效率下,資源(CPU、內存、IO等)占用越小---則性能越高;
相同的資源占用(CPU、內存、IO等)下,處理效率越高---則性能越高;
計算機資源:CPU、GPU、內存、磁盤、網路等;而性能的問題,也一般體現在資源的不足上面(主要是CPU、內存和IO);
當然,也有些性能的問題是程序上,如沒做負載均衡、單核工作等,這會出現設備整體資源大部分空閑,但處理性能卻到瓶頸的問題;
二、什么是性能測試?
?簡單來說:是通過模擬增加負載來測試系統、網絡設備在負載情況下,其延遲、新建、并發、吞吐等指標是否滿足性能要求的測試,比如:壓力測試、負載測試、容量測試等
負載測試 | 是一種通過不斷增加負載來測試出系統、網絡設備性能瓶頸或表現的方法。階梯式增加負載或達到一定負載時,找出系統cpu、內存、網絡不足時性能的拐點。 舉例1:測出web系統登錄接口的最大并發性能; |
壓力測試 | 是一種極限負載時,測試系統、網絡設備在極限狀態下且長時間運行是否穩定的方法。主要目的是極端異常高壓下,測試系統的容錯、可恢復能力。壓測是長時間的高負載測試。 舉例1:測出web系統商品展示頁面在大壓力(超出系統支持的最大負載)下是否正常展示,系統是否穩定; |
容量測試 | 是一種測試出系統最大最優容量的方法。如:用戶認證最大數、模塊配置最大條數、存儲最大容量等。在指標測試、性能場景測試、穩定性測試中都會覆蓋到容量。 舉例1:測出web系統支持注冊的最大用戶數,購物車支持最大商品數; |
在工作中不同公司通常有自己定義的性能測試項,本質都是基于上面三個基本概念(負載、壓力、容量)延伸出來的。這里舉個工作中普遍設計的性能測試項例子;
測試活動中都會接觸指標測試、可靠性測試、穩定性測試,下面重點介紹它們:
區別:
1、指標測試:更偏向于測試建模,驗證系統不同負載下的各項指標數據,其測試模型、環境、方法、儀器、報告都比較標準化,一般有自動化做基準測試。
2、可靠性測試:更偏向于測試模擬用戶真實業務、行為操作等,以及大壓力下可能出現的故障容錯與恢復性。一般都是臨時搭建測試環境,需要設計可靠性用例
3、穩定性測試:也是可靠性測試的一種,但要求更嚴格,部署,配置,操作,壓力,監控等都必須嚴格遵守與記錄,保持正常運行2周以上(出現異常則重新計算),直到項目發布(部分項目發布后還需繼續跑幾周)
?性能測試目的:
- 評估系統能力,對比數據,幫助規劃人員作出下一步決策
- 性能調優,持續提升產品軟件性能
- 滿足用戶大型業務需求,方案需求
- 提供產品應標性能參數表,供客戶選型或友商PK
- 評估系統的資源,及時發現資源不足的風險
- 評估單個模塊的開啟可能對整體性能的影響
三、性能測試結果需要記錄哪些參數?
上面講過性能測試有很多項,但首要測試的通常是指標測試,即測試系統最大處理能力,測試結果通常有以下幾項。
常見性能參數:
1、新建數:通常都是指每秒4層tcp的新建連接的個數。如:Nat模塊支持最大21w新建數每秒。
2、并發連接數:通常測試網絡設備,保持4層連接(tcp/udp/icmp)的總數,也叫會話數。
3、吞吐量:每秒通過設備的數據量(Bps/bps),可細分上行吞吐、下行吞吐。
4、用戶數:通常測試網絡設備,指設備上活躍上線的用戶總數。
5、包轉發率:每秒通過設備的數據報文(pps),可細分上行pps、下行pps。
6、頁面的性能體驗指標,分別包括:空載情況,正常負載情況和滿載情況。
7、資源占用:各種負載下的CPU占用、內存占用、IO占用情況;
不同的系統測試項通常不一樣,如底層網絡設備,通常會測試4層的新建和并發連接性能;服務器系統通常會測試7層的最大并發(TPS)和響應延遲,并記錄最大性能負載下的資源占用情況(CPU、內存、IO)。
四、如何做性能測試(性能測試流程)?
性能測試流程通常包括五個流程:
1、指標建模?
上面最大難點在于指標建模,測試模型要考慮:什么樣的測試環境配置(幾核幾G),配置開關和比率,流量業務和比率等,最后在定好的測試模型開始設計性能場景用例;
以某個新功能模塊為例,那性能場景用例通常包括那些呢?
- 模塊規格基線:測試最大容量規格的性能指標(如:滿配1萬在線用戶下的資源占用);
- 模塊管理面性能:頁面響應指標,配置下發指標(如:CPU負載80%下訪問購物車頁面的響應耗時);
- 模塊數據面性能:用戶場景下模塊本身的性能指標(如:商品展示頁面支持的最大并發訪問;模塊啟用后資源占用情況等)
2、診斷調優
測試出性能數據后,怎么判定性能是否達標,通常性能要求在需求階段就有定義好了,類似以下定義:
支持1萬并發用戶訪問,95%請求響應延遲低于1s,且最大負載下模塊CPU占用不超過50%,內存占用不超過1G。
如果性能不達標,就需要給出資源占用數據,協助研發一同分析:
?
五、常見性能測試工具
?網絡網關類設備性能通常會用思博倫(spt)儀器測試4層網絡吞吐性能;
互聯網公司大部分是web系統,測試也主要是web 接口性能,通常用Jmeter、loadrunner,或者用python測試,常用python測試接口并發性能的工具是locust。
工具類使用教程網上搜基本都有,這里不做描述。
如果你認真讀到這里,那么我相信你對于性能測試已經有了基本了解,出發吧,少年,性能測試是一項系統性功能,不容易被AI替代,目前相關崗位待遇也不錯。
覺得有收獲給個贊或收藏!