接口测试是什么?为什么要做接口测试?

article/2025/9/2 10:01:52

 前言

 

接口测试现在已经成为测试工程师的必备技能

我是常常安利身边的工程师一定要精通接口测试,注意,这里是精通,不是知道或了解。原因很简单,你点开招聘网站上各大公司对于测试工程师的要求,就能看到接口测试已经成为测试招聘中一项必备的技能了。

 

一、基础介绍

1、什么是接口
我们常说的接口一般指2种

1)API:应用程序编程接口
2)GUI:图形用户界面(接口)
这里我们主要说API——接口测试
 
2、接口测试的目的
测试接口的正确性和稳定性(持续集成是接口测试的核心)
 
3、接口测试的原理
模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。
 
4、接口测试的重点
检查数据的交换,传递和控制管理过程,还包括处理的次数
 
5、接口测试用例设计
接口测试对象主要为接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情,且实际过程中任意接口的变动都可能导致我们接口测试用例不可用,
所以通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常)。
PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能。
 
6、接口测试的优点
天生为高复杂性的平台带来高效的缺陷监测和质量监督能力;平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本)

二、接口分类及分析方法,测试重点

1、功能分类
1)功能间接口:系统中功能模块间的接口,比如:ERP系统中采购模块和库存模块之间的接口
     特点:一般部署在同一个服务器中,并且使用同一个数据库
     测试方法:通常采用黑盒测试方法,注意接口数据在不同模块间的走向;尤其是接口间的逻辑控制关系
     例如:销售发货,检查库存可用量,如可用量不足,则不允许发货
2)系统间接口:不同系统间的接口,比如:银行的各个系统间的接口。核心系统和各个外围系统之间都是此类接口
     特点:部署在不同服务器上,不仅采用不同的数据库,而且数据库类型还有可能不同
     测试方法:通常采用白盒测试方法,关注系统间接口的实现方式
     例如:接口文件类型、接口文件格式、接口文件处理方式等
 
2、类型分类
1)业务接口:系统或功能间有业务逻辑关系,比如:ERP系统中,采购入库后,会生成库存入库单,影响可用量等,也可称为:联机接口
     特点:接口间有业务逻辑的上下游关系,可能会涉及跨系统或者模块的逻辑控制,以及反向操作
     测试方法:通常黑盒测试方法,注重分析业务逻辑,采用路径覆盖法分析,重点:注意正向反向操作的测试
2)数据接口:接口数据有上下游关系,比如:企业征信系统,要通过数据交换平台获取核心系统的数据,也可称为:批量接口
     特点:系统间只存在数据的上下游关系,而且都是进行批量处理
     测试方法:通常采用白盒测试方法,关注数据的文件格式,以及记录数及内容是否正确,还要考虑数据加密问题
 
3、数据方向分类
1)单向接口:数据在接口中是单向流动,但根据实现方式分为单项推或单项取
     比如:数据仓库和各系统间的接口基本都是单项的,一方面前端系统向数据仓库推送数据,一方面后端系统从数据仓库取数据仓库提供的数据
     特点:不管是单向推还是单项取,都会有一个FTP地址,存放指定数据文件,并且有定时存取规则,可从日志中查看结果
     测试方法:通常采用黑盒白盒结合的测试方法,着重数据文件格式,是否按照规则存取等
2)双向接口:两个系统间的数据有往来,比如:综合报文处理系统和核心系统,从何报文处理系统即接受核心系统发送的数据,又要将处理结果反馈给核心系统
     特点:可以将不同数据方向的接口分开分析,当做两个单项接口,注意来往数据通常具有关联性
     测试方法:通常采用黑盒白盒结合的测试方法,注重来往数据的关联性,合理设计测试数据,制定测试执行计划
 
4、数据读写方式分类
1)单独读写接口:数据在接口中不仅单项流动,而且都是读或者写的单独操作,比如:前面提到的各系统和数据仓库的数据交换
     特点:与单项接口相似
     测试方法:黑盒白盒相结合的方法,注意读写的权限,以及单接口功能未正常实现时,系统是否有异常处理机制
2)即读又写接口:系统间接口处理时,即读取又写入,比如:贷款合同管理和核心系统,先读取核心系统中的合同信息,添加合同成功后,又将合同编号回写到核心系统中
     特点:一般都是业务类接口,非数据类接口,并且都有逻辑控制的要求
     测试方法:通常采用黑盒测试方法,注意业务逻辑控制,不仅要检查读取的数据是否正确,还要检查回填数据是否正确
 
5、层级分类
1)直接(联机)接口:系统或模块间的接口是直接联通的
     特点:直接联通
     测试方法:黑盒白盒相结合的方法,根据接口特征分析即可
2)间接(非联机)接口:系统间接口不是直接联通,通过第三方中转后,才进行连接,比如:综合报文系统和核心系统,中间隔着一个ESB
     特点:接口间的中间层,会进行处理,才会将数据发送到接口系统,这个不会涉及业务逻辑,只是数据格式转换
     测试方法:黑盒白盒相结合的方法,可直接忽略中间层的存在,设计测试用例;但出现问题时,一定要注意中间层处理是否正确,并且,测试中间层异常时,系统处理是否正确

三、为什么要做接口测试

      1、现在很多系统前后端架构是分离的,因为不同端(前段,后端)的工作进度不一样,所以我们要针对最开始出来的接口,以及需要调用其他公司的(银行,支付宝,微信,qq等)一些接口进行接口测试及验证数据,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

      2、如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移也叫测试左移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。

  测试左移这个是一次偶然的机会在群里看到的,孤陋寡闻的我,第一次看到,也是一知半解,后来查了一些资料供大家参考。

  测试左移的原则支持测试团队在软件开发周期早期和所有干系人合作。因此他们能清晰地理解需求以及设计测试用例去帮助软件“快速失败”,促使团队更早的修改所有的bug。  

  测试左移并没有什么独特的,只是让测试人员在软件开发生命周期内更早的参与进来,同时让他们去理解需求、软件设计、软件架构以及软件功能,也让他们去向客户、商业分析师和开发人员问问题,寻找答案,提供反馈结果已达到支持团队的工作得可能性。参与和理解会使测试人员获取产品完整的知识,彻底想清楚各种场景,根据软件行为设计实时的场景,这些都会帮助团队在编码完成之前识别出一些缺陷。这样也可以更好的的体现我们作为一个QA的价值体     

  简单概括:

①.越底层发现bug,它的修复成本是越低的。

②.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

③.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

④.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

⑤. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

⑥.   现在很多系统前后端架构是分离的,从安全层面来说:

(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

 

四、怎么做好接口测试

1、接口正确性是双方保障,都要进行测试
 
2、根据接口类型,合理进行测试分析,注意测试重点
 
3、注重业务逻辑分析,包括正向反向操作
 
4、注重数据文件检查
 

五、接口测试的工具

可以进行接口测试的工具很多,这里简单介绍几个:
 
1、loadrunner:一款商业性能测试工具,用来做接口测试,很好很强大
 
2、jmeter:一款开源的性能测试工具,操作简单,方便,既有jdbc request操作数据库数据,也有http request和soap request应对测试
 
3、poster:火狐浏览器自带接口测试工具,插件中安装即可,界面简单明了,容易上手
 
4、postman:谷歌浏览器的扩展工具,谷歌商店中选中安装,界面同poster差别不大,界面简洁
 
5、soapui:开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试;
          该工具既可作为一个单独的接口测试工具使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。

写在最后

以保证系统的正确和稳定为核心,以持续集成为手段,提高测试效率,提升用户体验,降低产品研发成本,关注持续集成是接口测试的灵魂,否则接口测试带来工作量会成指数增长!


http://chatgpt.dhexx.cn/article/w4jVfADl.shtml

相关文章

如何做接口测试

文章目录 前言一、什么是接口、接口测试1.接口2.接口测试 二、进行接口测试的基本流程1.需求获取2.测试计划编写3.测试用例设计、评审4. 测试执行5.测试报告、评估 三、接口测试思路四、接口测试工具 前言 一、什么是接口、接口测试 首先进行接口测试之前,先了解什…

接口测试需要怎么做?

接口测试需要怎么做? 什么是接口测试?接口测试到底测什么?如何进行接口测试?SSL-Pinning的问题及解决方案接口测试自动化回归测试接口自动化回归测试方案接口测试的更多可能参考文献 关注【郑大钱呀】[公][众][号],回复…

接口测试到底怎么做?

01 通用的项目架构 02 什么是接口 接口:服务端程序对外提供的一种统一的访问方式,通常采用HTTP协议,通过不同的url,不同的请求类型(GET、POST),不同的参数,来执行不同的业务逻辑。 …

一篇文章,教你彻底掌握接口测试!

一、什么是接口测试? 所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输出,看看是否满足接口规范所规定的功能、…

ES7新特性async/await详解

一、async/await的用法 async用于修饰一个函数使函数返回一个Promise 对象。 async function testAsync() {return "hello async"; }const result testAsync(); console.log(result);await必须在用async修饰的函数中使用,await用于修饰一个语句&#x…

Elasticsearch 7新特性

Elasticsearch是一款强悍的分布式搜索和分析引擎,以下简称为ES,通过本文我简单介绍下ES7部分新特性,内容包括: 聚合查询的优化ES7中索引type被移除索引创建默认1个分片优化查询速度hits.total返回对象_flush和_force_merge不再强制…

ES7的新特性

1.新增了includes的数组查找方法 使用场景:确认数组中有我们需要查找的内容 在ES7之前,我们接触到的数组方法可以通过filter或者indexOf 如果使用filter 可以直接筛选之后输出,如果是indexOf则根据返回值来判断是否在当前数组中。 如果返回…

【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战

系列目录 【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战 本文目录 系列目录前言什么是RPC?Feign和OpenFeign都是什么?HTTP调用 vs Feign(RPC)调用单独使用Feign实战Feign核心源码解读Feign整体设计架构Spring Cl…

聊聊 Feign 的实现原理

What is Feign Feign 是⼀个 HTTP 请求的轻量级客户端框架。通过 接口 注解的方式发起 HTTP 请求调用,面向接口编程,而不是像 Java 中通过封装 HTTP 请求报文的方式直接调用。服务消费方拿到服务提供方的接⼝,然后像调⽤本地接⼝⽅法⼀样去…

简单谈谈Feign

简单谈谈Feign 文章目录 简单谈谈Feign前言Feign属于RPC嘛? 原理简单图解原理简述Feign.Build动态代理工厂InvocationHandlerFactory动态代理类FeignInvocationHandler方法处理器MethodHandler 总结 本文只是简单粗略的分析一下feign的源码与过程原理 前言 Feign是…

Feign 原理 (图解)

疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 面试必备 面试必备 【博客园总入口 】 疯狂创客圈 经典图书 : 《SpringCloud、Nginx高并发核心编程》 大厂必备 大厂必备 大厂必备 【博客园总入口 】 入大厂涨工资 必备的 …

Feign详解与实例

基本介绍 Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了调用目标微服务时,需要不断的解析/封装json 数据的繁琐。Feign集成了Ribbon。Ribboneureka是面向微服务编程,而Feign是面向接口编程。 Fegin是一个…

Feign使用和原理的总结

官方参考 https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/ 使用 引入依赖 <properties><java.version>1.8</java.version><spring-cloud.version>2021.0.1</spring-cloud.version></properties><depen…

Feign的介绍

Feign是springcloud里面的一个功能组件&#xff0c;那么它是实现一个什么功能呢&#xff1f; 首先我们可以先从字面意思上去理解一下它&#xff0c;Feign&#xff0c;英文翻译过来就是伪装的意思&#xff0c;实际上它的功能也是和伪装相关的&#xff0c;在我们之前在客户端配置…

FeignClient原理解读

FeignClient原理解读 简介源码解读feign负载ribbon源码解读eurake的ribbon原理是&#xff1a;调度原理&#xff1a; 笔记参考文献 简介 这一章节主要介绍feignClient的地址如何来&#xff0c;如何从feign Server注册中心寻址和调用。 源码解读 在解读源码之前&#xff0c;建…

Spring Cloud-Feign设计原理

什么是Feign&#xff1f; Feign 的英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c; 是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#xff0c;而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解&am…

再学一下Feign的原理

简介 Feign是Spring Cloud Netflix组件中的一个轻量级Restful的HTTP服务客户端&#xff0c;它简化了服务间调用的方式。 Feign是一个声明式的web service客户端.它的出现使开发web service客户端变得更简单.使用Feign只需要创建一个接口加上对应的注解, 比如FeignClient注解。…

Feign的底层原理

Feign的底层原理 1 EnableFeignClients2 根据接口上的注解创建RequestTemplate3 发送请求 1 EnableFeignClients 这个注解标注在springboot的启动类上,作用是开启feign接口扫描 FeignClientsRegistrar.registerFeignClients()扫描被FeignClient标识的接口生成代理类 public vo…

深入理解Feign之源码解析

转载请标明出处&#xff1a; https://blog.csdn.net/forezp/article/details/73480304 本文出自方志朋的博客 出自方志朋的博客 个人博客纯净版&#xff1a;https://www.fangzhipeng.com/springcloud/2017/08/11/sc-feign-raw.html 什么是Feign Feign是受到Retrofit&#xff…

SpringCloud 中Feign原理(图解)

1 SpringCloud 中Feign原理 1.1 Feign简介 Feign是Netflix公司开源的轻量级rest客户端&#xff0c;使用Feign可以非常方便的实现Http 客户端。Spring Cloud引入Feign并且集成了Ribbon实现客户端负载均衡调用。 1.2 Feign远程调用的基本流程 Feign远程调用&#xff0c;核心就是…