API测试概述

接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在ሀ、狭义的⻆度上指的是对应⽤程序

接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性

和性能。

API测试包括协议(http协议)测试工具(jmeter   postman  代码三部分

目前互联网的开发模式 :前后端分离

前端拿到数据后,交给后端处理,后由前端在页面上呈现出来

金字塔模型

基于上⾯的API的定义和思考维度,在结合⽬前互联⽹产品的开发模式(前后端分离的开发模式),在具体到成测

试的⼯作模型。或者更加本质的说,测试的⼯作可以分为两个维度:质量管理+测试效率,API测试是提升测试效率

最有利的⼀个⽅式。具体⻅⾦字塔的模型

 

 

resful api自动化测试 自动化api测试的优点_服务端

 

 主要分为三个维度:  UI测试  service测试 unit测试

在服务层的测试维度中,主要针对的是业务接⼝的测试,来验证接⼝功能是否完整,如内部逻辑,异常处

理。这样的⽬的是验证接⼝它是否稳定,所以接⼝的测试相对⽽⾔⽐较容易⽽且更加⾼效,测试⽤例的维护成本也

。有很多主流的测试⼯具都可以做接⼝测试,如PostMan,JMeter,SoupUi等

UI→功能测试    service→API测试         unit→单元测试

 

HTTP的前世今生(超文本传输协议)1989年3月诞生

HTTP的诞⽣,产⽣了很多传奇的故事,这中间⽹景公司微软公司最典型的是浏览器世纪之战,导致⽹景时代的

结束,微软时代的开始,但是同时也是Firefox时代的开始。(火狐)

HTTP/0.9

HTTP从发展开始,⼀直没有⼀个统⼀的标准,最典型的版本是HTTP/0.9

HTTP/1.0

HTTP协议作为正式的标准是在1996年的5⽉份,版本被命名为HTTP/1.0的版本。

HTTP/1.1(是目前最主流的 版本)

1997年发布的HTTP/1.1的版本是⽬前⽐较主流的HTTP的版本,很遗憾的是从HTTP/1.1的版本之后,就⼀直停⽌不

前,⽽且⽬前⼀直使⽤的也是HTTP/1.1的版本。

HTTP/2.0  在分布式架构以及微服务器架构中,基于新一代的架构设计有了gRPC的协议,是基于http/2.0来设计的

新⼀代的HTTP协议是HTTP/2.0的版本,它⽀持流式的处理,以及进⾏了很多的优化,但是很遗憾的是没有被⼤规

模的应⽤。在分布式架构以及微服务架构中,基于新⼀代的架构设计有了gRPC的协议,它就是基于HTTP/2.0的版

本来进⾏设计的。

 

 

⽹络分层

 

TCP/IP分层管理

TCP/IP协议按层次主要为:应⽤层,传输层,⽹络层,数据链路层

应⽤层

应⽤层决定了向⽤户提供应⽤服务时通信的活动。⽽HTTP的协议就是属于应⽤层的协议。应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议

传输层

应⽤层的下层是⽹络传输层提供处于⽹络连接中的两台计算机之间的数据传输。

TCP/IP通信传输流  流程图

resful api自动化测试 自动化api测试的优点_resful api自动化测试_02

 

 

三次握⼿

为了确保把数据能够送到⽬标的服务器,TCP协议内部使⽤了三次握⼿的策略机制,也就是说在TCP协议中,TCP

把数据包送去后,TCP会进⾏确认对⽅是否收到,或者是确认是否成功送达,那么三次握⼿主要使⽤了TCP的标

志。

第一次握手:client向server发送resquest请求

第二次握手:server收到请求,后发送数据包给client确认连接

第三次握手:client和server建立正确连接,client开始向server传输数据

 

 

 

 

URI和URL

URI(采用一种特定语法标识一个资源的字符串)

可以称为统⼀资源标识符,⽽URL是统⼀资源定位符。URI可以理解为标识某⼀个互联⽹的资源,⽽URL表示的

资源的地点。HTTP协议中使⽤URI定位到互联⽹上的资源,这也是为什么互联⽹任意位置的资源我们都能够获取到

的原因。

HTTP协议:

HTTP是应⽤层的协议,它不需要刻意的去关注底层⽹络传输层协议的东⻄。在整体应⽤层的协议中,通俗的说在

整个API的测试维度上,需要关注的是⼀个完整的HTTP请求流程,请求⽅法,请求头响应头,COOKIE请求流程,

SESSION的请求流程和TOKEN的请求流程,以及HTTPS的请求流程。

 

 

 

http请求流程(client客户端 server服务端)

 

resful api自动化测试 自动化api测试的优点_服务端_03

client与server建立tcp请求

client向server发送request请求

response(回复)响应请求

client和server关闭请求

客户端向服务端发送请求主要包括(请求地址 请求方法  请求参数 请求头)response响应请求包括(协议状态  响应数据   响应头)


持久连接

简单来说就是输入一个网址,当你的浏览器没有断开连接,他就一直可以保持连接。  它的特点是只要客户端或者是服务端没有明确断开连接,那么就得⼀直保持TCP的连接请求,持久连接减少了TCP连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。


 

 

通信模式

同步通信(必须回应)

 

在客户端与服务端在进⾏交互的时候,通信模式主要分为同步通信和异步通信同步通信简单的可以理解为客户端

发送请求给服务端,服务端必须得回应客户端的请求。所以同步通信它存在如下的缺点,具体为:

  • 容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求
  • 如果请求是存在⼤的计算量和逻辑存在问题,就会导致请求堵塞,后⾯的都积压

异步通信

 

由于同步交互存在超时以及堵塞的情况,所以也就有了异步的交互在异步的交互中客户端和服务端互相不需要

关注对⽅的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的

传递来进⾏交互的

常用请求方法

在HTTP的应⽤层协议中,常⽤的请求⽅法具体为GET,POST,PUT,DELETE的请求⽅法(GET  POST   PUT   DELETE)

resful api自动化测试 自动化api测试的优点_resful api自动化测试_04

 

  • GET 获取资源   
  • POST 处理资源    修改资源   删除资源
  • PUT修改资源
  • DELETE 删除资源

常用协议状态码


• 200 请求成功
• 301 永久重定向
• 302 临时重定项
• 400 Bad Request 客户端请求错误  测试的问题
• 401 Unauthorized(没有权限访问系统)
• 403 Forbidden(有权限但禁止访问)
• 404 请求的资源不存在
• 405 不被允许的请求方法
• 500 代码,服务器内部错误   后端的问题
• 504 GateWay Timeout(client→Gateway→server)网关超时,到不了服务端,显示504

 

resquest/response

         see-cookie   设置cookie 响应头里面的set-cookie告诉客户端吧此内容放在cookie中,下次请求携带coolie的请求

常用请求数据格式

           

resful api自动化测试 自动化api测试的优点_HTTP_05