51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4283|回复: 7
打印 上一主题 下一主题

接口测试的两种方法

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:04
  • 签到天数: 1047 天

    连续签到: 5 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2017-11-8 13:49:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。
      方法一、用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
      
      请求报文格式:
      应答报文的参数接口说明:
      
    参数名称
      
      
    参数描述
      
      
    字符类型
      
      
    字符值
      
      
    UserID
      
      
    用户ID
      
      
    String
      
      
    10
      
      
    CommentsTypeID
      
      
    评论类型ID
      
      
    String
      
      
    2
      
      
    CommentsID
      
      
    评论ID
      
      
    String
      
      
    10
      
      
    CommentsContent
      
      
    评论内容
      
      
    String
      
      
    50
      
      
    StatusCode
      
      
    返回值
      
      
    Int
      
      
    0代表pass,非0代表fail
      
      
    StatusText
      
      
    返回信息描述
      
      
    String
      
      
      


    1. <?xml version="1.0" encoding="ISO-8859-1"?>
    2. < Publish >
    3.   <UserID>456</ UserID >
    4.   <CommentsTypeID>2</ CommentsTypeID >
    5.   <CommentsID>123</CommentsID>
    6.   <CommentsContent>Don't forget the meeting!</CommentsContent >
    7.   <StatusCode>0</StatusCode>
    8.   <StatusText>发送成功一条评论</StatusText>
    9. </Publish>
    复制代码


      有了上述的说明书之后,测试人员可以根据文档的描述在LoadRunner书写相应的接口测试脚本。
     LoadRunner中涉及到向服务器发送请求的API方法包括:web_url(),web_submit_form(),web_submit_data(),web_custom_request()。下面介绍两种我常用的方法:
      方法一:使用web_submit_data()
    1. web_submit_data("insert",
    2.       "Action=http://116.211.23.123/SNS/Publish.htm ",
    3.       "Method=POST",      
    4. "Referer=http://116.211.23.123/SNS/Publish.htm ",
    5.        "Mode=HTML",
    6.       ITEMDATA,
    7.       "Name= SNSID ","Value=6601",ENDITEM,
    8.       "Name= UserID ","Value=123",ENDITEM,
    9.       "Name= CommentsTypeID ","Value=1",ENDITEM,
    10.       "Name= CommentsID ","Value=456",ENDITEM,
    11.        "Name= AuthorID","Value=789",ENDITEM,
    12.        "Name= CommentsContent ","Value=Just for testing",ENDITEM,
    13.                LAST);
    复制代码
      方法二:使用web_custom_request()
    1. char str[1000];
    2. strcpy(str,"SNSID=7999&UserID=1&CommentsTypeID=1&CommentsID=1&AuthorID=1&CommentsContent=1");
    3. web_custom_request("Publish",
    4.                   "Url= http://116.211.23.123/SNS/Publish.htm",
    5.                   "Method=POST",
    6.                   "Referer=http://116.211.23.123/SNS/Publish.htm ",
    7.                   "Mode=HTTP",
    8.                   str,
    9.                   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()的前面。
      如:

    1. web_reg_find("Text=<StatusCode>0</StatusCode>",//应答报文里边的信息
    2. "SaveCount= StatusCodeCount", //统计查询字段的信息,如果找到值为1,如果未找到值为0
    3. LAST);
    复制代码

      在脚本的最后我们可以对查询字段的信息进行统计
    1. // Check result
    2.   if (atoi(lr_eval_string("{StatusCodeCount }")) > 0){ //判断如果Welcome字符串出现次//数大于0
    3.   lr_output_message("Send out the comment successfully."); }//在日志中输出Send out //the comment successfully
    4.    
    5.   else{ //如果出现次数小于等于
    6.    
    7.   lr_error_message("Send out the comment unsuccessfully."); //在日志中输出Send out //the comment successfully
    8.   return(0);
    9.   }  
    复制代码


    [/table]
      总结:用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表格。
    [table=98%]
      
    // 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做接口测试少。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏2
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 14:04 , Processed in 0.081051 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表