1. 程式人生 > >LoadRunner常用知識點-----集合點

LoadRunner常用知識點-----集合點

集合點函式可以幫助我們生成有效可控的併發操作。雖然在Controller中多使用者負載的Vuser是一起開始執行指令碼的,但是由於計算機的序列處理機制,指令碼的執行隨著時間的推移,並不能完全達到同步。這個時候需要手工的方式讓使用者在同一時間點上進行操作來測試系統併發處理的能力,而集合點函式就能實現這個功能。集合點只需要在指令碼中插入lr_rendezvous()函式即可。開啟Insert選單下的Rendezvous選項,如圖3.167所示。

在彈出的對話方塊中輸入集合點名稱run,確定後即可得到對應的指令碼:

  1. lr_rendezvous("run"); 

引號內的就是集合點名稱,當指令碼在多使用者執行的情況下,每次執行到這個函式都會檢視一下集合點的策略來決定是等待還是繼續執行。集合點的設定內容存放在場景的設定中,當指令碼中有集合點函式時,場景中的集合點設定功能就可以訪問,如圖3.168所示。

 
圖3.167  新增集合點函式
 
圖3.168  場景中的集合點設定

開啟場景選單下的集合點後,可以為集合點進行設定,包括哪些使用者使用該集合點、集合點是否有效等,如圖3.169所示。

如果指令碼中沒有集合點,那麼場景中的Scenario/Rendezvous集合點功能將會是灰色顯示。

集合點策略用來設定虛擬使用者集合的方式,開啟Policy對話方塊,如圖3.170所示。

集合點提供了以下3種策略:

1.當百分之多少的使用者到達集合點時指令碼繼續。

2.當百分之多少的執行使用者到達集合點時指令碼繼續。

 
(點選檢視大圖)圖3.169  場景中的集合點設定視窗
 
(點選檢視大圖)圖3.170  場景中的集合點策略

3.多少個使用者到達集合點時指令碼繼續。

這3個策略的區別在於:假設指令碼由100個使用者來執行,但100個使用者並不是一開始就共同執行的。假設每隔1分鐘新增10個使用者,也就是說10分鐘後系統才有100個線上使用者。這裡100就是指系統訪問的所有使用者數,而不同時間的線上使用者數是不同的。設定的集合點策略百分比均為100%。

在場景執行時,當Vuser指令碼執行到集合點函式時,該虛擬使用者會進入集合點狀態直到集合點策略滿足後才釋放。

策略1是指當全部使用者都執行到了集合點函式才釋放集合,讓這100個使用者併發執行後面的指令碼。

策略2是指當前時間如果只有10個使用者線上,那麼只需要這10個使用者都執行到了集合點函式就釋放集合,讓這10個使用者併發執行後面的指令碼。

策略3就比較好理解了,當到達集合點的使用者數達到自己設定的數量後就釋放等待,併發執行後面的指令碼。

可以在多個指令碼上設定相同的集合點名稱來實現多個指令碼同時併發的效果。

集合點超時

在指令碼執行時,每個虛擬使用者到達集合點時都會去檢查一下集合點的策略設定,如果不滿足,那麼就在集合狀態等待,直到集合點策略滿足後,才執行下一步操作。但是可能存在前一個虛擬使用者和後一個虛擬使用者達到集合點的時間間隔非常長的情況,所以需要指定一個超時的時間,如果超過這個時間就不等待遲到的虛擬使用者了。

超時時間是指虛擬使用者之間的時間差,當出現兩個虛擬使用者到達集合點的時間差超過設定的超時時間時,所有在集合點處於等待狀態中的使用者將全部釋放。

集合點和事務

集合點應該放在事務外,如果事務記憶體在集合點,那麼虛擬使用者在集合點等待的過程也會被算入事務時間,導致早進入集合點的使用者的響應時間有誤。

常見的田徑比賽就是這樣,大家先集合在同一起跑線上,鳴槍後開始計時,達到終點再計時,這樣就能得到準確的事務時間。