接口测试之基础

Posted zouzou-busy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试之基础相关的知识,希望对你有一定的参考价值。


接口(API)
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作的细节

什么是接口测试:
接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系,其中接口协议分为:HTTP,WebServices,Dubbo,Thrift,Socket类型


为什么要进行接口测试
接口测试实施在多系统的平台架构下,有着极为高效的成本收益比
1.节约了测试成本
根据数据模型推算,底层的一个程序bug可能引发UI层的8个左右的bug,而且底层的bug更容易引起全网的死机,接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案

2.接口测试门槛较低
接口测试是站在用户的角度对系统接口进行全面高效持续的检测

3.效益更高
将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效率产出就越高

Request既请求,由客户端向服务端发出,可以将Request划分为四部分内容
Request Method:请求方法
Request URL:请求链接
Request Headers:请求头
Request Body:请求体

Request Method
请求方法。常见的有两种类型,GET和POST
GET用于信息获取,而且应该是安全的和幂等的(幂等的意思就是一个操作不会修改状态信息,并且每次操作的时候都返回同样的结果)从发送请求的角度,GET请求相当于我们在数据库中做了查询的操作,这样的操作不影响数据库本身的数据

POST表示可能会修改服务器上资源的请求,也想当于在数据库中做了修改的操作,会影响数据库本身的数据

除了常规的GET,POST请求,另外还有一些请求方式,如HEAD,PUT,DELETE等
方法 描述
GET 并返回实体主体
POST 向指定资源提交数据进行处理请求,数据被包含在请求体中
PUT 从客户端向服务器传送的数据取代指定的文档的内容,相当于更新
PATCH 对PUT方法的补充,用来对已知资源进行局部更新
DELETE 请求服务器删除指定的页面
HEAD 类似于GET请求,只不过返回的响应中没有具体的请求,用于获取报头
CONNECt HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 允许客户端查看服务器的性能
TRACE 回显服务器收到的请求,主要用于测试或诊断

Request Headers
请求头,用来说明服务器要使用的附加信息,比较重要的有Cookie,Referer,User-Agent等
Accept:请求报头域,用于指定客户端可接受哪些类型的信息

Accept-Language:指定客户端可接受的语言类型

Accept-Encoding:指定客户端可接受的内容编码

Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置,从HTTP1.1开始,Request必须包含此内容

Cookie:也常用Cookies,是网站为了辨别用户进行Session跟踪而储存在用户本地的数据,Cookies的主要功能是维持当前访问会话

Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计,做防盗链处理等

User-Agent:简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本,浏览器及版本等信息,在做爬虫时加上此信息可以伪装为浏览器,如果不加很可能会被识别为爬虫

content-type:既Internet Media Type,互联网媒体类型,也叫做MIME类型,在HTTP协议消息头中,使用它来表示具体请求中的媒体类型信息,例如application/x-www-form-urlencoded表示表单数据,text/html代表HTML格式,image/gif代表GIF图片,application/json代表json类型



Request Body
既请求体,一般用于POST请求中,主要定义向服务器提交的数据类型,而对于GET请求Request Body则为空
比如在登录之前我们填写了用户名和密码信息,提交时这些信息就会以Form Data的形式提交给服务器,此时注意Request Headers中指定了connect-Type为application/x-www-form-urlencoded,只有设置connect-Type为application/x-www-form-urlencoded才会以Form Data形式提交,另外我们可以将Connect-Type设置为application/json来提交Json数据,或者设置为multipart/form-data来上传文件

常用Connect-Type和POST提交数据方式的关系
Connect-Type 提交数据方式
application/x-www-form-urlencoded 表单方式提交
multipart/form-data 表单文件上传提交
application/json 序列化Json数据提交
text/xml XML数据提交
application/x-www-form-urlencoded与multipart/form-data区别
在没有type=file时候,用默认的application/x-www-form-urlencoded就行
在有type=file时,要用multipart/form-data编码方式,浏览器会把表单以控件为单位分割,并且为每个部分加上Content-Disposition(from-data或file),Content-Type(默认为text/plain)

以上是关于接口测试之基础的主要内容,如果未能解决你的问题,请参考以下文章

Python-接口自动化测试之接口基础

测开基础之Mock接口测试

ApiPost自动化测试基础之:接口参数依赖的情景处理

接口测试基础

0基础小白如何学接口测试?一文讲解接口自动化之python案例脚本

ApiPost自动化测试基础之:流程测试