MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">事務又稱為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、通過事務計時可以幫助定位性能瓶頸;
從性能測試的角度出發,我們需要知道不同的操作所花費的時間,這樣我們就可以衡量不同的操作對被測系統所造成的影響,那么我們如何知道不同的操作所花費的時間,這就用到了事務,我們在操作之前插入一個事務開始標識,在操作完成后插入一個事務結束表示,這樣我們就知道了這個操作所花費的時間。
接著我們說說如何使用事務,以及事務應該應用在什么地方。
使用事務有如下幾種方法:
1、方法一:腳本生成后,手動插入事務;方法:在LoadRunner腳本中點擊鼠標:右鍵,選擇“Insert”→“Start Transaction”彈出一個對話框,輸入一個事務名字(注:事務名字可以為中文、可以為英文,也可以中英文混合,但推薦的做法是起一個容易理解的名稱,例如想知道登錄所花費的時間,則插入事務可以命名為login或登錄);“Start Transaction”插入完成后,還需要插入一個“End Transaction”,用以標識事務結束;注:Start Transaction和End Transaction需要成對出現,如果僅插入Start Transaction則腳本編譯會提示錯誤;此外,還可以通過LoadRunner vugen中的“Insert”菜單插入Start Transaction和End Transaction;
2、方法二:在腳本錄制過程中插入Start Transaction和End Transaction;在腳本錄制過程中,通過錄制工具條上的Start Transaction和End Transaction圖標插入事務,如下圖所示:
3、方法三:通過Run-time Settings 中的Automatic Transactions自動生成事務,如下圖所示:
注:該種方法插入的事務僅能在LoadRunner Controller中的圖表和報告中看到在腳本的log中看不到。
以上為事務的插入方法,無論是那種方法,插入事務后,我們都可以在腳本中看到如下兩個函數:lr_start_transaction("事務")和 lr_end_transaction("事務", LR_AUTO),前一個為事務開始函數,后一個為事務結束函數,括號中引號中的內容為事務名稱。
事務舉例:如下為一個LoadRunner所生成的腳本。
web_url("Folder.jsp_4",
"URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
web_url("TemplateAdminAction.do",
"URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
web_submit_form("ScheduleCreationAction.do",
"Snapshot=t12.inf",
ITEMDATA,
"Name=PTName", "Value=test", ENDITEM,
"Name=headerTempID", "Value=ttte", ENDITEM,
"Name=selectHeader", "Value=1", ENDITEM,
"Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,
LAST);
我們插入事務之后如下所示:
lr_start_transaction("事務");
lr_start_transaction("事務1");
lr_start_transaction("事務2");
web_url("Folder.jsp_4",
"URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
lr_end_transaction("事務", LR_AUTO);
web_url("TemplateAdminAction.do",
"URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
lr_end_transaction("事務1", LR_AUTO);
web_submit_form("ScheduleCreationAction.do",
"Snapshot=t12.inf",
ITEMDATA,
"Name=PTName", "Value=test", ENDITEM,
"Name=headerTempID", "Value=ttte", ENDITEM,
"Name=selectHeader", "Value=1", ENDITEM,
"Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,
LAST);
lr_end_transaction("事務2", LR_AUTO);
解釋:
Ø “事務”統計的時間為
web_url("Folder.jsp_4",
"URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
所執行的時間;
Ø “事務1”統計的時間為:
web_url("Folder.jsp_4",
"URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
web_url("TemplateAdminAction.do",
"URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?forwardID=1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
所執行的時間;
Ø “事務2”統計的時間為:
web_url("Folder.jsp_4",
"URL=http://172.17.16.5/xpc71/jsp/com/folder/Folder.jsp",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
web_url("TemplateAdminAction.do",
"URL=http://172.17.16.5/xpc71/TemplateAdminAction.do?
forwardID=1",
"Resource=0",
"RecContentType=text/html",
"Referer=http://172.17.16.5/xpc71/LoginAction.do",
"Snapshot=t11.inf",
"Mode=HTML",
LAST);
web_submit_form("ScheduleCreationAction.do",
"Snapshot=t12.inf",
ITEMDATA,
"Name=PTName", "Value=test", ENDITEM,
"Name=headerTempID", "Value=ttte", ENDITEM,
"Name=selectHeader", "Value=1", ENDITEM,
"Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,
LAST);
所執行的時間;
從上文我們可以看出事務之間可以嵌套使用,相互之間沒有影響,事務計時僅僅以事務名稱為標識。
總結:
• 使用LoadRunner transactions可以度量:
– 業務流程中每一步所花費的時間
– 整個業務流程所花費的時間
– 業務流程中每一步的性能指標可以自動度量
• 可以在錄制過程中和錄制完成后增加LoadRunner transactions
• 利用 “automatic LoadRunner transactions” 可以很方便的度量每一步的性能指標。
文章來源于領測軟件測試網 http://www.kjueaiud.com/