接口测试

接口测试

一、接口概念

  • ​ 现实中的接口

  • 软件中的接口:

    • 客户端与服务器之间,服务器与服务器之间的沟通。遵循特定接口的统一标准,规范和要求进行相互之间的沟通和通信。

​ 常见接口类型:http,websocket, dubbo,Web Services

我们常说的接口测试,通常指的是HTTP协议的接口测试(我们这里主要讲的是HTTP的接口测试)

二、接口测试的概念

​ 接口测试是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性

针对软件接口的分类一般有如下几种情况:

  • 系统与系统之间的调用,如微信向用户提供统一的对外接口,程序员调用接口完成基于微信的小程序等;

  • 同一系统内部上层服务对下层服务的调用,如一个软件程序一般分为表示层,业务层和数据层,表示层调用业务层的接口来完成自己的工作,而业务层又会调用数据层的接口来实现相应的业务等。

三、接口测试的价值

测试金字塔的概念是由敏捷开发大师 Mike Cohn 首先提出的,主要包含以下几点:

  • 把软件测试分为 UI 界面测试、接口测试、单元测试三层结构。
  • 越往下速度越快且越稳定,那么就可以频繁执行。
  • 越靠下,投入的成小,效益越大。反之,投入大,收益小。

img

四、为什么要做接口测试

  • 可以发现我们页面上,发现不了的bug。
  • 能够提早发现 bug,符合质量控制前移的理念。
  • 检查系统的异常处理能力(必传,非必传,非空校验,异常传参,接口幂等性等检查)。
  • 检查系统的安全性、稳定性,前端传参不可信,比如京东购物,页面下单价格不可能传入-1元,但是通过接口可以传入-1元。
  • 现在很多系统前后端架构是分离的,从安全层面来说:
    • 只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
    • 前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
  • 接口测试低成本高效益,因为接口测试可以自动化并且是持续集成的。

五、测试的重点是

  • 要检查接口参数传递的正确性
  • 接口功能实现的正确性
  • 输出结果的正确性
  • 以及对各种异常情况的容错处理的完整性和合理性

六、接口测试的用例设计

​ 接口测试的用例设计方法和功能测试用例设计方法基本一致。都需要用到如:边界值法,等价类法等基本测试方法。

设计接口测试用例的出发点:是要验证接口实现的功能与性能指标与接口设计文档的一致性,同时测试接口具有良好的容错机制,能在接收到各种异常输入数据时做到:返回对错误定位具有良好参考意义的错误码,屏蔽底层错误信息,同时接口测试用例需要暴露接口代码更多的代码缺陷,以这个出发点为导向。

​ 输入参数组合、预期结果、实际运行结果以及备注的其他相关信息。以最少的用例数量覆盖所有典型参数组合,做到每条用例覆盖不同的测试点,且每条用例都不可被取代

  • 正常用例的设计方法。
  • 异常用例的设计方法。
    • 异常用例的设计需要注意的是以下几点:
      • 首先,接口应在任何时候都返回错误码,而不能存在未经处理,直接导致调用接口的程序异常退出,或者将底层错误信息直接返回给上一层调用程序。调用程序异常退出会给用户非常不好的用户体验,同时,无法进行故障诊断和错误定位,而未经处理的底层错误信息直接返回给调用程序,有可能将不应被用户知晓的数据信息返回给用户,比如数据库相关信息,造成可能被攻击的漏洞或安全隐患。
      • 其次,错误码的准确性很重要。错误码的准确性对接口调用失败原因的定位有非常重要的意义,将极大降低后续维护成本,错误码的设置应当准确,无歧义,一种错误类型一个错误码,尽量将错误码编得更细,更有利于错误排查。比如:参数长度错误和参数类型错误应当为不同的错误码,而不应该是统一的参数错误的错误码。同时,错误码应当在接口设计文档中有明确定义,并且在不同接口中保持一致。

一个很好的测试用例设计过程应该是建立在前期深入的需求分析和文档设计的基础之上。需求分析得越深入全面、文档描述越详细清晰,则设计的接口测试用例就会越全面,越能暴露出接口的缺陷,从而提供出高质量的服务接口。并且在后续接口维护过程中,有详尽的接口设计文档作为支撑,也可以降低维护成本

七、接口测试如何展开

  • 找开发提供API接口文档(以实际情况为准)

  • 熟悉业务(同产品或开发沟通,我们测试要对这个接口提供的能力或要处理的事情,有非常清晰的认知)

  • 熟悉文档接口说明:入参,返回值,字段是否必传,字段的意义

  • 根据对接口的理解和熟悉后,设计测试用例,并准备测试数据

  • 接口用例执行,验证接口的正确性

  • 提交BUG

  • 输出测试报告

八、接口测试的常用工具

  • Postman - 接口调试工具(方便,快速,高效)

  • Jmeter - 接口测试,接口自动化,接口性能 /(接口幂等测试也可以通过多个线程组 模拟并发接口的请求)

  • SoupUI - 接口测试,接口自动化

  • 通过Python requests模块,编写自动化测试代码

posted @ 2021-09-26 18:16  一池水的宁静  阅读(79)  评论(0)    收藏  举报