腳本優(yōu)化-事務函數(shù)簡介
by:授客QQ:1033553122
1.事務的開始和結束名稱需要相同
lr_start_transaction(“transaction_name”);
…//事務處理
lr_end_transaction(“transaction_name”,LR_AUTO);
2.事務和子事務
在VuGen中可以通過事務來完成一組操作的響應時間監(jiān)控,如果想監(jiān)控某一個事務中某一步操作的響應時間,就要使用子事務來完成。當然也可以使用事務嵌套
lr_start_sub_transaction(“子事務名”,“父事務名”);
lr_end_sub_transaction(“子事務名”,子事務狀態(tài));
注意:子事務和父事務很像,但是父事務支持的很多函數(shù)在子事務中都無法實現(xiàn),所以應酌情考慮。
例:做一個登錄的事務,同時把打開登錄頁面和登錄操作都做成一個事務,這樣就可以得到三個事務的時間:打開頁面和登錄操作及整個操作的時間。
Action()
{
}
運行結果:
3.事務狀態(tài)
在默認情況下使用LR_AUTO來作為事務狀態(tài),對于一個事務有以下4個狀態(tài)可以選擇。
1)LR_AUTO
指事務的狀態(tài)由系統(tǒng)自動根據(jù)默認規(guī)則來判斷,結果為PASS/FAIL/STOP
LR_AUTO也是根據(jù)服務器的返回狀態(tài)信息來決定事務是以LR_PASS狀態(tài)通過還是以LR_FAIL狀態(tài)結束,只要服務器返回頁面,那么事務就會認為請求成功發(fā)出去了,服務器看懂了請求也返回了內(nèi)容,自然事務就是PASS狀態(tài)。
這樣由于事務的自動判斷,導致雖然操作失敗的,但是得到了一個響應時間,并且這個響應時間又沒正確反映出做這件事情的真正時間,最終影響測試結果。添加檢測函數(shù)有時候可以解決這個問題
例:判斷是否登錄成功(以lr自帶web站點為例)
Action2()
{
web_reg_find("Search=Body", "SaveCount=login_times", "Text=jojo1",LAST);
}
運行結果:
2)LR_PASS
指事務是以PASS狀態(tài)通過的,說明改事務正確地完成了,并且記錄下對應的時間,這個時間就是指做這件事情所需要消耗的時間。
3)LR_FAIL
LR_FAIL是指事務以FAIL狀態(tài)結束,該事務是一個失敗的事務,沒有完成事務中腳本應該達到的效果,得到的時間不是正確操作的時間,這個時間在后期的統(tǒng)計中將被獨立統(tǒng)計。
4)LR_STOP
LR_STOP將事務以STOP狀態(tài)停止。
說明:
事務的PASS和FAIL狀態(tài)會在場景的對應計數(shù)器中記錄,包括通過的次數(shù)和事務的響應時間,方便后期分析改事務的吞吐量以及響應時間的變化情況
4.事務相關的函數(shù)
//獲得對應事務達到該函數(shù)運行位置時持續(xù)的時間,返回double類型
lr_get_transaction_duration(“事務名”);
//獲得對應事務達到該函數(shù)運行位置時的wasted時間,返回double類型。
lr_get_transaction_wasted_time(“事務名”);
//為一個事務添加wasted時間,無返回值
lr_wasted_time(毫秒)
//將一個事務暫停,該函數(shù)后的操作都不會被記錄事務時間
lr_stop_transaction(“事務名”);
Action2()
{
注意:通過代碼stop事務后可以重新通過lr_start_transaction函數(shù)恢復被暫停的事務
5.包含“資源下載”的事務處理
一般情況都可以十分簡單地獲得請求的響應時間,但是對于下載操作來說就并不是那么方便了,這個時候需要利用一個web_get_int_property()函數(shù)來解決。
Action()
{
inti;
lr_start_transaction(“download”);
web_url(“LoadRunner”,”RUL=http://127.0.0.1/loadrunner.iso”,LAST);//下載操作請求
i=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);
if(i>5000)//當下載的文件大小大于5000個字節(jié)時認為下載成功,否則失敗。
lr_end_transaction(“download”,LR_PASS);
else
lr_end_transaction(“download”,LR_FAIL);
}
一般來說,對于下載操作的性能測試集中在需要多少時間彈出下載對話框,而后面的內(nèi)容其實屬于網(wǎng)絡帶寬的問題了,另一個方面現(xiàn)在很少使用IE進行直接下載,而采用迅雷一類的p2p下載工具,所以很少考慮具體下載文件操作對網(wǎng)絡和服務器讀寫操作的影響。