接口介绍:
简单的说:是指系统或组件之间的交互点,
通过这些交互点可以进行数据之间的交互
是数据交互的通道
接口的类型
接口测试分类由于多种,按照范围划分:系统之间的接口和程序内部的接口
系统之间的接口:多个内部系统之间的交互,内部系统与外部系统的交互。
程序内部的接口:方法与方法之间,模块与模块之间,函数与函数之间。
接口测试
接口测试主要测试数据的传递,交互,控制管理过程,以及相互的依赖关系。
接口测试的原理
模拟客户端发送请求,服务器接收请求后会进行相应的业务处理,并返回响应数据,校验预期数据与返回数据是否一致。
注意:http请求是使用tcp/ip协议来连接的。(TCP/IP三次握手)
接口测试的特点(重点*面试题)【为什要进行接口测试】
- 低成本高收益
- 提前介入测试
- 可以发现页面操作发现不了的问题
- 和单元测试相比更贴近用户交互(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化和持续集成)
接口测试的实现方式:
工具:Postman和Jmeter
代码:Python + Requests + Unittest
自动化接口测试的概念:
程序代替人工进行接口测试的过程。
HTTP协议:
HTTP协议是一个超文本传输协议,是一个基于请求与响应模式,应用层协议,应用非常广泛的协议。
七层网络架构:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
HTTP协议的特点(重点)
- 支持客户端和服务器模式
- 简单快速:通过URL建立连接和传输数据,而URL结果简单,数据量不大,所以简单快速
- 无状态:就是指不会保存状态数据
- 无连接:用完就扔,不是不建立连接,而是指建立连接之后处理完数据就会断开连接
- 灵活:支持多种类型:json,html,xml
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:描述请求体中的数据类型
请求体
- Get请求没有请求体
- 经常Post方法中使用请求体
- 请求体的数据类型有:Json,Text,图片,表单,多媒体
- 请求体经常与Content-Type和Content-Length结合使用
HTTP响应
http响应组成部分:状态行,状态头,状态体
HTTP响应状态行:
-
协议和版本:HTTP/1.1
-
状态码:200
-
1xx:请求已经被接收,需要进一步处理
-
2xx:成功
-
3xx:重定向
-
4xx:客户端错误
-
5xx:服务端错误
注意:如果出现了5xx的错误,既有可能是Bug也有可能是服务器环境问题,需要找开发进一步确认。
- 状态消息:OK
- HTTP响应头:描述服务器相关信息的数据,可以用来通知客户端怎么处理返回的响应数据
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
2.2 技术架构图
5. 接口测试流程(非常重要)
- 需求分析
- 熟悉需求,确认业务流程和业务依赖关系
- 接口文档解析
- 确定每个业务对应的1个或者多个接口(1个业务可以对应多个接口,1个接口也可以对应多个业务,他们是多对多的关系)例如:登陆接口-----/login
- 解析接口的请求数据和返回数据。
- 请求数据:HTTP请求结构中的所有数据,请求行,请求头,请求体
- 返回数据:状态行,响应头,响应体
- 设计接口测试用例
- 根据需求和接口文档设计接口测试用例
- 执行测试
- 工具执行:Postman和Jmeter
- 代码执行:Python + Requests + unittest
- 接口缺陷管理与跟踪
- 缺陷管理工具:禅道,Jira
- Bug生命周期(了解)
- Bug的来源:新写的代码,依赖的包,回归测试产生的,需求产生的,旧版本的bug的
- 输出接口测试报告
- 接口自动化和持续集成
6,接口文档解析
介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。
- 为什么要写接口文档
- 方便前后端开发协调工作,提高工作效率。
- 方便项目迭代和人员更迭时,后期人员进行维护。
- 方便测试人员进行接口测试。
接口文档介绍(了解)
介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。
- 为什么要写接口文档
- 方便前后端开发协调工作,提高工作效率。
- 方便项目迭代和人员更迭时,后期人员进行维护。
- 方便测试人员进行接口测试。
7,接口测试用例设计
接口测试点
接口测试用例思路:
-
和手工测试的思路相同,包括使用测试方法论进行测试,比如:等价类、判定表、因果图、流程分析、场景分析、正交分析等
-
和手工测试不同的地方:
-
有接口独有的参数测试
-
正向:必填参数测试,必填+选填的参数组合测试,全部参数测试
-
反向(异常):
参数异常:多参,少参,无参,错误参数
数据错误:数据类型不符,数据长度,数据为空,错误数据
业务错误数据:根据实际的业务判断错误数据:比如手机号码中,输入不是手机号码的字符串。
- 多接口测试
- 多个接口之间有依赖关系时的测试
- 业务场景测试(功能测试也有)
单接口测试思路设计
1,设计接口用例的结构
ID,模块,用例名称,接口名称,URL,请求方式,请求头,请求参数类型,请求参数,预期结果,实际结果,操作步骤,优先级,前置条件
设计接口测试点
根据测试点,结合接口文档描述和需求描述,按照接口用例结构设计接口用例
注意 :接口用例中的预期结果一般是根据接口文档和需求来确定。但是实际工作中,很多异常场景都需要找开发确认清楚。
面试题 :一天能写多少个接口测试用例?
1,熟悉的项目,写的快,可以写一百多条
2,如果是不熟悉的项目,一天写50-100个也是可以的。