原文來自:https://www.cnblogs.com/hjhsysu/p/9189897.html
線程屬性包含了:線程數、Ramp-Up時間(秒)、循環次數。
我整理下線程屬性的定義,如圖:
難點在於如何確定一個合適的Ramp-Up時間(秒)。接下來講解:
線程數:n
Ramp-Up時間:T
循環次數:a(循環次數a只是為了延長單個線程的運行時間,從而保證當最后一個線程啟動時,所有線程都在運行中,從而達到壓測效果)
若每個循環運行時間:t
理論上:
1)當時間到S=(T-T/n)時,最后一個線程啟動,若要使所有線程同時運行,則需要在最后一個線程啟動的時候第一個線程仍未關閉,為達到這個需求,需a*t>S及a>S/t
2)每個線程運行時間:R=a*t(此處的a是大於S/t的某一個值),則第一個線程在時間點R的時候停止。
3)整個測試理論運行時間:S+R=(1-1/n)*T+a*t
實際運用中,如果根據理論知識來確定Ramp-Up時間?
先在jmeter中假設n(線程數)、T(Ramp-Up時間)的值,a(循環次數)暫定為1,運行腳本后,查看聚合報告中平均響應時間是多少,也就是t(每個循環運行時間)的值,然后根據公式( S = (T- T/n) )計算出S(最后一個線程第S秒啟動)
由於需要在最后一個線程啟動的時候第一個線程仍未關閉,則需要滿足 a·t > S,由此得出a的取值范圍。
然后在a的取值范圍中選擇邊界值,然后計算出單個線程運行時間R,然后根據公式(S + R = (1-1/n)·T + a·t)得出S+R的值,也就是整個測試理論運行時間。