• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試中通過服務器返回的響應報文來判斷交易的處理情況

    發布: 2009-4-09 10:00 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 97次 | 進入軟件測試論壇討論

    領測軟件測試網 很多時候我們需要通過服務器返回的響應報文來判斷交易的處理情況,比如說服務器返回一個xml報文,用<reponse_code></response>字段的值來指明交易處理的結果,如’0000’表示處理成功,其余取值則表示出錯。在基于http協議的腳本中,該值可以通過關聯的方式來獲取,在這里就不多說了。我在這里說的是另外一種情況,即在一些非http協議腳本(如tuxedo協議)中,如何獲取這個值呢? 
        假設腳本向服務器發送請求的腳本如下:
        ret = lrt_tpcall(\"EAIHINCSMW\",(char *)pFml,0,(char **)&recvBuf,&recvlen,0);
        服務器處理請求后返回:
        <?xml version=\"1.0\" encoding=\"GBK\"?><Transaction><Transaction_Header><tran_response><response_code>2000</response_code><respone_msg>組件處理:組件[SDATA_GetSerialNo]執行失?/respone_msg></tran_response></Transaction_Header><Transaction_Body><response/>
    </Transaction_Body></Transaction>
        以上信息保存在recvBuf中。其中<response_code>字段值’2000’就是我們需要用來判斷的字段值,那么在后續的腳本中如何獲取該值并做相應的判斷呢?   
        首先聲明兩個用于取值的字符串指針和一個表示響應碼的字符串:
        char *response1;
        char *response2;
        char response_code[5];

        接下來是取值的方法:
        
       //判斷返回結果是否成功:響應碼respone_code ’0000’表示處理成功。返回碼的其余取值表示出錯
        response1 = (char *)strstr(recvBuf,\"<response_code>\");
        response1 =response1 + 15;
        response2 = (char *)strstr(response1,\"</response_code>\");

        說明:
        strstr()函數的作用是:返回一個字符串在另一個字符串中首次出現的位置到后者末尾的子字符串(大小寫敏感)。如果這個函數執行成功,將返回剩余字符串(存在相匹配的字符);如果沒有找到相匹配的字符,則返回False。
        因此strstr(recvBuf,\"<response_code>\");表示查找在recvBuf中查找<response>字符串,并將其后的字符都賦給response1,故response1的值為:“<response_code>2000</response_code><respone_msg>組件處理:組件[SDATA_GetSerialNo]執行失?/respone_msg></tran_response></Transaction_Header><Transaction_Body><response/>
    </Transaction_Body></Transaction>”
        response2的值為:</response_code><respone_msg>組件處理:組件[SDATA_GetSerialNo]執行失?/respone_msg></tran_response>< /Transaction_Header><Transaction_Body><response/>
    </Transaction_Body></Transaction>
       15是“<response_code>”的字符串長度 

        最后是判斷:
        if(strncmp(response1,\"0000\",response2-response1)==0)
        {
            //返回碼0000,處理成功
             lr_message(\"Success!\");
        }
        else
        {
            //返回碼不為0000,處理失敗
            lr_message(\"Fail!\");
        }

        說明:strncmp()函數的作用是:比較字符串的前n個字符(大小寫敏感)。返回值: 
    0 – 如果字符串相等 
    <0 – 如果string1小于string2 
    >0 – 如果string1大于string2 
        語法:strncmp(string1,string2,length);

        如果想打印返回碼,則可以用memcpy函數:
        memcpy(response_code,response1,4);
        lr_error_message(\"response_code:%s\",response_code);

        注:以上代碼均是從我的實際工作中選取的例子,其中所使用的方法并不一定是最好的解決方案。如果各位同仁有其它更好的方法或建議,請不吝指教!

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 服務器 交易 判斷 軟件測試 報文


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>