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

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)其它方面

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值