51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1614|回复: 2
打印 上一主题 下一主题

[转贴] Apifox接口测试教程:接口测试的原理与工具

[复制链接]
  • TA的每日心情
    无聊
    前天 09:06
  • 签到天数: 941 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-12-7 13:31:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前言
      掌握了http协议,就掌握了接口测试?
      笔者在网络上看过不少接口测试教程,一上来就开始讲怎么操作工具,而不告诉读者为什么要这么操作。读者可能照猫画虎成功了,也可能操作失败了但不知为何出错。
      因此,本文作为接口测试的入门第一课首先会给大家了解到执行接口测试每一步操作的目的和原理,由此大家才能从理论到实践上掌握接口测试,并且熟练之后有自己的创造性发挥。
      本文所用的接口测试工具为Apifox,请大家在往下读之前先安装注册好工具。
      Apifox官方下载地址:http://www.apifox.cn
      接口测试测什么
      接口测试主要是测试系统 组件间接口的一种测试,主要用于测试服务器与前端(web浏览器、APP)之间的数据交互接口。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。
      由引文对接口测试的定义可得,接口测试的对象是服务器接口,接口测试的内容包括:接口参数检验,接口功能实现是否正确,接口异常情况容错处理。
      接口测试的内容是《Apifox接口测试》系列教程后面的内容,本文主要讲解服务器接口,前端如何通过http协议与服务器通信,Apifox等接口测试工具如何实现接口测试。
      接口测试的对象
      接口测试的对象是服务器接口。API指的是一组预先定义好的函数,来让系统或外部的其他组件可以执行它内部实现的功能,但又无须访问源代码或者理解其内部逻辑。
      在需求开发过程中,前后端分离开发,两端的研发人员会共同定义好接口,编写接口文档,此后的开发过程中需要遵循这份协议文档。
      因此接口测试也是一种黑盒测试,测试人员需要根据接口文档来对服务器Api进行测试,来检测约定的功能是否正确实现,是否有对异常情况做容错处理。
      而接口文档的编写是依据前后端数据传输的协议——Http协议进行的。
      要会用接口文档,首先先理解http协议。
      服务器接口与前端通信的方式
      服务器接口与前端通信的方式:http协议。
      服务器和前端通过互相发送http报文完成数据交互。本小节将介绍如何创建http报文,以及如何理解报文的每一个部分,了解完就可以掌握接口测试的基础内容。

    http报文的三个组成部分 http报文是一个格式化数据块。报文类型包括客户端请求,服务器响应。它们由3个部分组成:
      起始行(start line) 对报文进行描述
      首部块(header) 包含属性 Content-Type:Content-Length:
      主体(body) 包含文本或二进制数据,可以为空
      请求报文的格式:
    1. <method><request-URL><version>
    2. <headers>
    3. <entity-body>
    复制代码
    响应报文的格式:
    1. <version><status><reason-phrase>
    2. <headers>
    3. <entity-body>
    复制代码
    各个字段的含义如下:
      方法(method):前端希望对服务器执行的操作,包含get、post、put、delete等方法。


     请求url(request-URL):所请求资源路径,通过它可找到资源放置的位置。格式类似于:https://www.apifox.cn/help/app/contact-us/
      版本(version):报文所使用的http版本,格式类似于:HTTP/1.0。
      首部(headers):可以有0个或多个首部,常见的首部如下:

    实体主体(entity-body):包含一个数据块,支持多种数据格式,如html页面、图片、视频、源代码等等。
      状态码(status-code):描述请求结果,成功或者失败。
      原因短语(reason-phrase):原因短语是状态码的可读版本,只对人类有意义。
      这些字段初学者会觉得非常抽象难以理解和记忆,但当后面接触到api文档和用apifox做接口测试的时候,就会顿悟——api文档里的参数和方法,url的含义和接口测试界面每个空格要填什么,返回值代表什么含义。
      请耐心继续往下读。

      读懂API文档
      对于测试人员,准备接口测试所需要的文档有产品需求文档+API文档。
      需求文档用于梳理接口为何这么设计、是否合理。
      针对单个接口,接口文档用于获取:接口描述,请求说明,返回说明。
      以百度开放API,文字识别接口为例:我们想要使用它的文本识别功能,需要去调用它的接口,那么需要了解发起这个文本识别接口请求,每个字段需要填什么内容。




    注:Apifox的ApiHub中,收集了大量开放的API,初学者可选取某个api深入了解接口文档,或作为接口测试的练习物料,注意有些接口需要先获取使用权限。

     Api Hub收集的开放API
    Apifox接口测试原理

    对于服务器来说,Apifox也是一个前端,只不过其他前端的接口请求由研发人员在代码里封装好,在特定条件下被触发发起请求,而Apifox中,接口请求由用户手动封装,手动发起。

    Apifox界面
    看完Apifox接口测试的界面,读者想必能发现,整个界面就是让读者手动构建出一个http请求出来,上两节我们讲的抽象的http协议终于落了地。
      因此一个最基础的http接口测试所需要做的步骤就是手动填写完成并发出一个http请求,校验参数。
      step1:选择请求方法->填写请求url->填写url参数->填写body参数和header参数(如果有);
      step2:手动发送请求;
      step3:查看返回参数是否正常,是否符合接口文档的约定。
      用Apifox构建你第一个测试请求
      在铺垫完上述那么多理论基础之后,大家终于可以开始上手使用apifox来做接口测试了。

      练习1:用get请求获取html页面
      step1:在apifox的新建接口tab输入“http://www.baidu.com”,请求方法选择GET、header参数、url参数、body参数均为空,接着点击send按钮;


    step2:查看返回值,可以看到请求回来的数据是一个html页面,即百度首页,我们点击‘preview’按钮,可以看到一个完整的页面显示出来;


    点击preview tab

      练习2:获取百度开放API的acess_token,即获得使用api的授权
      step1:查看百度开放api获取acess_token的接口文档,获取请求方法和请求参数;


    step2:根据接口文档描述的,在apifox接口测试界面选择post方法,在params里填写3个请求参数(client_id和client_secret需要创建应用后才能获得,没有可以先去创建);

    填写请求参数
      step3:点击下方「实际请求」tab,可以看到apifox实际发出的接口请求形式 如下:


    step4:查看返回参数可看到返回了我们需要的acess_token字段:

    练习完成,大家可以利用自己公司内部的接口文档/外部开放api继续进行练习巩固。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

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

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-9 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2021-12-14 10:13:01 | 只看该作者
    这个工具和postman长得非常像,用起来自然也很容易
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2021-12-30 14:00:34 | 只看该作者
    确实好用,Apifox不亏是大厂都在用的软件,自动化测试一体化协作平台,YYDS!!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-2 16:18 , Processed in 0.070675 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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