啥是接口?为啥要做接口测试?

前言

前几天画总体架构图,我们市场经理问我啥是接口?我说就是数据互传的一个通道,他又问为啥要有接口呢?我当时居然没想出来,哎,所以上网查了查资料,写篇博客吧。废话不多说!

啥是接口?

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

为啥要有接口呢?

通俗点说就是,如果你公司要跟其他公司合作,你会把你公司的数据库给别人吗?显然是不可能的。那你又说了,既然他们要数据,那我们用U盘拷贝一份过去呗,那如果是实时更新的数据呢?然后你又说了,那我们公司写数据的时候再向他们数据库写一份不就好了,这样确实也是个办法,那么问题又来了,那他们的数据库表跟你的不一样怎么办?他们改一下表,你也改一下代码吗?显然不可能。为了给数据定义一个共享标准,就出现了接口这个东西,你公司就将接口定义好,我们就只提供一个写好的方法让别的公司来获取数据,他引用我们提供的接口就能使用我们写好的方法,从而达到数据共享的目的。

接口类型有那些?

接口一般就分为两种,一种就是系统内部的接口,另一种就是系统对外的接口
系统对外的接口:就是刚才上面说的那种了,要获取别人的资源,就得去引用别人的接口。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的系统,例如bbs系统,有登录模块,发言模块。你发帖就必须先登录,两个模块之间交互就会抛出接口,供内部系统进行调用。

接口的分类

接口分类主要也是两种,一种是webservice接口,另一种是httpapi接口
  webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
  httpapi接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
  json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。)

接口测试的本质及其工作原理

接口简单的理解就是一个URL,工作原理就是URL通过get或者post请求像服务器发送请求,然后经过服务器接收到,返回相应的数据。接口的本质其实也就是数据的传输和接收。

什么是接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的数据。

为啥要做接口测试?

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

怎么做接口测试?

由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、还有最近比较火的Apifox等。也可以用接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。

接口测试测试点是什么?

目的:测试接口的正确性和稳定性;
原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;
重点:检查数据的交换,传递和控制管理过程,还包括处理的次数,输入异常数据会返回什么数据,有没有做校验等等;
核心:持续集成是接口测试的核心;
优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);
用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);
PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能。

状态码

做接口测试一定要知道每种状态码代表啥含义,记住最常见的几种就可以了
1)2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2)3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了。
3)4代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面。
4)5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值