在LoadRunner的腳步編寫中,有三個重要的概念:事務、集合點、思考時間
事務:
事務又稱為Transaction,在LoadRunner中的定義如下:An end-to-end(browser-to-browser) measurement of one or more user actions within action file。中文理解如下:事務(Transaction)是這樣一個點,我們為了衡量某個action的性能,需要在action的開始和結束位置插入這樣一個范圍,這就定義了一個transaction。
事務的作用:LoadRunner運行到該事務的開始點時,LoadRunner就會開始計時,直到運行到該事務的結束點,計時結束。這個事務的運行時間在LoadRunner的運行結果中會有反映。通俗的講LoadRunner中的事務就是一個計時標識,LoadRunner在運行過程中一旦發現事務的開始標識,就開始計時,一旦發現事務的結束表示,則計時結束,這個過程中得到的時間即為一個事務時間。通常事務時間所反映的是一個操作過程的響應時間。
下面我們說說為什么在LoadRunner中使用事務。為什么使用事務的原因是多種多樣的,總結下來如下五點所示:
1、事務是LoadRunner度量系統性能指標的唯一手段;(沒有事務則沒有辦法衡量系統的響應時間,也許有人說LoadRunner可以通過編程來計時得到,不錯如果你編程能力夠強是能夠實現的,但肯定不如LoadRunner中的事務用的簡單而且方便)
2、事務能夠用於度量高風險業務流程的性能指標;
3、事務能夠度量在一組操作中每一步的性能指標;
4、通過事務計時實現了不同壓力負載下的性能指標對比;
5、通過事務計時可以幫助定位性能瓶頸;
從性能測試的 角度出發,我們需要知道不同的操作所花費的時間,這樣我們就可以衡量不同的操作對被測系統所造成的影響,那么我們如何知道不同的操作所花費的時間,這就用 到了事務,我們在操作之前插入一個事務開始標識,在操作完成后插入一個事務結束表示,這樣我們就知道了這個操作所花費的時間。
集合點:
執行負載測試時,需要模擬系統上有較重的用戶負載。要實現此操作,可以同步 Vuser 以便恰好在同一時刻執行任務。通過創建集合點,可以配置多個 Vuser 同時執行操作。當某個 Vuser 到達該集合點時,將進行等待,直到參與該集合的全部 Vuser 都到達。指定數量的 Vuser 均到達后,釋放所有這些 Vuser。
可通過將集合點插入到 Vuser 腳本來指定會合位置。在 Vuser 執行腳本並遇到集合點時,腳本將暫停執行,Vuser 將等待 Controller 或控制台的允許以繼續執行。Vuser 從集合釋放后,將執行腳本中的下一個任務。
注意:只能向 Action 部分(而不是 init 或 end 部分)添加集合。
插入集合點是為了衡量在加重負載的情況下的性能情況。在計划中,可能會要求系統能夠承受1000 人同時提交數據,在LoadRunner 中可以通過在提交數據操作前面加入集合點,這樣當虛擬用戶運行到提交數據的集合點時,LoadRunner 就會檢查同時有多少用戶運行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的用戶在此等待,當在集合點等待的用戶達到1000 人時,LoadRunner 命令1000 人同時去提交數據,從而達到計划中的需求
思考時間:
loadrunner 思考時間(think-time)的理解
經常碰到很多網友在問性能測試思考時間的設置,有的設置是默認錄制的值,有的是覺得在壓力測試時要去掉思考時間這樣服務器壓力才大,各人的理解不一樣其實在測試時是要適當加入思考時間但是時間不能太長一般都是1--5秒內。下面是對思考時間的一些說法。
在錄制腳本時 我們一般會選擇記錄思考時間 record think time,Loadrunner做為性能測試工具,錄制時記錄的是客戶端和服務端的交互,如果要精確模擬 用戶的行為,那么客戶操作客戶端時花費了很多時間要怎么模擬呢?錄入填寫提交的內容,從列表中下拉搜索選擇特定的值等,這時LOADRUNNER 不會記錄用戶 的客戶端操作,而是記錄了用戶這段時間,成為思考時間(Think-time),因為用戶的這些客戶端操作不會影響服務端,只是讓服務器端在這段時間內沒有請求而已。,所以加入思考時間就能模擬出熟練的或者生疏的用戶操作,接近實際對於服務端的壓力。
Vuser 思考時間模擬實際用戶在不同操作之間等待的時間。例如,當用戶收到來自服務器的數據時,可能要等待幾秒鍾查看數據,然后再做出響應。這種延遲就稱為“思考時間”。VuGen 使用 lr_think_time 函數將思考時間值錄制到 Vuser 腳本中。以下錄制的函數指明用戶等待了 8 秒鍾才執行下一個操作:
lr_think_time(8);
當您運行了 Vuser 腳本並且 Vuser 遇到了上述 lr_think_time 語句時,默認情況下,Vuser 將等待 8 秒鍾后再執行下一個操作。可以使用思考時間運行時設置來影響運行腳本時 Vuser 使用錄制思考時間的方式。