您當前的位置:首頁 > 攝影

效能測試的指標之間有什麼區別和關聯?

作者:由 測試運維過來人 發表于 攝影時間:2022-01-18

效能測試的指標之間有什麼區別和關聯?程式設計師楊叔2022-04-23 10:40:02

一、背景

接著上一篇的知識:效能測試能力提升-關於效能測試,本篇文章,我們將主要介紹以下幾方面的知識:

執行緒數&併發使用者數

相對併發&絕對併發

吞吐量

TPS&QPS

響應時間

二、執行緒數、併發使用者數

執行緒數

: 主流的效能測試工具(Jmeter/Loadrunner),以執行緒式併發的方式,啟動複數個執行緒,讓每個執行緒獨立向伺服器端發出請求,幫我們達成“短時間內向伺服器傳送大量請求”的任務。

有時候我們在描述效能測試過程時,會將這個客戶端的獨立執行緒數表述為“併發數”。

注意

: 這裡的“併發”指的是客戶端併發,並不是服務端的併發。很簡單,客戶端能發出很多請求,伺服器卻未必能處理得了~

併發使用者數

:某一時刻同時向伺服器傳送請求的使用者數。

需要明白的一個誤區

:併發使用者數和 jmeter 的執行緒數,它們是不對等的。併發使用者數應該和 tps 是一個概念,假如需求是想獲取 1000 個使用者同時操作時,系統能否承受得住或者系統各項指標反應如何,我們應該拿 tps 來給出答案。jmeter 的執行緒數大小僅僅是一個壓力的大小概念。

效能測試的指標之間有什麼區別和關聯?

常見問題

:計算最大執行緒數

查詢功能,需要系統能夠在5分鐘內能完成5000筆查詢業務,同時使用者響應時間不超過3s,該用多少執行緒數施壓?

計算公式:最大執行緒數= (單次響應時間

業務量)/總的業務時間

答案:(3

5000)/5*60=50

效能測試的指標之間有什麼區別和關聯?

三、相對併發和絕對併發

什麼是相對併發和絕對併發?

相對併發:指在一個時間段內發生的事情。在jmeter的測試計劃中新增執行緒組,設定執行緒屬性,2秒之內啟動10個執行緒,其對應的相對併發為5(執行緒數/啟動時間)。

絕對併發:指在同一時刻發生的事情。jmeter可以使用同步定時器(Synchronizing Timer)實現絕對併發,也就是同一個時刻達到了某一集合點才發出請求。

效能測試的指標之間有什麼區別和關聯?

壓測時選用哪個更合適?

絕對併發的優點:對伺服器來說,會產生一種瞬間高併發。

絕對併發的缺點:對伺服器來說,平均壓力會降低。

根據業務來選擇:

如果業務場景是瞬間高併發型別的,如搶購、秒殺等,需要加集合點。

或者是多場景測試,你需要確保資料流上下游關係,控流的時候可以考慮。

其他場景都不需要加,加了集合點後,就不適用tps來衡量系統性能。

效能測試的指標之間有什麼區別和關聯?

集合點功能要慎重選擇

因為加了集合點後,系統的平均壓力會降低。原因是多執行緒在集合的時間,伺服器和資料庫都處於休息狀態,他們會有足夠的時間去釋放連線和記憶體等恢復工作。

有些加了集合點併發測試通過了,但是上線後就出現某些資源佔滿情況,就是因為線上真實場景是不會集合的,也就是不會給伺服器一個緩解的時間。

四、吞吐量

吞吐量是服務端的指標:吞吐量是站在“量”的角度去度量,是一個參考指標, 是指單位時間內系統能處理的請求數量,體現系統處理請求的能力,這是目前最常用的效能測試指標。

但是光有“量”的資料有時候並無太大價值,一家餐廳1個小時賣出100份餐品和一個月才賣出100份餐品,單從“量”的維度衡量肯定不行,時間維度很重要!

效能測試領域的吞吐量通常會結合上時間維度進行統計。如果吞吐量的“量”以“事務”為統計單位的話,結合時間維度,就可以換算成TPS。

效能測試的指標之間有什麼區別和關聯?

五、TPS & QPS

QPS

: Queries Per Second,每秒查詢率,是一臺伺服器每秒能夠響應的查詢次數(資料庫中的每秒執行查詢sql的次數)。

因此QPS代表的場景不夠全面,僅僅適用於只執行單次查詢的介面,不建議用QPS來作為系統性能指標。

TPS

: Transactions Per Second,每秒事務數,具體事務的定義,是人為制定的,可以是一個介面、多個介面、一個業務流程等等……

以單介面定義為事務為例,每個事務包括瞭如下3個過程:

向伺服器發請求。

伺服器自己的內部處理(包含應用伺服器、資料庫伺服器等)

伺服器返回結果給客戶端

如果每秒能夠完成N次這3個過程,TPS就是N。

如果多個介面定義為一個事務,那麼這多個請求完成一次,算做一個TPS。

效能測試的指標之間有什麼區別和關聯?

TPS和QPS的關係

如果是對一個查詢介面(單場景)壓測,且這個介面內部不會再去請求其它介面,那麼tps=qps,否則,tps≠qps。

如果是容量場景,假設n個介面都是查詢介面,且這個介面內部不會再去請求其它介面,qps=n*tps。

如何估算TPS

根據已有介面評估:

如果是一個老介面–上一次大促峰值的3-5倍為目標TPS

如果是一個新介面–可以參考相同業務場景的其他介面目標制定

根據業務量評估:

案例:

預期20萬註冊使用者,其中每天活躍使用者峰值預計佔10%,首頁存在遊客訪問則增加一倍;活躍使用者平均每人每天訪問介面4次;訪問時間段大多數在20:00-21:00

計算方式:

透過二八原則,80%的業務在20%的時間產生

峰值TPS=業務量 * 80%/業務時段(秒)* 20%

計算:200000 * 10% * 2 * 4 * 80%/3600 * 20%=178

效能測試的指標之間有什麼區別和關聯?

六、響應時間

最小、最大、平均、90th pct:最小響應時間、最大響應時間、平均響應時間都很好理解。

這裡只單獨說一下90th pct的含義:

表示將整個測試過程中,介面所有請求的所有響應時間按從小到大排列為N個點,取N*90%這個點的響應時間即為此請求的90%響應時間,其代表90%的請求在此響應時間以內。

效能測試的指標之間有什麼區別和關聯?

知識擴充套件:Std.Dev: Standard Deviation

在Jmeter的監聽器summary report中,我們會看到有這樣的一個欄位:

效能測試的指標之間有什麼區別和關聯?

那這個欄位是什麼意思呢?解釋如下:

std。deviation: 標準偏差,一種度量資料分佈的分散程度之標準,用以衡量資料值偏離算術平均值的程度。

標準偏差的值越小,則說明各個樣本的響應時間越接近平均值,一定程度上也表明系統更加穩定。

計算標準偏差的值,可以在Excel中使用公式:=STDEV。P() 來計算。

舉個例子:

兩組資料,平均值都是70,但是明顯第二組資料相比第一組資料,各個樣本的值更接近平均值:

效能測試的指標之間有什麼區別和關聯?

計算兩組資料的標準偏差值,第二組2。16,第一組17。07,因此標準偏差的值越小,則說明各個樣本的值越接近平均值:

效能測試的指標之間有什麼區別和關聯?

===================================================================

以上就是本次的全部內容,如果對你有幫助,麻煩點個贊+收藏+分享,你的支援就是作者更新最大的動力~

下一篇文章,我們將主要介紹以下幾方面的知識:

基準測試、負載測試、壓力測試、容量測試

負載測試知識擴充套件:階梯式加壓

壓力測試知識擴充套件:穩定性、破壞性壓測

容量測試知識擴充套件:容量指標選取、容量規劃、擴容手段

歡迎關注我的微信公眾號:

程式設計師楊叔

, 測開一枚,持續分享全棧測試知識乾貨。標籤:自動化測試、效能測試、Java、Python、DevOps、CI/CD、小程式測試、測試工具、測試開發、測試框架/平臺、測試管理…

標簽: 併發  執行緒  測試  介面  tps