(九)併發測試

一、lr_rendezvous【集合點】

int lr_rendezvous( const char *rendezvous_name); 
  • The lr_rendezvous function creates a rendezvous point in a Vuser script. When this statement is executed, the Vuser program stops and waits for permission from LoadRunner to continue.
    (當VU執行到該句後並不向下繼續執行,直到所有的VG都執行到該句時(聚集到該地),才一起(併發)執行)
  • This function can only be used in action section, and not in vuser_init or vuser_end.
  • The difference between lr_rendezvous and lr_rendezvous_ex is that lr_rendezvous always returns zero.
  • 錄完腳本插入集合點:在要插入集合點的位置焦點,然後Insert—>Rendezvous。

二、併發測試兩個條件

  • 腳本中加入集合點
    ① 注意:腳本中添加代碼(修改代碼)後,要運行(或編譯)下,看是否有錯。
    ②集合點設置位置:將集合點設置在事務前面。若將集合點設置在事務內,loadrunner在計算事務的響應時間時,會將事務運行時在集合點的等待時間也計算在內,導致事務響應時間比實際時間長。所以,集合點正確的設置位置應該是事務開始的前面。
  • 控制檯中設置集合點策略(只要多用戶纔有併發)
  • think-time:忽略
    併發測試是測試瞬間的壓力,所以忽略思考時間即可。

  • Pacing:默認即可。因爲在Action只有1次迭代情況下,不用考慮迭代之間的時間

    三、Controller—>Rendezous—>Policy

  • Release when X% of all Vusers arrive at the Rendezous:當X%的虛擬用戶到達(這是好確定的,到達就是達到,未到就是未到),開始併發執行

  • Release when X% of all running Vusers arrive at the Rendezous:當X%的運行虛擬用戶到達,開始併發執行
      還有不在運行的虛擬用戶? 假如,設置爲30s啓動一個用戶,當然會存在因爲用戶還沒啓動,所以無法參與集合點。
      比如100個虛擬用戶,20個在運行中(運行中數目難確定),則50%的運行虛擬用戶到達集合點,所以爲10個
  • Release when X Vusers arrive at the Rendezous:當X 個虛擬用戶到達,開始併發執行
  • Timeout between Vusers: X sec.
    當一個虛擬用戶到達集合點時,LR等待超時時間迎接下一個虛擬用戶到達集合點。如果下一個虛擬用戶沒在超時時間到達,Controller就會讓當前已經到達的虛擬用戶併發執行,不考慮是否滿足併發條件;若下一個虛擬用戶在超時時間到達,則會將超時時間清零,再用超時時間等待下一個虛擬用戶。
    舉例:
      假如設置了集合10用戶併發,結果9個用戶已經集合到位,還剩1個虛擬用戶,左等右等就是等不來。那總不能一直等下去吧。設定了個時間,假如30秒還不來,那就不管它了。
      
    一般選擇Release when X% of all Vusers arrive at the Rendezous,因爲比較可控,第二個用戶到達不一定運行,由操作系統的線程和進程控制,不可控。

    四、設置Controller—>Run-time Settings –>Think Time 中選擇Ignore think time
    因爲併發測試是考察系統的瞬間壓力承受能力,是比較嚴格的測試,所以不需要等待時間。
    注意不同的測試用的think time 是不同的,不能一致考慮。

五、一個腳本一般只加入一個集合點
比如一個腳本錄製的是一個流程(包含多個操作),若在每個事務前都添加一個集合點,該做法在語法角度沒有錯誤,但是如果腳本運行結果有問題(多用戶併發,難免會有問題)、併發點性能調優等比較麻煩。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章