接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计

接口介绍
简单的说:是指系统或组件之间的交互点
通过这些交互点可以进行数据之间的交互
是数据交互的通道
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
接口的类型
接口测试分类由于多种,按照范围划分:系统之间的接口和程序内部的接口

系统之间的接口:多个内部系统之间的交互,内部系统与外部系统的交互。
程序内部的接口:方法与方法之间,模块与模块之间,函数与函数之间。

接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
接口测试
接口测试主要测试数据的传递,交互,控制管理过程,以及相互的依赖关系。
接口测试的原理
模拟客户端发送请求,服务器接收请求后会进行相应的业务处理,并返回响应数据,校验预期数据与返回数据是否一致。
注意:http请求是使用tcp/ip协议来连接的。(TCP/IP三次握手)

接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
接口测试的特点(重点*面试题)【为什要进行接口测试】

  • 低成本高收益
  • 提前介入测试
  • 可以发现页面操作发现不了的问题
  • 和单元测试相比更贴近用户交互(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化和持续集成)

接口测试的实现方式:

工具:Postman和Jmeter
代码:Python + Requests + Unittest

自动化接口测试的概念:
程序代替人工进行接口测试的过程。

HTTP协议:
HTTP协议是一个超文本传输协议,是一个基于请求与响应模式,应用层协议,应用非常广泛的协议。
七层网络架构:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

HTTP协议的特点(重点)

  1. 支持客户端和服务器模式
  2. 简单快速:通过URL建立连接和传输数据,而URL结果简单,数据量不大,所以简单快速
  3. 无状态:就是指不会保存状态数据
  4. 无连接:用完就扔,不是不建立连接,而是指建立连接之后处理完数据就会断开连接
  5. 灵活:支持多种类型: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:请求查询服务器的性能,或者查询与资源相关的选项和需

接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
请求行
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协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
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:服务器错误,过一段时间可能会恢复正常

接口规范
思考: 如何让前端开发与后台接口开发人员更好的配合,提高工作效率?
无规矩不成方圆,制定接口规范
. 传统接口风格
对用户进行操作的相关接口,包括增删改查
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
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

  1. 项目环境介绍
    项目介绍
    功能模块:组织管理、员工管理、培训管理、考勤管理、工资管理、绩效管理、劳动合同、招聘管理、福利管理

技术架构:
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计

前后端处理流程(前后端分离架构):
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
技术栈:

前端:使用Node.js和Vue.js架构开发

后端:Spring全家桶(Springboot,Springcloud,SpringMVC,SpringData)

数据库:Mysql+Redis

消息队列:RabbitMQ

2.2 技术架构图
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计

5. 接口测试流程(非常重要)
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计

  • 需求分析
  • 熟悉需求,确认业务流程和业务依赖关系
  • 接口文档解析
  • 确定每个业务对应的1个或者多个接口(1个业务可以对应多个接口,1个接口也可以对应多个业务,他们是多对多的关系)例如:登陆接口-----/login
  • 解析接口的请求数据和返回数据。
  • 请求数据:HTTP请求结构中的所有数据,请求行,请求头,请求体
  • 返回数据:状态行,响应头,响应体
  • 设计接口测试用例
  • 根据需求和接口文档设计接口测试用例
  • 执行测试
  • 工具执行:Postman和Jmeter
  • 代码执行:Python + Requests + unittest
  • 接口缺陷管理与跟踪
  • 缺陷管理工具:禅道,Jira
  • Bug生命周期(了解)
  • Bug的来源:新写的代码,依赖的包,回归测试产生的,需求产生的,旧版本的bug的
  • 输出接口测试报告
  • 接口自动化和持续集成

6,接口文档解析

介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。

  • 为什么要写接口文档
  • 方便前后端开发协调工作,提高工作效率。
  • 方便项目迭代和人员更迭时,后期人员进行维护。
  • 方便测试人员进行接口测试。

接口文档介绍(了解)

介绍:接口文档是用来描述接口信息的文档,一般由后端开发人员或者架构师输出;又称为API文档。

  • 为什么要写接口文档
  • 方便前后端开发协调工作,提高工作效率。
  • 方便项目迭代和人员更迭时,后期人员进行维护。
  • 方便测试人员进行接口测试。

7,接口测试用例设计
接口测试基础之HTTP协议、接口规范(传统/RESTful风格)、项目环境、接口测试流程、解析接口文档、接口测试用例设计
接口测试点
接口测试用例思路:

  • 和手工测试的思路相同,包括使用测试方法论进行测试,比如:等价类、判定表、因果图、流程分析、场景分析、正交分析等

  • 和手工测试不同的地方:

  • 有接口独有的参数测试

  • 正向:必填参数测试,必填+选填的参数组合测试,全部参数测试

  • 反向(异常):

参数异常:多参,少参,无参,错误参数

数据错误:数据类型不符,数据长度,数据为空,错误数据

业务错误数据:根据实际的业务判断错误数据:比如手机号码中,输入不是手机号码的字符串。

  • 多接口测试
  • 多个接口之间有依赖关系时的测试
  • 业务场景测试(功能测试也有)

单接口测试思路设计

1,设计接口用例的结构

ID,模块,用例名称,接口名称,URL,请求方式,请求头,请求参数类型,请求参数,预期结果,实际结果,操作步骤,优先级,前置条件
设计接口测试点
根据测试点,结合接口文档描述和需求描述,按照接口用例结构设计接口用例
注意 :接口用例中的预期结果一般是根据接口文档和需求来确定。但是实际工作中,很多异常场景都需要找开发确认清楚。

面试题 :一天能写多少个接口测试用例?

1,熟悉的项目,写的快,可以写一百多条

2,如果是不熟悉的项目,一天写50-100个也是可以的。