接口测试-测试-IT技术博客
我的位置:首页 > 测试>接口测试

接口测试

时间:2021-04-19 15:22:00 浏览: 字体: 放大 缩小


什么是接口

API接口是Application Programming Interface的简称。是一些预先定义的函数,包括接口地址,传入参数和返回参数

可以简单理解为,当需要访问某些数据,正常状态下传入合格参数,会收到该范围内的返回参数。

场景:

在美团旅游频道,用户选定时间,地点后搜索航班,后台会调用搜索接口传入时间,地点等参数,接收航班类别,价格等参数,在前台页面上进行排列展示。同理,下单时会调用生单接口确认是否成单,支付时会调用支付接口完成交易,自动修改订单状态

什么是接口测试

接口测试主要用与外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点,通过一些特殊的规则也就是协议,来进行数据之间的交互。

一般我们用的多的是http协议的接口,webservice协议的接口,还有RPC(远程过程调用协议的接口)

不管是哪种接口,其本质就是发送一个request,然后服务区响应后返回一个response,我们对response进行分析,这即是接口测试

接口的分类

  1. webservice接口

    webservice接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

  2. http api接口

    httpapi接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式

一个url就是一个接口:接口大郅会分为一下几个部分:

请求协议:

http --- 普通的http请求

https --- 加密的http请求,传输数据更加安全

请求IP:就是指提供接口的系统所部署的服务器地址

请求端口:如果不填端口,默认是80,否则需要填写端口号

接口路径:指系统提供的接口在什么位置

接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&''来区分参数个数

为什么要做接口测试

随着系统越来越多,以及复杂性越来越高,为了保证系统的独立性,也为了使业务更加的独立。系统间的交互,越来越多的使用接口,这时候,为了保证数据的传输的准确性,接口测试也应用而生了,数据的错误,有可能引起系统的重大BUG。

接口测试的重要性

  1. 越底层发现bug,它的修复成本是越低的
  2. 前端随便变,接口测好了,后端不用变,前后端是两拨人开发的
  3. 检查系统的安全性,稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
  4. 如京的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案
  5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
  6. 现在很多系统前后端架构是分离的,从安全层面来说:
    1. 只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易),需要后端同样进行限制,在这种情况下就需要从接口层面进行验证
    2. 前后端传输,日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

接口测试工作流程

准备阶段(80%)

拿到开发的接口文档,并理解每个接口的参数及含义

了解被测试系统的业务流程

编写接口测试用例

执行阶段(10%)

测试用例/测试场景执行

测试数据/系统数据收集

分析阶段(10%)

数据汇总/日志分析

测试报告

接口测试用例编写

接口测试用例编写要点

测试每个参数类型不合法的情况

测试每个参数取值范围不合法的情况

测试参数为空的情况

测试参数前后台定义的一致性

测试每个参数的上下限(这里很容易出现bug,如果程序处理不当,可能导致崩溃)

测试每个参数取值不合理的情况

如果两个请求有严格的先后顺序,需要测试调转顺序的情况

接口文档

我们做接口测试,需要开发提供接口文档。最重要的有以下几点:

  1. 被测接口的地址
  2. 接口参数,以及各个参数的说明
  3. 必要的http头与http体(http头是可以自定义的,可以用来校验是否是自己人访问)
  4. 接口返回什么值,以及各个返回值的说明
  5. 接口是干什么的

什么是JSON

Json是一种数据载体

互联网本质就是数据传输,数据传输就需要数据载体。比如:页面信息就是存储在HTML这种数据载体中


header和入参有什么关系?

首先,它们确实都是发送给服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送给服务器,然后服务器后根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的

为什么要使用json

Json传输数据效率更高,所以部分场景下使用HTML与XML

但是json语言描述不及标签语言,所以部分场景下使用html与xml

如果传递少量数据,使用json

接口组成

  1. 接口说明
  2. 调用url
  3. 请求方法(get/post)
  4. 请求参数,参数类型,请求参数说明
  5. 返回参数说明

由接口文档可知,接口至少应该有请求地址,请求方法,请求参数(入参和出参)组成,部分接口有请求头header

标签: 接口测试接口测试