接口自动化测试,完整入门篇

发表于:2018-11-02 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lovesoo    来源:博客园

  1. 什么是接口测试
  顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试性能测试,稳定性测试,安全性测试等。
  在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。相比UI层(主要是WEB或APP自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比,是每个公司开展自动化测试的首选。
  下面我们以一个HTTP接口为例,完整的介绍接口自动化测试流程:从需求分析用例设计,从脚本编写、测试执行到结果分析,并提供完整的用例设计及测试脚本。
   
  2. 基本流程
  基本的接口功能自动化测试流程如下:
  需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析
  2.1 示例接口
  接口名称:豆瓣电影搜索
  接口文档地址:https://developers.douban.com/wiki/?title=movie_v2#search
  接口调用示例:
  1) 按演职人员搜索:https://api.douban.com/v2/movie/search?q=张艺谋
  2) 按片名搜索:https://api.douban.com/v2/movie/search?q=大话西游
  3) 按类型搜索:https://api.douban.com/v2/movie/search?tag=喜剧
  3. 需求分析
  需求分析是参考需求、设计等文档,在了解需求的基础上还需清楚内部的实现逻辑,并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。
  如:豆瓣电影搜索接口,我理解的需求即是支持对片名,演职人员及标签的搜索,并分页返回搜索结果。
  4. 用例设计
  用例设计是在理解接口测试需求的基础上,使用MindManager或XMind等思维导图软件编写测试用例设计,主要内容包括参数校验,功能校验、业务场景校验、安全性及性能校验等,常用的用例设计方法有等价类划分法,边界值分析法,场景分析法,因果图,正交表等。
  针对豆瓣电影搜索接口功能测试部分,我们主要从参数校验,功能校验,业务场景校验三方面,设计测试用例如下:
  
  5. 脚本开发
  依据上面编写的测试用例设计,我们使用python+nosetests框架编写了相关自动化测试脚本。可以完整实现接口自动化测试、自动执行及邮件发送测试报告功能。
  5.1 相关lib安装
  必要的lib库如下,使用pip命令安装即可:
  pip install nose
  pip install nose-html-reporting
  pip install requests
  5.2 接口调用
  使用requests库,我们可以很方便的编写上述接口调用方法(如搜索q=刘德华,示例代码如下):
  #coding=utf-8
  import requests
  import json
  url = 'https://api.douban.com/v2/movie/search'
  params=dict(q=u'刘德华')
  r = requests.get(url, params=params)
  print 'Search Params:\n', json.dumps(params, ensure_ascii=False)
  print 'Search Response:\n', json.dumps(r.json(), ensure_ascii=False, indent=4)
  在实际编写自动化测试脚本时,我们需要进行一些封装。如下代码中我们对豆瓣电影搜索接口进行了封装,test_q方法只需使用nosetests提供的yield方法即可很方便的循环执行列表qs中每一个测试集:
  class test_doubanSearch(object):
  @staticmethod
  def search(params, expectNum=None):
  url = 'https://api.douban.com/v2/movie/search'
  r = requests.get(url, params=params)
  print 'Search Params:\n', json.dumps(params, ensure_ascii=False)
  print 'Search Response:\n', json.dumps(r.json(), ensure_ascii=False, indent=4)
  def test_q(self):
  # 校验搜索条件 q
  qs = [u'白夜追凶', u'大话西游', u'周星驰', u'张艺谋', u'周星驰,吴孟达', u'张艺谋,巩俐', u'周星驰,大话西游', u'白夜追凶,潘粤明']
  for q in qs:
  params = dict(q=q)
  f = partial(test_doubanSearch.search, params)
  f.description = json.dumps(params, ensure_ascii=False).encode('utf-8')
  yield (f,)
  我们按照测试用例设计,依次编写每个功能的自动化测试脚本即可。
   
   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号