LoadRunner中Action的迭代次數(shù)的設(shè)置和運行場景中設(shè)置
LoadRunner是怎么重復(fù)迭代和怎么增加并發(fā)運行的呢?
另外,在參數(shù)化時,對于一次壓力測試中均只能用一次的資源應(yīng)該怎么參數(shù)化呢?就是說這些資源用了一次就不能在用了的。
--參數(shù)化時,在select next row選擇unique,update value on選擇 each occurence,
1. 迭代跟虛擬用戶數(shù)沒什么必然聯(lián)系
迭代是這樣的:
迭代1次 迭代2次 迭代3次
用戶1 X1 X2 X3
用戶2 Y1 X2 Y3
其中的X1-3 Y1-3是參數(shù),參數(shù)規(guī)則就是二樓說的
這么兩個用戶是根據(jù)你的rump up 上來的,比如5秒上兩個用戶,那么用戶1和2就在5秒之內(nèi)加載進(jìn)來的,不知道說清楚了沒。
第二個問題就簡單了,只能用一次的參數(shù),首先確保你的參數(shù)足夠,另外規(guī)則選擇的時候,注意選擇唯一
迭代次數(shù)只是對你設(shè)置了迭代次數(shù)的action進(jìn)行迭代,而用戶數(shù)可以理解為對整個錄制過程的迭代(只是各個用戶不同) 而且增加并發(fā)量可以通過增加用戶來達(dá)到 還可以設(shè)置集合點來增加某個操作的并發(fā)量
假如一個腳本,設(shè)置最大并發(fā)量為10,每5秒中增加2個并發(fā)用戶,而Action設(shè)置的迭代為10次:
當(dāng)開始至2秒時,加載了2個用戶,這2個用戶分別開始運行,并都運行10次,不管這個2個用戶運行10次是否結(jié)束,當(dāng)下一個2兩秒到來時,即開始至第4秒時又加載了2個用戶,這2個又運行10次;就這樣一直加載到10個并發(fā)用戶,然后當(dāng)每個用戶都運行完10次時就結(jié)束。
這樣中間最大并發(fā)是10個,但不一定能達(dá)到10個,因為在加載最后幾個時,前面的有可能已經(jīng)運行結(jié)束,所以如果要真正達(dá)到最大并發(fā)10就必須設(shè)置集合點來完成
不過也不一定非要設(shè)置集合點才能實現(xiàn)同時處在running的狀態(tài)有10個用戶。
設(shè)置duration也是可以的。不過那就不只每個用戶運行10次了。
如果想實現(xiàn)用戶迭代10次,并且想同時running為10個用戶,就應(yīng)該設(shè)置集合點。
迭代(Iterate)設(shè)計,或者我們稱之為增量(Incremental)設(shè)計的思想和XP提倡的Evolutionary Design有異曲同工之妙。
注意:1、 參數(shù)類型:在創(chuàng)建參數(shù)的時候,我選擇了參數(shù)類型為File。參數(shù)類型共有9 種,現(xiàn)在來簡單介紹一下所有的參數(shù)類型以及意義。
1.1、 DateTime:在需要輸入日期/時間的地方,可以用 DateTime 類型來替代。其屬性設(shè)置也很簡單,選擇一種格式即可。當(dāng)然也可以定制格式。
1.2、 Group Name:很少用到。在實際運行中,LoadRunner 使用該虛擬用戶所在的Vuser Group 來代替。但是在 VuGen 中運行時,Group Name將會是None。
1.3、 Load Generator Name :在實際運行中, LoadRunner 使用該虛擬用戶所 在LoadGenerator 的機(jī)器名來代替。
1.4、 Iteration Number :在實際運行中,LoadRunner 使用該測試腳本當(dāng)前循環(huán)的次數(shù)來代替。
1.5、 Random Number:隨機(jī)數(shù)。很簡單。在屬性設(shè)置中可以設(shè)置產(chǎn)生隨機(jī)數(shù)的范圍。
1.6、 Unique Number:唯一的數(shù)。在屬性設(shè)置中可以設(shè)置第一個數(shù)以及遞增的數(shù)的大小。
注意:使用該參數(shù)類型必須注意可以接受的最大數(shù)。例如:某個文本框能接受的最大數(shù)為99。當(dāng)使用該參數(shù)類型時,設(shè)置第一個數(shù)為 1,遞增的數(shù)為1,但100個虛擬用戶同時運行時,第100 個虛擬用戶輸入的將是 100,這樣腳本運行將會出錯。這里說的遞增意思是各個用戶取第一個值的遞增數(shù),每個用戶相鄰的兩次循環(huán)之間的差值為 1。舉例說明:假如起始數(shù)為 1,遞增為 5,那么第一個用戶第一次循環(huán)取值 1,第二次循環(huán)取值 2;第二個用戶第一次循環(huán)取值為 6,第二次為 7;依次類推。
1.7、 Vuser ID:設(shè)置比較簡單。在實際運行中,LoadRunner 使用該虛擬用戶的 ID 來代替,該 ID 是由 Controller 來控制的。但是在 VuGen 中運行時,Vuser ID 將會是 –1。
1.8、 File:需要在屬性設(shè)置中編輯文件,添加內(nèi)容,也可以從現(xiàn)成的數(shù)據(jù)庫中取數(shù)據(jù)
1.9、 User Defined Function:從用戶開發(fā)的 dll 文件提取數(shù)據(jù)。
用HTTP協(xié)議錄制了一個包含登錄、瀏覽、退出過程的腳本,錄制時都放到Action部分,這時腳本設(shè)置了迭代后可以多次重復(fù)運行,但是出于處理邏輯,一旦將登錄腳本放到Init部分后,就無法正常進(jìn)行迭代運行了。今天專門找個時間做了嘗試,發(fā)現(xiàn)可能出現(xiàn)這兩種錯誤。
1、這是我犯的一個低級錯誤。在我將登錄腳本移到Init部分時,將登錄腳本之后的瀏覽操作前面的web_reg_find腳本也一起移了過去,結(jié)果運行完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
這種錯誤的現(xiàn)象是沒有進(jìn)行迭代已經(jīng)出錯了,錯誤提示也很明確。這時只要把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中設(shè)置了Simulate a new user on each iteration引起的。由于這個設(shè)置導(dǎo)致每次迭代時都會模擬一個新的用戶,此時這個新的用戶并沒有執(zhí)行init操作而失敗了,也即是錯誤提示中的There is no context。
這里涉及到一個知識點就是在Rumtime Settings的迭代設(shè)置中,迭代運行次數(shù)只對Action部分有效,而Init部分和End部分還是只運行一次的。這時如果設(shè)置了“Simulate a new user on each iteration”,將出現(xiàn)上面的第2種錯誤。
posted on 2014-06-16 10:18 順其自然EVO 閱讀(7855) 評論(0) 編輯 收藏 所屬分類: loadrunner