qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          LoadRunner編寫Socket協(xié)議腳本方法

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

            通過LoadRunner編寫Windows Socket協(xié)議測(cè)試腳本,總體說來,比較簡(jiǎn)單。就像把大象放進(jìn)冰箱一樣,總共分三步:

            第一步:把冰箱門打開

          //建立到服務(wù)端的連接

          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);

            第二步:把大象裝進(jìn)去

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

            第三步:把冰箱門帶上

          //關(guān)閉連接
              lrs_close_socket("socket0");

            整個(gè)腳本關(guān)鍵是在第二步,要把這么一頭大象裝到冰箱里可不是件容易的事情,我們要對(duì)傳送的數(shù)據(jù)做一些處理才行。LR會(huì)把你發(fā)送的數(shù)據(jù)包內(nèi)容寫到data.ws這個(gè)文件中,那么我們?cè)诖艘餐瑯討?yīng)該把數(shù)據(jù)寫到data.ws中去。假設(shè)我要發(fā)送的是“00100312303456”這一串字符,那么我就直接把它寫到data.ws中,腳本如下:

          ;WSRData 2 1

          send buf0 10

          "00100312303456"  //注意要加""

          recv buf1 128

          -1

            運(yùn)行腳本,可以看到執(zhí)行成功。在日志信息中可以打印出發(fā)送的BUFFER和接收到的BUFFER內(nèi)容。

            接下來,我們要對(duì)發(fā)送的字符串進(jìn)行參數(shù)化,讓腳本每次發(fā)送的字符串都不一樣,怎么做呢?有兩種方法可以實(shí)現(xiàn):

            直接參數(shù)化。在data.ws中直接進(jìn)行參數(shù)化,要注意的是默認(rèn)的參數(shù)名稱符號(hào)是尖括號(hào)(<>),和HTTP協(xié)議的大括號(hào)({})不同。腳本如下:

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

            第二種方法則麻煩一點(diǎn),下面重點(diǎn)做個(gè)介紹。

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

          send buf0 106
          "<username><password>"

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

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

          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函數(shù)把該數(shù)據(jù)保存到data_param參數(shù)中。

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

          //最后,在data.ws文件中使用data_param參數(shù)發(fā)送數(shù)據(jù)包:
          send buf0 "<data_param>"

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

          相關(guān)鏈接:

          LoadRunner錄制Socket協(xié)議腳本亂碼調(diào)研

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 二手房| 股票| 英德市| 凤城市| 灵川县| 阳朔县| 睢宁县| 大冶市| 响水县| 辰溪县| 张掖市| 永清县| 十堰市| 孟津县| 新津县| 陇川县| 色达县| 安康市| 轮台县| 时尚| 精河县| 惠东县| 黎川县| 新巴尔虎左旗| 新建县| 泰兴市| 滦南县| 内江市| 东阳市| 疏勒县| 通州市| 河池市| 买车| 金门县| 望谟县| 马边| 舒兰市| 汨罗市| 象山县| 博兴县| 内江市|