接口介绍:
简单的说:是指系统或组件之间的交互点,
通过这些交互点可以进行数据之间的交互
是数据交互的通道
接口的类型
接口测试分类由于多种,按照范围划分:系统之间的接口和程序内部的接口
系统之间的接口:多个内部系统之间的交互,内部系统与外部系统的交互。
程序内部的接口:方法与方法之间,模块与模块之间,函数与函数之间。
接口测试
接口测试主要测试数据的传递,交互,控制管理过程,以及相互的依赖关系。
接口测试的原理
模拟客户端发送请求,服务器接收请求后会进行相应的业务处理,并返回响应数据,校验预期数据与返回数据是否一致。
注意:http请求是使用tcp/ip协议来连接的。(TCP/IP三次握手)
接口测试的实现方式:
工具:Postman和Jmeter
代码:Python + Requests + Unittest
自动化接口测试的概念:
程序代替人工进行接口测试的过程。
HTTP协议:
HTTP协议是一个超文本传输协议,是一个基于请求与响应模式,应用层协议,应用非常广泛的协议。
七层网络架构:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
HTTP协议的特点(重点)
URL(重点)
URL:(Unifrom Resource Locator)统一资源定位符,定位互联网中资源的地址,HTTP使用URL来建立连接和传输数据。
URL的组成部分:
http://www.baidu.com/s?wd=马云&id=1
协议部分::“http”,常见的协议有HTTP,HTTPS、FTP等
域名部分:www.baidu.com,也可以使用IP地址作为域名使用
端口:端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
资源路径:/s 帮助对应服务器中代码,简单的说,就是接口的名称。
请求参数:查询参数部分:wd=马云&id=1可以允许有多个参数,多个之间用“&”作为分隔符
请求参数:wd=马云&id=1
HTTP请求
组成:
请求行:是指HTTP报文中,HTTP请求的第一行
请求头:HTTP请求报文中第一行之后,空行之前
请求体:HTTP请求报文中空行之后
请求行
组成:请求方法,资源,协议和版本
常用请求方法:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
其他请求方法(了解):
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需
请求行
POST http://demo.zentao.net/user-login.html HTTP/1.1
组成:请求方法,资源,协议和版本
请求方法:Get、Post、Put、Delete
请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:
User-Agent:描述浏览器类型
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
Content-Type:text/html; charset=utf-8
Content-Type:描述请求体中的数据类型
请求体
HTTP响应
http响应组成部分:状态行,状态头,状态体
HTTP响应状态行:
协议和版本:HTTP/1.1
状态码:200
1xx:请求已经被接收,需要进一步处理
2xx:成功
3xx:重定向
4xx:客户端错误
5xx:服务端错误
注意:如果出现了5xx的错误,既有可能是Bug也有可能是服务器环境问题,需要找开发进一步确认。
HTTP响应体:就是指服务器处理之后具体的响应数据,支持Json,Xml,Html,文本,图片等数据
常用状态码介绍
200:成功,标准HTTP协议中Get方法
201:修改或者新增数据成功,对应的请求方法是Post/Put
204:删除数据成功,对应的请求方法是Delete
400:客户端语法错误
401:没有登陆,没有得到权限(令牌错误,用户名或密码错误)
403:也没有得到授权,比如被防火墙拦截或者白黑名单等
404:请求资源不存在
500:服务器错误
503:服务器错误,过一段时间可能会恢复正常
接口规范
思考: 如何让前端开发与后台接口开发人员更好的配合,提高工作效率?
无规矩不成方圆,制定接口规范
. 传统接口风格
对用户进行操作的相关接口,包括增删改查
Restful
介绍:是指一种软件架构风格,而不是标准,是指一系列设计原则和约束条件
定义:如果一个架构的设计,符合REST设计原则和约束条件,那么久称为Restful
REST:是指表现层状态转化:就是指对某种资源数据的增删改查
RESTful接口特点
请求方式
获取操作:Get
新增操作:Post
修改操作:Put
删除操作:Delete
URL
不再是多种多样,URL的定义有特定的标准
HTTP响应状态码:
Get:200
Post:201
Put:201
Delete:204
RESTful架构特点
每个URL都是代表一个资源
客户端和服务器之间,传递资源的某种表现形式(比如:传递json,传递图片,传递文件等)
客户端通过Get、Post、Put、Delete四个请求方法,对服务器资源进行操作,改变服务器资源数据的状态。
接口测试最常用的数据类型是Json
前端:使用Node.js和Vue.js架构开发
后端:Spring全家桶(Springboot,Springcloud,SpringMVC,SpringData)
数据库:Mysql+Redis
消息队列:RabbitMQ
介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。
介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。
和手工测试的思路相同,包括使用测试方法论进行测试,比如:等价类、判定表、因果图、流程分析、场景分析、正交分析等
和手工测试不同的地方:
有接口独有的参数测试
正向:必填参数测试,必填+选填的参数组合测试,全部参数测试
反向(异常):
参数异常:多参,少参,无参,错误参数
数据错误:数据类型不符,数据长度,数据为空,错误数据
业务错误数据:根据实际的业务判断错误数据:比如手机号码中,输入不是手机号码的字符串。
单接口测试思路设计
1,设计接口用例的结构
ID,模块,用例名称,接口名称,URL,请求方式,请求头,请求参数类型,请求参数,预期结果,实际结果,操作步骤,优先级,前置条件
设计接口测试点
根据测试点,结合接口文档描述和需求描述,按照接口用例结构设计接口用例
注意 :接口用例中的预期结果一般是根据接口文档和需求来确定。但是实际工作中,很多异常场景都需要找开发确认清楚。
面试题 :一天能写多少个接口测试用例?
1,熟悉的项目,写的快,可以写一百多条
2,如果是不熟悉的项目,一天写50-100个也是可以的。
二、面试题:Get和Post的区别
1,咱们首先说了2个区别:
安全性:Get不安全,Post相对安全。但是他们都不安全,需要对敏感信息进行加密,扩展:常见的加密算法有哪些,怎么实现的
数据量:Get数据量没有Post大
2,然后咱们百度查询了Get和Post的区别。
发现网上有更详细的描述,除了我们说的两点外,还增加了2个点
Get的请求数据和Post请求数据的支持的编码格式不同,Get仅支持ASCII,Post比Get多。
Get效率比Post效率高
3,Get和Post的区别肯定不止这4个,具体信息需要大家网上多看多收集