使用LoadRunner搞了三個星期的測試,現記錄一下
LoadRunner主界面
圖1 LR主界面
在使用LoadRunner測試的時候兩個流程①編寫LR腳本,腳本儘量先錄製,然後再進行一些修改,如果不能錄製的話,那麼只能自己動手寫了。②運行腳本進行測試。如上圖所示。
1.腳本編寫
點擊圖1中的“①”處,進入如下頁面,然後點擊“File->New..”,新建一個腳本
選擇自己要使用的協議,我們使用的是“Window Sockets”協議,下面所有的闡述也都是基於這種協議的。
選擇協議後,進入到腳本主頁面
在腳本的主頁面,我們能看到左側的四個文件,vuser_init主要用於定義一些變量、某些連接的初始化等;Action是我們業務處理代碼的編寫的主要陣地;vuser_end是一些收尾工作,關閉連接釋放資源等等;data.ws存放一些緩存區的大小,這個文件也是必備的,不是可有可無的呦。緩存區的大小一定要和接受到的消息大小做相對應的修改。
開始編寫腳本,在編輯器中輸入“lr_”,”lrs_”,IDE會給我們lr函數的一些提示,我們根據函數的名字基本上就知道函數的功能了。
編寫一個HelloWorld吧。這個簡單的HelloWorld例子可以用來進行一些簡單的測試,比如截取字符串、字符串拼接等等,因爲腳本大了畢竟不太方便。
2.運行腳本進行測試
選擇要測試腳本然後添加到右邊的藍色框中,點擊OK。
雙擊“Initialize“然後彈出一個框,我們選擇同時啓動
雙擊”Start Vusers“,填入啓動的用戶數,我們啓動100個用戶
雙擊”Duration“,填寫測試程序進行多長時間,通常我們直接就直接加1,意思就是運行1天,這樣省事
然後直接切換到”Run“Tab,然後點擊”Start Scenario“就可以測試了,然後就可以分析各種圖表了,具體的就不分析了。
3.簡單總結一些這3個星期中遇到的幾個印象比較深刻的問題吧。
(1)data.ws中設置消息緩存區的大小
(2)13bit時間戳字段
想要在LR中獲取13bit時間戳時,有問題,最後只能通過一個字符串的拼接來實現的。
int curtime ;
time(&curtime);
aa=lr_eval_string("<NewParam_1>");
if (strlen(aa)>1) {strncpy(dest,aa+20,3);}
sprintf(utc,"%ld",curtime);
memcpy(utc+10,dest,3);
lr_output_message("cur
不能直接獲取13bit時間戳的原因:在32bit Win機器上,C中的int和long都是4個字節。
(3)LR專用函數錯誤認知
lrs_set_send_timeout(1240,0); //爲發送套接字數據設置超時,Sets a timeout for sending data on a socket;void lrs_set_send_timeout ( long sec, long u_sec );
lrs_set_recv_timeout2(1024,0);
兩個函數的作用如下:
•lrs_set_recv_timeout:執行lrs_receive命令後,等待服務器返回消息的超時時間,即:服務器的響應時間。
•lrs_set_recv_timeout2:創建連接成功,接收到服務器返回的消息後,獲取匹配消息的超時時間。lrs_receive接收到數據後,會和預期的數據長度進行比較,如果長度不匹配,它將重新從套接字上讀取數據,直到超時爲止。