--參數化時,在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/