天天看點

LoadRunner中Action的疊代次數的設定和運作場景中設定

  --參數化時,在select  next row選擇unique,update value on選擇 each occurence,

  1. 疊代跟虛拟使用者數沒什麼必然聯系

  疊代是這樣的:

  疊代1次   疊代2次  疊代3次

  使用者1     x1           x2             x3

  使用者2     y1           x2             y3

  其中的x1-3 y1-3是參數,參數規則就是二樓說的

  這麼兩個使用者是根據你的rump up 上來的,比如5秒上兩個使用者,那麼使用者1和2就在5秒之内加載進來的,不知道說清楚了沒。

  第二個問題就簡單了,隻能用一次的參數,首先確定你的參數足夠,另外規則選擇的時候,注意選擇唯一

  疊代次數隻是對你設定了疊代次數的action進行疊代,而使用者數可以了解為對整個錄制過程的疊代(隻是各個使用者不同) 而且增加并發量可以通過增加使用者來達到 還可以設定集合點來增加某個操作的并發量

  假如一個腳本,設定最大并發量為10,每5秒中增加2個并發使用者,而action設定的疊代為10次:

  當開始至2秒時,加載了2個使用者,這2個使用者分别開始運作,并都運作10次,不管這個2個使用者運作10次是否結束,當下一個2兩秒到來時,即開始至第4秒時又加載了2個使用者,這2個又運作10次;就這樣一直加載到10個并發使用者,然後當每個使用者都運作完10次時就結束。

  這樣中間最大并發是10個,但不一定能達到10個,因為在加載最後幾個時,前面的有可能已經運作結束,是以如果要真正達到最大并發10就必須設定集合點來完成

  不過也不一定非要設定集合點才能實作同時處在running的狀态有10個使用者。

  設定duration也是可以的。不過那就不隻每個使用者運作10次了。

  如果想實作使用者疊代10次,并且想同時running為10個使用者,就應該設定集合點。

  疊代(iterate)設計,或者我們稱之為增量(incremental)設計的思想和xp提倡的evolutionary design有異曲同工之妙。

  注意:1、 參數類型:在建立參數的時候,我選擇了參數類型為file。參數類型共有9 種,現在來簡單介紹一下所有的參數類型以及意義。

  1.1、   datetime:在需要輸入日期/時間的地方,可以用 datetime 類型來替代。其屬性設定也很簡單,選擇一種格式即可。當然也可以定制格式。

  1.2、   group name:很少用到。在實際運作中,loadrunner 使用該虛拟使用者所在的vuser group 來代替。但是在 vugen 中運作時,group name将會是none。

  1.3、   load generator name :在實際運作中, loadrunner   使用該虛拟使用者所 在loadgenerator   的機器名來代替。

  1.4、   iteration number :在實際運作中,loadrunner 使用該測試腳本目前循環的次數來代替。

  1.5、   random number:随機數。很簡單。在屬性設定中可以設定産生随機數的範圍。

  1.6、   unique number:唯一的數。在屬性設定中可以設定第一個數以及遞增的數的大小。

  注意:使用該參數類型必須注意可以接受的最大數。例如:某個文本框能接受的最大數為99。當使用該參數類型時,設定第一個數為 1,遞增的數為1,但100個虛拟使用者同時運作時,第100 個虛拟使用者輸入的将是 100,這樣腳本運作将會出錯。這裡說的遞增意思是各個使用者取第一個值的遞增數,每個使用者相鄰的兩次循環之間的內插補點為 1。舉例說明:假如起始數為 1,遞增為 5,那麼第一個使用者第一次循環取值 1,第二次循環取值 2;第二個使用者第一次循環取值為 6,第二次為 7;依次類推。

 1.7、   vuser id:設定比較簡單。在實際運作中,loadrunner 使用該虛拟使用者的 id   來代替,該 id   是由 controller 來控制的。但是在 vugen 中運作時,vuser id   将會是 –1。

  1.8、   file:需要在屬性設定中編輯檔案,添加内容,也可以從現成的資料庫中取資料

  1.9、   user defined function:從使用者開發的 dll 檔案提取資料。

  用http協定錄制了一個包含登入、浏覽、退出過程的腳本,錄制時都放到action部分,這時腳本設定了疊代後可以多次重複運作,但是出于處理邏輯,一旦将登入腳本放到init部分後,就無法正常進行疊代運作了。今天專門找個時間做了嘗試,發現可能出現這兩種錯誤。

  1、這是我犯的一個低級錯誤。在我将登入腳本移到init部分時,将登入腳本之後的浏覽操作前面的web_reg_find腳本也一起移了過去,結果運作完init部分腳本就出錯了。錯誤提示:

  error -27259: pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of the init section

  這種錯誤的現象是沒有進行疊代已經出錯了,錯誤提示也很明确。這時隻要把web_reg_find放回action部分的正确的位置即可。

  2、單次運作正确,但是多次疊代運作時出錯,錯誤提示:

  error -27985: there is no context for html-based functions. a previous function may not have used "mode=html" or downloaded only non-html page(s), or the context has been reset (e.g., due to a gui-based function)

  這種錯誤可能比較常見,原因是在runtime settings的browse emulation中設定了simulate a new user on each iteration引起的。由于這個設定導緻每次疊代時都會模拟一個新的使用者,此時這個新的使用者并沒有執行init操作而失敗了,也即是錯誤提示中的there is no context。

  這裡涉及到一個知識點就是在rumtime settings的疊代設定中,疊代運作次數隻對action部分有效,而init部分和end部分還是隻運作一次的。這時如果設定了“simulate a new user on each iteration”,将出現上面的第2種錯誤。

最新内容請見作者的github頁:http://qaseven.github.io/