一. socket腳本
lrs_startup(257);
lrs_create_socket("socket1", "TCP", "RemoteHost=192.168.86.239:9503", LrsLastArg);
lrs_set_recv_timeout(120, 0);
lrs_set_socket_options("socket1", LRS_NO_DELAY, "TRUE");
lrs_send("socket1", "buf1", LrsLastArg);
lrs_receive("socket1", "rbuf1", LrsLastArg);
lrs_close_socket("socket1");
lrs_cleanup();
二. Loadrunner函數大全
1258個函數
三. 調試優化腳本
1.設置斷點
相信大家都不陌生,LR也是可以設置斷點的,在需要設置斷點的語句前按F9快捷鍵,斷點就設置好了,程序運行到斷點語句后會暫停,這時我們可以用F10單步調試程序。
2.打開EXtended Log
只是設置斷點是不夠的,我們還得知道具體發生了什么事情,Log告訴了我們一切,默認的Log是standard Log,這時遠遠不夠的。我們要extended log,打開路徑為runtime settings-->log-->extended log.把parameter substitution和data returned by server和advanced trace大家根據需要勾選吧。
3.注釋掉多余的語句
很多回放時出錯的腳本都是因為多余的語句。因為LR在錄制的時候,LR生成的語句很多不是我們想要的。不要過分相信LR了,它生成的語句也是有很多BUG的。
四. log文件在哪看
(1)在vgen中,我們必須寫輸出函數輸出信息,將我們所想要了解的信息用函數輸出,主要有這么幾個函數輸出信息:lr_output_message,lr_error_message,lr_log_message.這些函數請參閱 help-->function reference.
其次,我們要在Vuser->runtime settings->log中設置,勾選always send messages,這樣我們才能寫出Log,在我們的腳本所在的文件夾中,有兩個文件很重要,mdrv.log.txt和output.txt文件,lr_log_message只會把信息輸到mdrv.log文件中,而lr_output_message則會寫進以上兩個文件。
(2)在controller中,很多朋友都會想知道多次迭代,參數是否正確的導入了呢,我們依舊查看log,我們在執行結束后,查看結果目錄的Log文件夾,如果是負載生成器運行的話,則在tmp目錄。不過,還想提醒朋友們,在controller我們也要設置runtime settings才行,而且每個用戶組的runtime settings,設置的方法是:在controller的Run標簽頁中,Vusers...->Details...->runtime settings按鈕,點擊它,設置的方法與在vgen中一樣的。
五. 網例 —— 數據包亂碼
【說明:】今天用socket協議錄制腳本后,發現數據包中都是亂碼。經過自己的琢磨,最終把所有亂碼都給格式化成十六進制。感觸最深的就是只要懂的字符類型長度就能真正的理解清楚loadrunner中發送的數據包內容是啥。然后就可以完全自己靈活控制數據包的值和數據包的操作。
1、基礎知識:
(1)需要知道所測試軟件中的包結構。
(2)知道二進制流;
(3)知道Big Endian 與 Little Endian
(4)知道字符類型的長度
(5)知道:當兩台采用不同字節序的主機通信時,在傳輸數據之前雙方都必須 對其進行字節序轉換,轉為網絡字節序后才能進行傳輸.
2、實例說明:
如某包體中有兩個值,定義如下:
struct msgHead
{
int id,
char name
}
假設我們要發送的包體就包括這兩個字段。並且id=81001 ,name=A
那么在loadrunner的data.ws文件中或者自己自定義的數據包中的值分別如下:
/*********************************
send buf0 5
"\x69\x3C\x01\x00"//說明:十進制:81001 十六進制:13C69 按照高低位存儲:69 3c 01 00
"\x41" //說明: ascii碼A 對應十進制是65 ,65轉化成十六進制是41
*********************************/
3、注意
通過上面的例子,不管你錄制后的數據包顯示什么樣的亂碼。
都可以用以上方法,根據包結構中定義的長度,一個個給解析出來。