以下內(nèi)容對(duì)loadrunner進(jìn)行一個(gè)初識(shí),讓之后運(yùn)用更加熟練,咱們這里用的是loadrunner自帶的WebTours平臺(tái),他是不含數(shù)據(jù)庫(kù)的。
- loadrunner的錄制方式有兩種,如下圖所示,1:基于HTML方式(只針對(duì)鼠標(biāo)和鍵盤事件,錄制的文本比較純凈,不需要做過(guò)多篩選。)2:基于URL方式(會(huì)錄制全部?jī)?nèi)容,包括頁(yè)面有廣告內(nèi)容之類的)。兩種方式需要根據(jù)實(shí)際工作需求進(jìn)行選擇:
- 選擇支持的字符集方式為UTF-8:
當(dāng)?shù)谝淮文_本跑出來(lái)后進(jìn)行腳本的升級(jí)維護(hù)的一些操作如下,包括參數(shù)化設(shè)置:
參數(shù)化的方式
其實(shí)參數(shù)化的方式有很多種,這里簡(jiǎn)述自己常用的方式。其實(shí)方式略有不同,但其結(jié)果都是將數(shù)據(jù)添加進(jìn)來(lái)。
1、編輯數(shù)據(jù)
菜單【Vuser】—【Parameter List…】,點(diǎn)擊new就會(huì)創(chuàng)建出一個(gè)參數(shù)NewParam。創(chuàng)建后,點(diǎn)擊Create Table 會(huì)出現(xiàn)表格,在表格,再次點(diǎn)擊【Edit with Notepad】 ,然后會(huì)打開(kāi)一個(gè)記事本,我們可以對(duì)記事本進(jìn)行添加數(shù)據(jù)。
2、添加dat數(shù)據(jù)文件
點(diǎn)擊File path輸入框后面的“Browse…”按鈕,找到本地的txt數(shù)據(jù)文件(記住這個(gè)txt文件保存后要修改成dat文件,否則無(wú)法找到),進(jìn)行添加就可以了。
添加后的數(shù)據(jù)展示
需要注意的是,文件里面的數(shù)據(jù)不要亂寫,每條數(shù)據(jù)一行,不然會(huì)讀取有誤。這個(gè)文件如果需要構(gòu)造大量的數(shù)據(jù),可以用表格或者Python自動(dòng)化寫入文件的方式進(jìn)行操作。在記事本中編輯參數(shù)數(shù)據(jù)時(shí),數(shù)據(jù)文件一定要以一個(gè)空行結(jié)束,否則,最后一行輸入的數(shù)據(jù)不會(huì)被參數(shù)所使用(也有可能會(huì)報(bào)錯(cuò))。表格上最多展示一百條數(shù)據(jù),超過(guò)一百條就看不到了(數(shù)據(jù)還在,只是看不到)。
參數(shù)化的方法
選中要參數(shù)化的內(nèi)容。
注:Parameter name默認(rèn)會(huì)顯示NewParam,如果已經(jīng)有參數(shù)化,則需要在下拉按鈕進(jìn)行選擇已參數(shù)化的Parameter name
方法一,右鍵參數(shù)—【Replace with a new parameter】
方法二,菜單【insert】----【new Parameter…】
兩個(gè)方法的框都是一樣的
想進(jìn)行詳細(xì)設(shè)置的就點(diǎn)擊上圖彈出框右下角的Properties…(Parameter Properties),就會(huì)彈出以下這個(gè)框框
Parameter Properties (參數(shù)屬性對(duì)話框)----我們的參數(shù)化設(shè)置就通過(guò)這個(gè)對(duì)話框完成
數(shù)據(jù)配置與更新方式(迭代配置與規(guī)則)
腳本設(shè)置完參數(shù)化,腳本運(yùn)行的每一遍所取的參數(shù)化的值都不一樣,那么這個(gè)值按照個(gè)什么情況來(lái)取呢?會(huì)有很多種方式
Select next row【選擇下一行】:
①順序(Sequential):按照參數(shù)化的數(shù)據(jù)順序,一個(gè)一個(gè)的來(lái)取。
②隨機(jī)(Random):參數(shù)化中的數(shù)據(jù),每次隨機(jī)的從中抽取數(shù)據(jù)。
③唯一(Unique):為每個(gè)虛擬用戶分配一條唯一的數(shù)據(jù)。
①每次迭代(Each iteration) :每次迭代時(shí)取新的值,假如50個(gè)用戶都取第一條數(shù)據(jù),稱為一次迭代;完了50個(gè)用戶都取第二條數(shù)據(jù),后面以此類推。
②每次出現(xiàn)(Each occurrence):每次參數(shù)時(shí)取新的值,這里強(qiáng)調(diào)前后兩次取值不能相同。
③只取一次(once) :參數(shù)化中的數(shù)據(jù),一條數(shù)據(jù)只能被抽取一次。(如果數(shù)據(jù)輪次完,腳本還在運(yùn)行將會(huì)報(bào)錯(cuò))。
注:先不考慮【W(wǎng)hen out of values】和【Allocate Vuser values in the Controller】,那就是有9種取值方式;
舉例說(shuō)明下僅在VuGen下的取值方式:回放腳本時(shí)可以設(shè)置迭代次數(shù),在VuGen中迭代(迭代次數(shù)設(shè)置:菜單【Vuser】—【Run-time Settings】—【General】中的Run Logic,Number of lterations設(shè)置迭代次數(shù)),可以理解為只有一個(gè)用戶重復(fù)操作了N次(N表示你設(shè)置的迭代次數(shù))。假設(shè)設(shè)置迭代次數(shù)為3次,參數(shù)如下:
此時(shí),取值方式的規(guī)則如下:
- Sequential & Each iteration
按照參數(shù)列表順序取值,只有每發(fā)生一次迭代才去順序獲取新值。取值結(jié)果為:test01、test02、test03 - Sequential & Each occurrence
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果就是:
第一次迭代:test01、test02;
第二次迭代:test03、test04;
第三次迭代:test05、test06; - Sequential & Once
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果就是第一次取得值,之后不會(huì)在改變!
第一次迭代:test01、test01;
第二次迭代:test01、test01;
第三次迭代:test01、test01; - Random & Each iteration
設(shè)置迭代三次(未作特殊說(shuō)明都視為設(shè)置3次迭代)
按照參數(shù)列表順序取值,只有每發(fā)生一次迭代才去順序獲取新值。取值結(jié)果隨機(jī),三次迭代的取值結(jié)果有可能【test01、test02、test03】、有可能【test01、test02、test01】、有可能【test01、test01、test01】 - Random & Each occurrence
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果隨機(jī):
有可能第一次迭代:test01、test04;
有可能第二次迭代:test02、test01;
有可能第三次迭代:test02、test02; - Random & Once
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果取決于第一次隨機(jī)取得值
假如第一次迭代、第一處參數(shù)化隨機(jī)取值為 test02,那么之后的取值都是一樣的
第一次迭代:test02、test02;
第二次迭代:test02、test02;
第三次迭代:test02、test02; - Unique & Each iteration
設(shè)置迭代三次(未作特殊說(shuō)明都視為設(shè)置3次迭代)
按照參數(shù)列表順序取值,只有每發(fā)生一次迭代才去順序獲取新值。三次迭代的取值結(jié)果:test01、test02、test03; - Unique & Each occurrence
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果:
有可能第一次迭代:test01、test02;
有可能第二次迭代:test03、test04;
有可能第三次迭代:test05、test06; - Unique & Once
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,依然設(shè)置迭代3次,那么取值結(jié)果為:
第一次迭代:test01、test01;
第二次迭代:test01、test01;
第三次迭代:test01、test01。
參考地址:https://blog.csdn.net/gaofengyan/article/details/90903814
補(bǔ)充:在loadrunner controller影響下的取值規(guī)則
前提:
- 假設(shè)腳本中有兩處做了{(lán)username}參數(shù)化;
- 真正使用controller壓測(cè)時(shí),正常都不會(huì)在VuGen中設(shè)置迭代次數(shù)了;
參數(shù)如下:
場(chǎng)景1設(shè)置:瞬時(shí)啟動(dòng)所有2個(gè)vuser、壓測(cè)時(shí)間2分鐘、一起結(jié)束所有vuser;
當(dāng)VuGen腳本中設(shè)置Sequential或Random時(shí),那么在controller中無(wú)論創(chuàng)建了多少個(gè)vuser,你都可以理解為每個(gè)vuser都會(huì)拿到一份參數(shù)列表,每個(gè)vuser之間互不干擾互不影響。每個(gè)vuser都在壓測(cè)時(shí)間內(nèi)各自迭代,直到壓測(cè)結(jié)束
舉個(gè)栗子:即每個(gè)人都會(huì)拿到同一份數(shù)據(jù),A跑test01,test02,B也跑test01,test02
此時(shí),取值方式的規(guī)則如下: - Sequential & Each iteration
按照參數(shù)列表順序取值,只有每發(fā)生一次迭代才去順序獲取新值。
vuser1 取值結(jié)果為:【test01、test01】、【test02、test02】、【test03、test03】、【test04、test04】、【test05、test05】、【test06、test06】、【test01、test01】、【test02、test02】…循環(huán)下去;
vuser2 取值結(jié)果為:【test01、test01】、【test02、test02】、【test03、test03】、【test04、test04】、【test05、test05】、【test06、test06】、【test01、test01】、【test02、test02】…循環(huán)下去; - Sequential & Each occurrence
假設(shè)你的腳本中,有多處設(shè)置了{(lán)username}參數(shù)化,那么此時(shí)在同一次迭代中,每遇見(jiàn)一處參數(shù)化{username}就會(huì)獲取新值,且是按照參數(shù)列表順序獲取的;
假如你的腳本中,設(shè)置了2處{username}參數(shù)化:
vuser1 取值結(jié)果為:【test01、test02】、【test03、test04】、【test05、test06】、【test01、test02】…循環(huán)下去;
vuser2 取值結(jié)果為:【test01、test02】、【test03、test04】、【test05、test06】、【test01、test02】…循環(huán)下去; - Sequential & Once
假如你的腳本中,設(shè)置了2處{username}參數(shù)化,那么取值結(jié)果就是第一次取得值,之后不會(huì)在改變!
vuser1 取值結(jié)果為:【test01、test01】、【test01、test01】、【test01、test01】、【test01、test01】…循環(huán)下去;
vuser2 取值結(jié)果為:【test01、test01】、【test01、test01】、【test01、test01】、【test01、test01】…循環(huán)下去;
Random和Sequentail一樣的邏輯,只不過(guò)是取值是隨機(jī)的!
重點(diǎn)是Unique?。。?/strong>
- 多個(gè)用戶不再每人一份參數(shù)列表了,而是共用一份參數(shù)列表,且每個(gè)用戶間的參數(shù)范圍不能相同;
舉個(gè)栗子:即每個(gè)人只能共享同一份數(shù)據(jù),A跑完test01,test02,B就不能跑test01,test02,只能選test03和test04去跑 - 通過(guò)Allocate Vuser value in the Controller選項(xiàng),確定參數(shù)如何分配給每個(gè)用戶的,有兩個(gè)選項(xiàng):
(1)Automatically allocate block size,此選項(xiàng)僅在Unique & iteration組合下可以選擇,意思是自動(dòng)給Vuser分配參數(shù)給每個(gè)Vuser,比如此例中6個(gè)參數(shù),啟動(dòng)2個(gè)用戶,如果選擇Unique & iteration & Automatically allocate block size的組合,則每個(gè)用戶分得3個(gè)參數(shù),【test01、test02、test03】、【test04、test05、test06】;
(2)Allocate ____values for each Vuser,這個(gè)就是自定義分配了。 - 如果此例中6個(gè)參數(shù),但我設(shè)置7個(gè)Vuser,那么controller也將只啟動(dòng)6個(gè)vuser,會(huì)報(bào)錯(cuò)一個(gè)vuser,因?yàn)樗鼪](méi)有分到參數(shù),而且成功啟動(dòng)的那6個(gè)vuser將平分6個(gè)參數(shù);
Unique的的作用是將參數(shù)分給多個(gè)壓測(cè)用戶,使得每個(gè)用戶間拿到唯一的參數(shù)范圍。
至于每個(gè)用戶在拿到屬于自己的參數(shù)范圍后怎么用,那就是以下的幾種組合了:
前提:依然假設(shè)6個(gè)參數(shù),啟動(dòng)2個(gè)用戶,壓測(cè)2分鐘;
Unique & iteration & Automatically allocate block size,則:
vuser1 獲得的參數(shù)范圍是:【test01、test02、test03】;
vuser2 獲得的參數(shù)范圍是:【test04、test05、test06】;
此時(shí)when out of values會(huì)點(diǎn)亮,它又有三個(gè)選項(xiàng),那它是什么意思呢?
它的意思是:舉個(gè)例子,假如你這個(gè)腳本15s就能跑完一次,那么壓測(cè)2min,不間斷的跑,你能跑8次,但是每個(gè)vuser就分到了3個(gè)參數(shù),(拿vuser1舉例)當(dāng)vuer1第三次迭代時(shí)取的是test03(vuser2跑到第三次時(shí)取的test06),當(dāng)?shù)竭M(jìn)行第4次迭代時(shí),參數(shù)不夠了那怎么辦呢?此時(shí)這個(gè)選項(xiàng)就是干這個(gè)的,為你定制規(guī)則,它有三個(gè)選項(xiàng),即:
- abort user 終止,說(shuō)白了就是參數(shù)不夠就報(bào)錯(cuò)了
- continue in a cyclic manner 在各自的參數(shù)范圍內(nèi)循環(huán)取值,(即vuser1在test01、test02、test03循環(huán)取值,vuer2在test04、test05、test06循環(huán)取值)有人會(huì)問(wèn)unique不是唯一嗎?這么取值不久重復(fù)了么,不好意思你理解錯(cuò)了,unique的意思是每個(gè)用戶間取值唯一,沒(méi)說(shuō)同一個(gè)用戶的不同迭代取值唯一。
- continue with last value 就是字面意思,參數(shù)不夠時(shí),一直用各自參數(shù)范圍內(nèi)的最后一個(gè)參數(shù);
當(dāng)Unique & Each occurrence時(shí),只能選擇Allocate ____values for each Vuser了,其余的邏輯都一樣。
當(dāng)Unique & Once時(shí),說(shuō)白了,在參數(shù)滿足的情況下,每個(gè)用戶只取一個(gè),每個(gè)用戶在壓測(cè)時(shí)間內(nèi)都只會(huì)用一個(gè)參數(shù)進(jìn)行迭代,直至結(jié)束。如此例6個(gè)參數(shù),壓測(cè)2分鐘,假如我啟動(dòng)了6個(gè)vuser,則每個(gè)vuser得到一個(gè)參數(shù),vuser1取得test01,持續(xù)迭代2分鐘,并且只用這個(gè)test01。假如我設(shè)置7個(gè)vuser,啟動(dòng)后你會(huì)發(fā)現(xiàn)實(shí)際只啟動(dòng)了6個(gè)vuser,報(bào)錯(cuò)了一個(gè),因?yàn)閰?shù)不夠分了。所以你的參數(shù)的數(shù)量最好不小于并發(fā)vuser數(shù)量。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-414220.html
參考地址:https://www.cnblogs.com/lianggaobo/p/15724566.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-414220.html
到了這里,關(guān)于學(xué)習(xí)筆記-LoadRunner參數(shù)化設(shè)置及迭代配置說(shuō)明的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!