接口测试总结与分享

 金字塔模型回顾
  金字塔模型
  经过以前对金字塔结构的学习,大概了解到了金字塔模型想告诉咱们的几个道理:
  1.越底层,越稳定。
  金字塔主要观点认为 单元测试的稳定性高,须要多投入。
  2.越底层,越高效。
  程序的问题,最终还得落在具体的代码上,因此底层的测试更容易发现问题。
  3.越底层,越低成本。
  越底层测试能越早发现问题,越早发现问题,修复的成本天然越低。
  4.越底层,越难实施。
  越底层的实现对 技术专业性要求越高,这点跟第三点有点矛盾,每每越专业的人才也意味着人力成本越高。
  综合下金字塔模型,咱们提出了橄榄模型(不倒翁模型),拿 接口测试和UI层测试以及单元测试作了比较,最终认定接口(API)测试能够得到较高的投资回报。
  橄榄模型
  接口测试
  什么是接口(API)
  API全称Application Programming Interface,这里面咱们其实不用去关注AP,只须要I上就能够。一个API就是一个Interface。咱们无时不刻不在使用interfaces。咱们乘坐电梯里面的按钮是一个interface。咱们开车一个踩油门它也是一个interface。咱们计算机 操做系统也是有不少的接口。(这是目前我的找到比较好理解的一段解释)
  接口就是一个位于复杂系统之上而且能简化你的任务,它就像一个中间人让你不须要了解详细的全部细节。那咱们今天要讲的 Web  API就是这么一类东西。像谷歌搜索系统,它提供了搜索接口,简化了你的搜索任务。再像用户登陆页面,咱们只须要调用咱们的登陆接口,咱们就能够达到登陆系统的目的。
  如今市面上有很是多种风格的Web API,目前最流行的是也容易访问的一种风格是REST或者叫RESTful 风格的API。从如今开始,如下我提到的全部API都是指RESTful风格的API。
   什么是接口测试和为何要作接口测试
  接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
  如今不少系统先后端架构是分离的,从安全层面来讲,只依赖前端进行限制已经彻底不能知足系统的安全要求(绕过前端太容易了), 须要后端一样进行控制,在这种状况下就须要从接口层面进行验证。
  现在系统愈来愈复杂,传统的靠前端测试已经大大下降了效率,并且如今咱们都推崇测试前移,但愿测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是否是得等先后端都完成你才能进行测试,才能进行自动化代码编写。 而若是是接口测试,只须要先后端定义好接口,那这时自动化就能够介入编写接口 自动化测试代码,手工测试只须要后端代码完成就能够介入测试后端逻辑而不用等待前端工做完成。
   接口测试的策略
  接口测试也是属于 功能测试,因此跟咱们以往的功能测试流程并无太大区别,测试流程依旧是:1.测试接口文档(需求文档) 2.根据接口文档编写 测试用例(用例编写彻底能够按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不一样的参数请求,接口的返回的数据是否达到预期。
  接口测试点
  image.png
  来个实例
  假如咱们如今拿到了以下的一个接口文档(豆瓣图书开源API:https://developers.douban.com/wiki/?title=book_v2)
  image.png
  从文档中咱们能够大致知道这个接口的一些信息,例如接口是GET请求,请求协议是https,请求的接口服务器地址是api.douban.com,接口的路径是/v2/book/search,接口能够带有四个参数q(查询的关键字),tag(查询的tag),start(取结果的offset),count(取结果的条数),若是接口请求正常返回状态200,返回大致以下结果:
  {
        "start": 0,
        "count": 10,
        "total": 30,
        "books" : [Book, ]
      }
  假设这个文档是完善的(我的认为开发文档还能够把参数类型写上)这时咱们根据这个文档,咱们设计了以下一个测试用例:
  用q=自动化测试,start=0,count=1做为参数请求搜索图书接口,那么接口请求的状态码应该是200,reponse应该返回count=1,start=0等等。
  最后咱们去执行测试用例,假设我如今没有别的接口测试用例工具,咱们就经过 浏览器来测试这个GET请求的接口,那么我就能够在浏览器低质栏输入:https://api.douban.com/v2/book/search?q=自动化测试&start=0&count=1,并判断返回信息是否有误。
  image.png
   JSONView 引入
  咱们发现直接从Chrome打开咱们的查询图书的接口请求,返回的 数据为JSON格式,可是浏览器显示排版难以阅读,这时咱们能够考虑安装一些插件来便于咱们阅读,例如JSONView插件:
  https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc 。插件安装完后咱们再次请求搜索图书接口,咱们看到格式化后的排版:
  image.png
  固然相似的格式化JSON的插件工具很是多,能够本身找个喜欢方便的即可。
   Postman 引入
  咱们刚刚经过浏览器来测试咱们的一个GET请求的接口的一个测试用例,可是平时咱们的接口请求方法除了GET还有POST,PUT,DELETE等等,那么浏览器毕竟不是专业的接口测试软件,并且它也没法测试POST这类型的的接口,那么咱们就须要找一个专业的接口测试软件:Postman。
   Postman 的安装
  之前的Postman 除了mac版本都须要在Chrome的插件安装,但如今也推出Win和liunx的PC版,因此咱们如今只须要到官方网站:https://www.getpostman.com/ 去根据本身的操做系统下载对应的版本即可。
  image.png
   首次使用
  建议去注册个帐号,登陆使用,能够不一样电脑上方便数据同步。
   GET请求
  image.png
   POST 请求
  POST 请求例子,经过Postman 配置好请求方法,地址,参数后发起请求,最后以下:
  Post Demo
  也许你也有疑问,若是开发没有完备的接口文档,我如何知道他API的信息?
  这时咱们就得经过一些抓包工具抓取这些API信息。
   常见抓包工具
  HTTP抓包工具:Fiddler、Charles、Firebug、开发者工具等等。。。
   Chrome开发者工具简单演示
  1.打开Chrome 浏览器,按下F12快捷打开Chrome开发者工具
  2.点击Network 标签
  3.勾选 Preserve log选项,确保页面刷新不会把已抓到的请求清空
  image.png
  4.打开网站首页,输入登陆名和密码,点击登陆
  5.查看开发者工具,能够找到以下图Login的请求接口
  image.png
  6.查看Login 请求的详细信息
  请求方法:POST
  请求的URL:http://test.logwing.com/Home/Login
  请求参数格式:Content-Type: application/x-www-form-urlencoded
  请求参数:UserName=XXX&Password=XXXX&CheckCode=&Remember=false&LoginCheckCode=7119
  请求结果类型:Content-Type: application/json; charset=utf-8
  请求结果:
 
  response
  更多关于Chrome开发者工具帮助中文帮助文档能够参考:https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools
   Fiddler
  Chrome开发者工具依赖于Chrome浏览器,也只能抓取Chrome浏览器发起的请求,若是咱们想获取全部程序发起的请求,咱们就能够经过Fiddler来抓取。
   简介
  Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,Fiddler能够也可让你检查全部的HTTP通信,设置断点,以及Fiddle全部的“进出”的数据(我通常用来抓包),Fiddler还包含一个简单却功能强大的基于JScript .NET事件脚本子系统,它能够支持众多的HTTP调试任务。
   工做原理
  Fiddler是以代理WEB服务器的形式工做的,浏览器与服务器之间经过创建TCP链接以HTTP协议进行通讯,浏览器默认经过本身发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。不过若是Fiddler非正常退出,这时候由于Fiddler没有自动注销,会形成网页没法访问。解决的办法是从新启动下Fiddler。
  工做原理.png
   简单演示
  抓取http请求
  1.启动Fiddler。
  2.点击Fiddler主界面右下角的监听程序,选择ie浏览器则该系统上全部的浏览器发起的http请求都将被抓取。
  image.png
  3.打开chrome浏览器 ,打开官网首页,输入用户名密码登陆。
  4.查看Fiddler主面板,能够查看到Login请求。
  5.查看Login请求的信息
  能够查看到跟Chrome插件查看到相似的信息。
  request\response
相关文章
相关标签/搜索