業務需求
假設公司領導現在給你分配了一個性能測試需求如下:
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
