http接口测试:了解协议、请求方法、响应状态码

版权声明:本文如果标明博主原创文章,若未经博主允许,则不得转载;若经博主允许,则转载或者引用本文内容请注明来源及原作者。欢迎知识经验进行交流和传播!文章来源: https://blog.csdn.net/Bee_AI/article/details/83685338

http接口测试:了解协议、请求方法、响应状态码

接口在各个系统间的重要性无需重申,主要体现在外部系统与系统之间以及内部各子系统之间的交互点。通过这些特定的交互点和一些特殊的规则标准(协议)来进行系统数据之间的交互,进而为了系统的安全性、稳定性以及系统异常处理能力等质量保证,接口测试显得尤为重要。

1 接口的类型

现在行业中所说的接口基本上都是基于协议来划分的,大致划分如下:

WebService接口

WebService接口是走应用层协议soap协议通过http传输,请求报文(客户端发送的请求主体内容)和响应报文(接口返回的响应主体内容)均为XML格式的。一般通过LoadRunner、jmeter与SoapUI工具进行测试调用。

Http API接口

Http API接口是走http协议,通过路径来区分调用的方法,请求报文一般是key-value形式的,返回报文一般是json串。一般通过LoadRunner、jmeter与postman工具进行测试调用。

RESTful 接口

REST仅是一种相对流行的前后端交互形式约定,算不上是技术标准。前端、后端分离的Web应用架构上,前端在专注页面的同时,也与后端进行数据的交互,后端则专注提供这种API接口。

2 TCP/IP协议

TCP/IP协议作为一组协议的代名词,实质为TCP/IP协议簇,包含了很多协议,其协议簇采用分层管理。在ISO参考模型标准中分为7层,从第一层到第七层分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而TCP/IP协议簇则采用了4个层,从第一层到第四层分别是:网络接口层、网络互连层传输层、应用层,各层作用如下:

网络接口层:此层是主机到网络的部分,主要由处理网络的硬件部分构成。NIC(Net Work Card,即:网卡)、光纤等均属于此层。此层对应ISO参考模型的物理层和数据链路层。

网络互连层:此层用于分组发往目标网络,负责在众多网络线路中选择其中一条传输线路。IP(Internet Protocol,即:网际协议)就属于此层。此层对应ISO参考模型的网络层。

传输层:此层用于提供正处于网络连接中的PC机之间直接的数据传输,应用层会把数据交给传输层传输。TCP(Transmission Control Prococol,即:传输控制协议)和UDP(User Data Protocol,即:用户数据协议)就属于此层。此层对应ISO参考模型的传输层。

应用层:此层是用户可以直接进行操作的一层,决定了向用户提供服务时的通信内容。HTTP(HyperText Transfer Protocol,即:超文本传输协议)、FTP(File Transfer Protocol,即:文件传输协议)等协议均属于此层。此层对应ISO参考模型的会话层、表示层和应用层。
在行业中的接口测试也基本是基于http协议的。

3 Http请求与响应

3.1 Http请求

客户端想得到服务器端的响应消息,必须发送一个http请求消息过去。其http请求消息 = 请求行 + 请求头 + 空行 + 请求报文
图1   http请求消息示意图
其中,请求行信息为请求方法、URL、协议版本,比如:POST http://www.qq.com HTTP/1.1。本文将http协议支持的请求方法进行详细的对比说明:

Http协议定义了多种与服务器交互的方法,其所支持的请求方法:HTTP1.0版本3种(POST、GET、HEAD)、HTTP1.1版本新增5种(DELETE、PUT、OPTIONS、TRACE、CONNECT),共8种。

POST:数据提交。POST方法一般用于向服务器提交表单数据,将客户端的数据通过请求体发送给指定服务器端。因为数据在请求体中,所以该请求可能会修改现有资源、可能会创建新的资源,甚至二者均会发生;但是强调一点,POST方法在修改现有资源时一般只修改其部分内容,POST方法在创建新的资源之前是不明确需要操作的资源对象,是由http服务器给新创建的资源对象生成一个唯一URI。

GET:获取资源。GET方法一般用来从服务器上获取资源,服务器端接到GET请求后,根据请求报文中的拼接在URI上的参数将客户端所需要的相应资源返回给客户端。因为GET方法可能会被网络蜘蛛等随意访问,所以使用GET方法一般只用在获取资源,而不是被用于产生其它作用的操作中。

HEAD:获取响应头。HEAD方法和GET方法相似,也一般用来从服务器上获取资源,但是服务器端接收到HEAD请求后,只会返回相应的响应头,不会将响应消息全部资源返回,这也体现它的好处,只获取关于该资源的信息,即元数据。

DELETE:删除文件。DELETE方法用于请求服务器删除URI指定的页面资源,其自身不带验证机制的,但是在REST标准中可以用于做相应API的删除功能。

PUT:向指定的资源地址上传最新文件。PUT方法和POST方法相似,一般用于上传文件、提交数据。但是PUT请求必须明确操作的资源对象,如果对象存在,那么应该将目标对象进行全部替换;如果对象不存在,那么应该重新创建需操作的对象。另外PUT方法其自身是不带验证机制,也就是说任何人都可以上传提交数据,考虑到安全性,一般不推荐在上传文件时使用,在这一点上,DELETE方法是相同的,也是自身不带验证机制。

OPTIONS:查询支持的方法。OPTIONS方法用于查询服务器能做出响应的请求方法,其返回内容就是服务器端所支持的http请求方法,同时也允许客户端查看服务器性能,测试服务器功能是否能正常运作。

TRACE:追踪路径。TRACE方法用于回显服务器接收到的请求,测试或诊断。

CONNECT:连接代理。CONNECT方法一般用于SSL加密服务器的链接,要求用隧道协议连接代理。

3.2 Http响应

当服务器端接收到客户端发送的请求后,一般会返回一个http响应消息,其http响应消息 = 状态行 + 响应头 + 空行 + 响应报文
图2  http响应消息示意图
其中,状态行信息为http版本、状态码、以及状态解释语句,比如:HTTP/1.1 206 Partial Content。本文将其中5类常用的响应状态码详细说明:
1开头表示提示信息——说明http请求已接收,在进行下一步处理

状态码 状态解释语句
100 继续(Continue)

2开头表示请求成功——说明http请求已被成功接收

状态码 状态解释语句
200 请求成功(OK)
204 服务器正确处理请求后没有报文实体要返回(No Content)
206 服务器正确处理部分请求后并返回相应的报文实体(Partial Content)

3开头表示重定向——说明完成http请求需要更进一步的操作处理

状态码 状态解释语句
301 永久转移到新的地址(Moved Permanetnly)
302 暂时转移到新的地址,不改变其内容(Found)
304 未修改(Not Modified)

4开头表示客户端错误——说明http请求无法实现或者有语法错误

状态码 状态解释语句
400 错误请求,发送的请求有语法错误(Bad Request)
401 访问页面未得到http认证授权(Unauthorized)
403 禁止访问(Forbidden)
404 未找到相关页面资源(Not Found)
408 服务器端等待客户端请求时间超时(Request Time-out)
414 请求URI太长(Request-URI Too Large)

5开头表示服务器端错误——说明服务器没能完成合法请求

状态码 状态解释语句
500 服务器内部有异常错误,无法完成请求(Internal Server Error)
501 未实现(Not Implemented)
503 服务器处于停机状态,不可用(Service Unavailable)

4 Http接口测试侧重点

基于http协议的接口,测试重点在于检查数据的交换、传递和控制管理过程,以及系统之间相互的逻辑依赖关系,所以测试接口时主要是通过工具或代码模拟http请求的发送与响应的接收。

根据API接口文档(接口说明、请求方法、调用URL、请求参数、参数类型、请求参数说明、返回参数说明以及返回示例),其测试检查重点在于:
(1)接口返回的数据与预期结果是否一致
(2)接口参数的边界值,传递的参数为负数或极值时是否可以处理
(3)接口的容错性,错误传输时是否可以处理
(4)接口的性能
(5)接口的安全性
(6)其它方面

若对大家有用,感谢点赞或评论;若有不足之处,也望大家评论进行指正或完善。相信这是互相进步的开始!

猜你喜欢

转载自blog.csdn.net/Bee_AI/article/details/83685338