jmeter根據負載量計算並發用戶數實例


業務需求

假設公司領導現在給你分配了一個性能測試需求如下:
1:公司有1000人在上班時間段會登錄平台進行打卡操作,可能會登錄打卡多次
2:業務高峰時間段在8:00-8:30,半小時
3:需要保證90%用戶的響應時間在1s以內
4:保證在半小時內支撐5000筆打卡業務完成,同時90%業務時間不超過1s,半小時內最大系統並發數能達到多少?每秒最大用戶並發能達到多少?

分析需求

a.1000人在30分鍾內完成登錄,那么每分鍾有1000/30=33的人登錄,每秒有0.56人登錄,也就是2s中有1個人登錄;

b.5000筆打卡業務在30分鍾內完成,那么每秒中需要完成5000/(30*60)=2.78個打卡事務;

綜合就是半小時內,每2s有一人登錄,每秒需有3個打卡事務;也就是線程持續時間30分鍾,打卡tps=3;

循環一次,登錄317ms+打卡976ms=1293ms,1s中可迭代0.77次;30分鍾可迭代1392次;登錄請求1個線程即可滿足要求;

30分鍾想完成5000筆打卡,需並發線程5000/1392=3.6 即4個線程;

 

 

 

 

 實際請求中,還需要考慮登錄時輸入賬戶密碼的時間,可加定時器;

參考:https://testerhome.com/articles/21163,最終匯總如下:

測試模型構建 & 用例設計

這種需求是典型的根據負載量計算並發數的場景。首先我們需要設計一下業務場景;

一、場景構建:登錄業務操作流程、考勤打卡操作流程;

二、場景用例設計

  1.測試場景類型:

單業務基准測試、單業務壓力測試、單業務負載測試;

綜合業務基准測試、綜合業務壓力測試、綜合業務負載測試;

  2.業務量線程數的確定:

登錄業務-線程數確定、考勤打卡-線程數確定;

  3.測試場景用例設計:

登錄並發-場景用例、登錄業務量-場景用例、並發考勤-場景用例、考勤打卡業務量-場景用例;

三、測試腳本用例設計:

 登錄-腳本用例、考勤打卡-腳本用例;

模型構建

登錄業務-操作流程

a)訪問登錄頁面;

b)輸入賬號、密碼,點擊【登錄】,跳轉到主頁;

c)點擊【退出】,跳轉到登錄頁面;

登錄打卡-操作流程:

a)訪問登錄頁面;;

b)輸入賬號、密碼,點擊【登錄】,跳轉到主頁;

c)點擊【考勤管理】,進入考勤主頁;

d)點擊【打卡】;

e)進入考勤打卡頁面,查看打卡記錄;

e )點擊【退出】,跳轉到登錄頁;

場景設計

性能測試過程中,首先應該設計測試場景,然后針對場景設計腳本。為了真實反映被測對象的性能問題,需要盡可能模擬出被測對象可能發生瓶頸的業務場景。然后設計針對業務的測試場景;

常用測試場景的類型;

性能測試通常有幾種常用測試場景:單業務基准測試、單業務壓力測試、單業務負載測試、綜合業務基准測試、綜合業務壓力測試、綜合業務負載測試;

1)基准測試

測試某個具體業務是否滿足系統設計 或 用戶期望的性能指標;基准測試可以為並發基准、業務量基准;

如,期望登錄接口支持500個用戶並發登錄,同時響應時間不超過需求值。滿足則認為基准測試完成,否則失敗;

2)壓力測試

測試某個具體業務在最大負載下,持續服務的時長,以此驗證被測業務的穩定性;

壓力測試過程中所設計的負載,是以系統基准測試為標准,如登錄接口最大並發為500個並發,則壓力測試的負載設計為500個;通過運行時長的變化,驗證服務器在系統最大負載下持續服務的能力;

3)負載測試

測試某個具體業務能夠承受的最大負載,驗證被測業務能夠承受的最大負載數;

如系統基准測試最大並發為500個,則通過多次測試,逐步加大負載,最終獲得被測業務的最佳負載。在最佳負載下,系統需要滿足各項性能指標;

 

 

 登錄打卡345ms*5=1725ms

加了事務控制器后,登錄打卡1397ms

 

 實際情況,還需要考慮以下情形的思考時間,如:

用戶輸入用戶名、密碼:5s;

打開考勤后等待時間:2s;

用定時器模擬思考時間;

那么一次登錄打卡需要時間(t)為1.397+5+2=8.397s;

那么30分鍾(T)可以迭代登錄打卡的次數=30*60/8.397=214.36;實際需要5000筆業務數;

需要設置的線程數=5000/214.36=23.32,為了保證>=5000筆業務數,所以線程取24;線程數=5000/(60*T/t)=5000*[t/(60*T)]

由此可以得出:Thread = BC*[t/(60*T)],

BC:業務數/業務量,本例中 BC=5000 ;

t:單用戶單次業務消耗時間,盡可能模擬真實用戶的真實行為,本例中 t=8.397s;

T:考察時長,本例中 T=30分鍾;

關於Thread,這里計算的是需要的線程數,事實上這個公式計算的是單位時間平均並發數。就是單位時間內有多少用戶或者線程並發向服務端發起請求

假如登錄打卡業務場景,計算的是24.

在jmeter中表示需要系統平均需要24個線程同時發起請求才能在對應的時間段內支撐對應的業務量;

在真實的用戶場景中,則表示平均每秒最大支撐24個用戶同時發起請求才能在對應的時間段內支撐對應的業務量;

這個計算的是評價並發

對應的峰值並發:Thread_Max = Thread + 3*根號Thread

如果平均並發是24的花,那么Thread_Max = 24 + 3*根號24 = 38.7,每秒的並發用戶峰值大約是39;

 

  尷尬了,跑了2次,均未到達5000業務數,無解ing


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM