qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          LoadRunner編寫Socket協議腳本方法

          本文主要介紹使用LoadRunner手工編寫Windows Socket協議測試腳本的方法。

            通過LoadRunner編寫Windows Socket協議測試腳本,總體說來,比較簡單。就像把大象放進冰箱一樣,總共分三步:

            第一步:把冰箱門打開

          //建立到服務端的連接

          rc =    lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=128.64.64.23:8988", LrsLastArg);
          if (rc==0)
                 lr_output_message("Socket  was successfully created ");
          else
                 lr_output_message("An error occurred while creating thesocket, Error Code: %d", rc);

            第二步:把大象裝進去

          lrs_send("socket0", "buf0", LrsLastArg);   //往"socket0"發送"buf0"中的數據lrs_receive("socket0", "buf1", LrsLastArg);//將"socke0"中返回的數據存放到"buf1"中

            第三步:把冰箱門帶上

          //關閉連接
              lrs_close_socket("socket0");

            整個腳本關鍵是在第二步,要把這么一頭大象裝到冰箱里可不是件容易的事情,我們要對傳送的數據做一些處理才行。LR會把你發送的數據包內容寫到data.ws這個文件中,那么我們在此也同樣應該把數據寫到data.ws中去。假設我要發送的是“00100312303456”這一串字符,那么我就直接把它寫到data.ws中,腳本如下:

          ;WSRData 2 1

          send buf0 10

          "00100312303456"  //注意要加""

          recv buf1 128

          -1

            運行腳本,可以看到執行成功。在日志信息中可以打印出發送的BUFFER和接收到的BUFFER內容。

            接下來,我們要對發送的字符串進行參數化,讓腳本每次發送的字符串都不一樣,怎么做呢?有兩種方法可以實現:

            直接參數化。在data.ws中直接進行參數化,要注意的是默認的參數名稱符號是尖括號(<>),和HTTP協議的大括號({})不同。腳本如下:

          send buf0 106
          "<string>"  //string是自定義的參數名

            第二種方法則麻煩一點,下面重點做個介紹。

            事情是這樣的:如果我要發送的數據是很通過簡單的方法拼接起來,最簡單的例子,如“用戶名(假設是123)+密碼(假設是456)”,在這種情況下,使用第一種方法就夠用了,我可以設置兩個參數<username>和<password>,寫成下面的方式就可以了。

          send buf0 106
          "<username><password>"

            但是情況稍微復雜一些,發送的數據格式還需要加上字符串的長度,比如在上面的例子中,需要這樣表示:00100312303456。

            前四位0010是表示后面發送的字符串總長度是10,后面的03則表示用戶名有3位,再后面的123才是真正的用戶名,再后面的03456也是同樣的道理。而每次發送的用戶名長度不同,字符串也就不同,比如用戶名如果是1234,那么我的報文就應該是這樣“001104123403456”這樣一來,我就不能通過簡單地拼接的方式來發送了,而需要再對它進行一些處理:

          char data[200];
          char length[20];

          len = strlen(lr_eval_string("{usermame}"));
          sprintf(length,"%d",len);
          strcat(data,length);
          strcat(data,"{username}");

          //然后,再通過lrs_save_param_ex函數把該數據保存到data_param參數中。

          lrs_save_param_ex("socket0", "user", data, 0, strlen(data),NULL, "data_param");

          //最后,在data.ws文件中使用data_param參數發送數據包:
          send buf0 "<data_param>"

            本文轉載自:http://lovesoo.org/how-to-use-loadrunner-to-write-socket-protocol-script.html

          相關鏈接:

          LoadRunner錄制Socket協議腳本亂碼調研

          posted on 2013-04-08 09:59 順其自然EVO 閱讀(440) 評論(0)  編輯  收藏 所屬分類: loadrunner

          <2013年4月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河曲县| 邓州市| 屏边| 桃园县| 天祝| 拉孜县| 蓬溪县| 额尔古纳市| 鸡西市| 广汉市| 前郭尔| 苍山县| 华容县| 桂东县| 安龙县| 灵山县| 镇平县| 古田县| 永春县| 杨浦区| 诏安县| 海城市| 东城区| 江口县| 驻马店市| 寿宁县| 固安县| 阿瓦提县| 商都县| 台江县| 修武县| 米林县| 福鼎市| 四会市| 高雄市| 武平县| 常德市| 西畴县| 新源县| 任丘市| 兴国县|