<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

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

    接口測試的兩種方法

    其實無論用那種測試方法,接口測試的原理是通過測試程序模擬客戶端向服務器發送請求報文,服務器接收請求報文后對相應的報文做出處理然后再把應答報文發送給客戶端,客戶端接收應答報文這一個過程。

      方法一、用LoadRunner實現接口測試

      大家都知道LoadRunner是一種性能測試工具,但它也可以用在我們做接口測試的時候。開發人員開發出來的接口,提供給測試人員詳細的接口使用說明書,該說明書最基本的要求如下:

      接口測試地址:/SNS/Publish

      請求報文參數說明:

    參數名稱

    參數描述

    字符類型

    字符值

    SNSID

    社區ID

    String

    6

    UserID

    用戶ID

    String

    10

    CommentsTypeID

    評論類型ID

    String

    2

    CommentsID

    評論ID

    String

    10

    AuthorID

    作者ID

    String

    10

    CommentsContent

    評論內容

    String

    50

      請求報文格式:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    < Publish >
      <SNSID>123</SNSID>
      <UserID>456</ UserID >
      <CommentsTypeID>2</ CommentsTypeID >
      <CommentsID>123</CommentsID>
      <AuthorID>456</AuthorID>
      <CommentsContent>Don't forget the meeting!</CommentsContent >
    </Publish>

      應答報文的參數接口說明:

    參數名稱

    參數描述

    字符類型

    字符值

    UserID

    用戶ID

    String

    10

    CommentsTypeID

    評論類型ID

    String

    2

    CommentsID

    評論ID

    String

    10

    CommentsContent

    評論內容

    String

    50

    StatusCode

    返回值

    Int

    0代表pass,0代表fail

    StatusText

    返回信息描述

    String

     

    <?xml version="1.0" encoding="ISO-8859-1"?>
    < Publish >
      <UserID>456</ UserID >
      <CommentsTypeID>2</ CommentsTypeID >
      <CommentsID>123</CommentsID>
      <CommentsContent>Don't forget the meeting!</CommentsContent >
      <StatusCode>0</StatusCode>
      <StatusText>發送成功一條評論</StatusText>
    </Publish>

      有了上述的說明書之后,測試人員可以根據文檔的描述在LoadRunner書寫相應的接口測試腳本。

     LoadRunner中涉及到向服務器發送請求的API方法包括:web_url(),web_submit_form(),web_submit_data(),web_custom_request()。下面介紹兩種我常用的方法:

      方法一:使用web_submit_data()

    web_submit_data("insert",
          "Action=http://116.211.23.123/SNS/Publish.htm ",
          "Method=POST",      
    "Referer=http://116.211.23.123/SNS/Publish.htm ",
           "Mode=HTML",
          ITEMDATA,
          "Name= SNSID ","Value=6601",ENDITEM,
          "Name= UserID ","Value=123",ENDITEM,
          "Name= CommentsTypeID ","Value=1",ENDITEM,
          "Name= CommentsID ","Value=456",ENDITEM,
           "Name= AuthorID","Value=789",ENDITEM,
           "Name= CommentsContent ","Value=Just for testing",ENDITEM,
                   LAST);

      方法二:使用web_custom_request()

    char str[1000];
    strcpy(str,"SNSID=7999&UserID=1&CommentsTypeID=1&CommentsID=1&AuthorID=1&CommentsContent=1");
    web_custom_request("Publish",
                      "Url= http://116.211.23.123/SNS/Publish.htm",
                      "Method=POST",
                      "Referer=http://116.211.23.123/SNS/Publish.htm ",
                      "Mode=HTTP",
                      str,
                      LAST);

      這也是一種寫法,可以跟web_submit_data互換。這種寫法更利于拼接參數。

      方法一適合一些xml結構的根元素下的子元素同處于根元素下面,且子元素數目較少的情況下,如果xml結構比較復雜,比如說根元素下面有多級子元素,或者xml樹結構分叉較多的時候,我們可以先把xml拼接成一個字符串然后通過web_custom_request()向服務器發送請求。

      我們在做接口功能測試的時候會很注意接口的應答報文的信息,這時候我們可以通過LoadRunner的日志信息查看或者可以通過web_reg_find()或者web_find()這樣的API函數來統計接口的運行結果,推薦使用web_reg_find(),web_reg_find()和web_find()區別請大家百度一下,詳細信息太多,在這里不便敘述。

      因為web_reg_find()是注冊型函數,所以應該放在web_submit_data()或者web_custom_request()的前面。

      如:

    web_reg_find("Text=<StatusCode>0</StatusCode>",//應答報文里邊的信息
    "SaveCount= StatusCodeCount", //統計查詢字段的信息,如果找到值為1,如果未找到值為0
    LAST);

      在腳本的最后我們可以對查詢字段的信息進行統計

    // Check result
    if (atoi(lr_eval_string("{StatusCodeCount }")) > 0){ //判斷如果Welcome字符串出現次//數大于0
    lr_output_message("Send out the comment successfully."); }//在日志中輸出Send out //the comment successfully
     
    else{ //如果出現次數小于等于
     
    lr_error_message("Send out the comment unsuccessfully."); //在日志中輸出Send out //the comment successfully
    return(0);
    }

      總結:用LoadRunner做接口測試無法做到把接口參數和程序分理,接口的參數可以通過參數化的方法來實現對同一個參數多個數據的測試。參數化后的測試數據保存在此腳本的保存位置下。

      方法二、通過Java + Fitnesse實現接口功能測試

      什么是Fitnesse?

      FitNesse是一套軟件開發協作工具 FitNesse是幫助大家加強軟件開發過程中的協作的工具。能夠讓客戶、測試人員和開發人員了解軟件要做成什么樣,幫助建議軟件最終是否達到了設計初衷。

      FitNesse是一套軟件測試工具 從另外一個角度看,FitNesse是一個輕量級的、開源的框架,能夠幫助開發團隊方便的定義驗收測試(Acceptance Tests),通過在web頁面上簡單的輸出和預計輸出的表格就可實現,并且可以運行這些測試以確定是否通過。

      FitNesse是wiki可以很方便的創建和編輯頁面 FitNesse是一個web服務器不用過多的安裝配置,很方便使用。

      我習慣使用Eclipse集成開發工具寫測試代碼,用fitnesse準備接口的測試數據,由此實現接口的測試數據和測試程序的分離。

      關于Fitnesse的使用大家可以參考官方網址。Fitnesse的四種常見表格是:

      ColumnFixture,ActionFixture,Decision Table,ScriptTable。在工作中ColumnFixture用的最多。

      下面的程序使用的是ColumnFixture表格。

    // Java fixtures
    package info.fitnesse.fixturegallery;
    import fit.ColumnFixture;
    public class PublishTest extends ColumnFixture {
      
      //通過url向服務器發送請求的程序段省略
       public StringSNSID; //對應列名|first part|
       public StringUserID; //對應列名|second part|
       private StringCommentsTypeID;
       private StringAuthorID;
    private StringCommentsContent;
    private StringUserID;
     
    //對參數的set和get方法省略
    }
     
    ColumnFixture表格里邊的測試數據是:
    //省略設置表格的存儲位置信息

      總結:上述兩種方法都是對接口做功能測試的方法,使用LoadRunner做接口測試的時候可以不用讓開發人員提供測試人員相應的UI測試頁面,直接調用接口做測試,但是測試程序和數據的依賴性太強;使用Fitnesse做接口測試的時候可以實現測試程序和數據的分離,只用點擊Fitnesse界面的Test按鈕就可以實現測試,測試消耗時間比使用LoadRunner做接口測試少。

      以上純屬個人見解,敬請拍磚!

    posted on 2012-05-31 09:50 順其自然EVO 閱讀(54840) 評論(12)  編輯  收藏

    評論

    # re: 接口測試的兩種方法 2013-08-23 17:17 zhangdl

    寫的很好,學習了!謝謝!  回復  更多評論   

    # re: 接口測試的兩種方法[未登錄] 2013-09-10 16:45 小飛俠

    不錯的文章  回復  更多評論   

    # re: 接口測試的兩種方法 2013-11-14 23:25 sophia

    樓主寫的很好,受益匪淺!多謝分享!  回復  更多評論   

    # re: 接口測試的兩種方法[未登錄] 2013-12-30 17:25 好好學習

    學習中  回復  更多評論   

    # re: 接口測試的兩種方法 2014-01-02 08:56 楊~~

    LR中是不是可以通過參數化達到程序與測試數據分離的目的呢??  回復  更多評論   

    # re: 接口測試的兩種方法 2014-10-04 10:15 成都

    問他雨雨  回復  更多評論   

    # re: 接口測試的兩種方法 2015-03-31 14:25 夢-龍

    寫的挺詳細的
      回復  更多評論   

    # re: 接口測試的兩種方法[未登錄] 2015-04-15 23:17 點點

    寫的挺好的,贊一個  回復  更多評論   

    # re: 接口測試的兩種方法 2015-06-08 13:19 777

    77777  回復  更多評論   

    # re: 接口測試的兩種方法 2015-11-19 19:20 三到四

    阿斯頓發發  回復  更多評論   

    # re: 接口測試的兩種方法[未登錄] 2016-04-14 09:24 111

    贊  回復  更多評論   

    # re: 接口測試的兩種方法 2016-07-25 23:43 meggein

    為毛不直接用soapui啊,方便簡單  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2012年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产天堂亚洲精品| 国产国拍亚洲精品福利| 毛片免费在线观看| 国产亚洲情侣久久精品| 亚洲一区无码中文字幕乱码| 亚洲精品成人无码中文毛片不卡| 又粗又硬免费毛片| 日本免费的一级v一片| 中文字幕无码不卡免费视频 | 暖暖在线日本免费中文| 在线观看www日本免费网站| 日韩精品无码免费专区午夜| 亚洲一区二区三区免费| 国产精品亚洲专区无码不卡| 亚洲av中文无码乱人伦在线观看| 亚洲人成7777影视在线观看| 亚洲欧洲自拍拍偷午夜色| 亚洲爱情岛论坛永久| 久久精品国产亚洲av麻豆| 亚洲日产韩国一二三四区| 国产日韩成人亚洲丁香婷婷| 亚洲成?v人片天堂网无码| 国产a不卡片精品免费观看| 国产高清免费观看| 免费高清在线影片一区| 在线精品免费视频无码的| 久久久久国产精品免费免费搜索 | 亚洲av无码专区国产乱码在线观看 | 国产中文在线亚洲精品官网| 亚洲人成无码www久久久| 免费大片在线观看网站| 全亚洲最新黄色特级网站 | 日韩大片免费观看视频播放| 妇女自拍偷自拍亚洲精品| 国产精品亚洲小说专区| 九九九精品视频免费| 精品多毛少妇人妻AV免费久久 | 亚洲综合伊人久久综合| 亚洲精品无码乱码成人| 亚洲AV无码久久精品狠狠爱浪潮| 久久夜色精品国产亚洲AV动态图|