Q1:
例如在LR里,我要測100個用戶同時並發登陸所用時間,那我是不是在錄制好腳本后,需要參數化“用戶名”,“密碼”以及在那個記事本里構造100個真實的用戶名和密碼? 然后運行Controller,設置用戶數為100?
A: 恩,你說的是對的。但是我需要說明的是測並發數的時候,本身就是模擬的虛擬用戶,所以我認為不一定非要參數化100個用戶,用一個用戶跑100遍也是可以的。當然你這樣進行設置的話更符合實際情況。
Q2:那么這里的迭代次數該怎么設啊,設成1和設成10有什么區別啊?我老是搞不清測試並發用戶,“迭代”和“並發用戶數”(就是controller里設的虛擬用戶數)的區別。
A: 迭代次數如果你設置為1,那么你的腳本就只跑100遍(續Q1),如果你設置為100,那么當你設置並發數為100,那么腳本就要跑100*100=10000 遍。懂了吧,當然我說的這種情況是在你沒有設置Conrtoller中的durantion,如果你設置了這個場景的持續時間,那么你運行的場景時間就以這個時間結束為准,和迭代次數就沒有關系了。
Q3:還有一個小白問題,就是假如我用LR測100個用戶同時注冊一個網站的帳號,參數化了100個用戶名和密碼,那么我跑一遍腳本,並跑通了,並在controller里也run了一遍,那么這100個新增帳號是不是就真在數據庫里添加了啊?
A:是的,如果你的腳本沒問題的話,那么你的數據庫里肯定會有100條記錄的。你可以自己查看數據庫,或者訪問你所錄制的腳本網站,都能看到相應的記錄。
Q4:對於並發數更多的情況下呢,例如並發書是1000,那是不是應該在多個機器上運行才可以阿?
A:不一定啊,如果你有條件的話,當然多台機器運行得出的結果更為准確,但是用LR如果是錄制web應用程序的話,最大並發數可以到10000的。、
關於LoadRunner中並發用戶和迭代次數的問題
=========================
集合點
事務開始:上傳文件
ftp連接
ftp上傳文件
ftp斷開連接
事務結束;上傳文件
事務開始:將記錄添加到數據庫
添加到數據庫的代碼
事務結束:將記錄添加到數據庫
==================================
我是這樣設置的,在action中參數化了10個用戶,迭代次數也是2
問題1:假如我要測試10個並發用戶,場景中是否設置5個用戶就可以實現10個並發呢?
問題2:在場景中設置20個並發用戶的話,我的參數只有10個,運行時會怎樣執行呢?
問題3:假如我要模擬不允許同一個用戶上傳同一個文件2次,是否我的並發人數是多少,就要設置多少參數呢?
那參數化時,是否就是用戶是一個文件,
文件的信息:文件名,文件描述,文件類型是一個文件。
然后將用戶設置為取值唯一,
如果這樣的話,一個用戶是否只能上傳一個文件了?
麻煩大家了,我是剛開始學的。。。
問題2:參數的取值方式,在參數屬性中進行設置;
問題3:如果只是不允許同一個用戶上傳同一個文件2次,而不同的用戶可以上傳相同的文件,則只需將用戶進行參數化,並設置取值方式為唯一。
如果不同的用戶也不允許上傳相同的文件,則需要將上傳的文件也參數化,並設置取值方式為唯一。
lr參數化——多個用戶取同一條數據(500戶並發迭代1次 循環取5條數據)問題
lr參數化——500戶並發迭代1次 循環取5條數據
lr參數化——500戶並發迭代1次 循環取5條數據
比如vuser1、vuser2、vuser3..........,vuser500
shuju1,shuju2,shuju3,shuju4,shuju5
想實現vuser1取shuju1,vuser2取shuju1,vuser3取shuju1,vuser4取shuju1,vuser5取shuju1..........vuser100取shuju1。
vuser101取shuju2,vuser102取shuju2,vuser103取shuju2,vuser104取shuju2,vuser105取shuju2..........vuser200取shuju2
。。。。。。。
vuser401取shuju5,vuser402取shuju5,vuser403取shuju5,vuser404取shuju5,vuser405取shuju5..........vuser500取shuju5
或者
vuser1取shuju1,vuser2取shuju2,vuser3取shuju3,vuser4取shuju4,vuser5取shuju5,
vuser6取shuju1,vuser7取shuju2,vuser8取shuju3,vuser9取shuju4,vuser10取shuju5。。。。。。。
方法1、造數據,把5條數據中每條都復制成100條,總共500條,唯一就可以了
---------------------
loadrunner中並發數與迭代的區別
LoadRunner-迭代和並發設置
迭代:指運行一次腳本時某段代碼塊(action)循環執行的次數,串行執行
並發:指同時運行腳本的次數,並行執行(多個用戶同時跑)
以下是用例和對應的相關設置

Iterations是在Vuser Generator的Run-time Setting中進行設置
Quantity是在Controller Scenario中進行設置
其余是在Parameter List 中進行設置
1.select next row:參數值取值的順序
Sequential(順序),Random(隨機),Unique(唯一 )三個選項;如果要求使用不同的賬號登錄則設置為Unique;
如果構造的賬號數不夠又對用戶是否相同不做要求,則可以設置Sequential,參數調到最后一列后再從第一列開始調用。
2.update value on : (什么事件)觸發參數取值更換
each iteration:進入一個迭代更換一次參數值;(sequential時)每個迭代不同用戶使用相同參數值(不管並發是多少);(unique時)每個迭代不同用戶使用不同值
each occurence :腳本中每次變量出現就換一個新值,謹慎用,用於賬號肯定不行。(比如user1登錄user2權限操作)
once:只取一個值(不管並發和迭代是多少)

controller中多用戶並發時候,每個用戶使用完參數化中的數據不在重復使用且每個用戶不使用相同參數化數據的方法
工作中經常遇到標題中這樣的情況,看到群里也經常有人問,操作很簡單,如下:
select next row:Unique(唯一)
說明:每個Vuser取的參數都不一致,確保數據唯一性。
Upate value on:Eachinteration(每次迭代)
說明:每次遇到參數都取一個新值,如果在腳本的一次迭代中,該參數出現兩次,那么兩次都取不同的值。
如圖設置,每次每個用戶取不同的值,保證每個用戶使用的流水號數據唯一

loadrunner中並發數與迭代的區別
錄制腳本時只會有1個虛擬用戶,1個虛擬用戶可以有多次 迭代,也就是 重復執行 Action里面的內容,在場景設置的時候,如果你說的10時在runtime-setting的Run Logic里面設置的,那就是1個虛擬用戶 迭代 10次,並且要求你設置的場景Duration的類型為Run until Completion 時,這個設置才會起作用,如果Duration的類型是Run for <時間>, 這個意思就是1個用戶在這段時間內不停執行Action里面的操作。
追問:
不是那個意思,我知道迭代,好像在參數化的時候,在table里面要設置幾個虛擬用戶的用戶名和密碼,在場景設計的時候有10個,不知道這兩個之間的區別,那在錄制腳本的時候比如要多用戶的登錄,在哪里設置用戶數?
回答
用戶登錄的流程是不是把 用戶名和密碼提交到服務器,每個用戶的用戶名不一樣吧?所以你錄制1個用戶的登錄,然后把這個用戶的操作復制多個,然后把復制的用戶名和密碼都改成唯一的,是不是就有多個用戶了。loadrunner里面的1個虛擬用戶就是1個線程(或者進程),然后把每個線程里面的用戶名改成不同的,啟多個線程,就是多個用戶了。你在寫腳本的時候就是創建1個源文件(被復制的對象),controller的作用就是復制多個線程,復制的線程的用戶名就是從你table里面取出來的。錄制腳本就是創建第一個源文件的過程,controller是多個用戶並發的時候。你可以先看一下loadrunner的用戶手冊
那么首先要說,在場景下面無論是一個用戶還是多個用戶,都是去讀腳本, 如果沒有設集合點,這些用戶完全是各自跑各自的,隨機地跑完同一腳本。第一個問題如果設置時間很短,虛擬用戶也會跑完腳本再停止,也不會報錯。
在腳本里面設置參數的時候可以設置變量在迭代方式上怎么取值,也可以設置不同用戶都是怎么去取值(用戶和用戶之間沒什么關系)假設是M個用戶,腳本迭代N次,那么在跑場景的時候(假設場景設置用戶跑完場景就停止),每一個用戶都會去跑一遍腳本(一個腳本迭代N次action);如果場景設置5分鍾,則M個用戶自己跑自己的,跑夠五分鍾,然后最后一次腳本跑完,就停止了。
追問
並發用戶數,我可不可以在采集的時候理解為最大的允許vuser值
回答
某個腳本設置的vuser值, 可以理解為這個業務場景的並發用戶數,但如果要測試具體某個業務的並發操作, 那就需要設置集合點, 而且集合點數目不能大於vuser值.
問題1:LoadRunner是怎么重復迭代和怎么增加並發運行的呢?
問題2:另外,在參數化時,對於一次壓力測試中均只能用一次的資源應該怎么參數化呢?就是說這些資源用了一次就不能在用了的。
--參數化時,在
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有異曲同工之妙。
