API测试概述
接⼝测试⼜被称为API测试,是软件测试的⼀种测试模式,它包含了两个维度,在ሀ、狭义的⻆度上指的是对应⽤程序
接⼝的功能进⾏测试,在⼴义的维度上是指集成测试中,通过调⽤API测试整体的功能来完成度,可靠性,安全性
和性能。
API测试包括协议(http协议)测试工具(jmeter postman 代码三部分
目前互联网的开发模式 :前后端分离
前端拿到数据后,交给后端处理,后由前端在页面上呈现出来
金字塔模型
基于上⾯的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通信传输流 流程图
三次握⼿
为了确保把数据能够送到⽬标的服务器,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服务端)
client与server建立tcp请求
client向server发送request请求
response(回复)响应请求
client和server关闭请求
客户端向服务端发送请求主要包括(请求地址 请求方法 请求参数 请求头)response响应请求包括(协议状态 响应数据 响应头)
持久连接
简单来说就是输入一个网址,当你的浏览器没有断开连接,他就一直可以保持连接。 它的特点是只要客户端或者是服务端没有明确断开连接,那么就得⼀直保持TCP的连接请求,持久连接减少了TCP连接的重复连接和断开造成的性能损耗,减轻了服务端的负载,也提升了整体相求响应时间的性能。
通信模式
同步通信(必须回应)
在客户端与服务端在进⾏交互的时候,通信模式主要分为同步通信和异步通信。同步通信简单的可以理解为客户端
发送请求给服务端,服务端必须得回应客户端的请求。所以同步通信它存在如下的缺点,具体为:
- 容易超时,客户端发送请求后,服务端迟迟没有回应客户端的请求
- 如果请求是存在⼤的计算量和逻辑存在问题,就会导致请求堵塞,后⾯的都积压
异步通信
由于同步交互存在超时以及堵塞的情况,所以也就有了异步的交互。在异步的交互中,客户端和服务端互相不需要
关注对⽅的存在,只需要关注对应的MQ的消息,客户端与服务端的交互主要是会通过MQ的消息中间作为消息的
传递来进⾏交互的
常用请求方法
在HTTP的应⽤层协议中,常⽤的请求⽅法具体为GET,POST,PUT,DELETE的请求⽅法(GET POST PUT DELETE)
- 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的请求
常用请求数据格式