接口测试

接口测试基础

一、接口测试理论

接口:系统之间数据交互的通道
接口测试:校验接口响应数据与预期数据是否一致

接口测试价值:

  • 测试页面测试发现不了的问题
  • 符合质量控制前移理念
  • 测试成本低,效益高

接口测试-实现

工具

  • Postman
  • JMeter

代码

  • Python + Requests
  • Java + HttpClient

HTTP协议

HTTP:超文本传输协议,基于请求与响应的应用层协议

HTTP请求—定义请求数据格式:请求行、请求头、请求体
HTTP响应—定义响应数据格式:状态行、响应头、响应体

HTTP请求-请求行

  • 位置:请求数据第一行
  • 作用:说明请求方法、访问的资源、协议版本

POST http://demo.zentao.net/user-login.html HTTP/1.1

常用请求方法:
GET:从服务器获取资源
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE:从服务器删除资源

HTTP请求-请求头

  • 位置:第二行到空白行之间
  • 作用:通知服务器客户端请求信息
  • 特点:请求头部由键值对组成,每行一对
Host:demo.zentao.net
Accept-Encoding: gzip, deflate 
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive

Content-Type:请求体数据类型

  • text/html: HTML格式
  • text/plain:纯文本格式
  • image/jpeg:jpg图片格式
  • application/json: JSON数据格式
  • application/x-www-form-urlencoded: 表单默认的提交数据格式
  • multipart/form-data: 在表单中进行文件上传时使用

HTTP请求-请求体

  • 位置:空白行之后的内容
  • 作用:传输数据实体
  • 请求体常在POST、PUT方法中使用
  • 常配合的请求头:Content-Type和Content-Length

account=demo&password=efc4a3b32e48054865e5a8321cfda3e4

HTTP响应-状态行

  • 位置:响应数据中第一行
  • 作用:描述服务器处理结果
  • 内容:状态行由协议版本号、状态码、状态消息组成

HTTP/1.1 200 OK

状态码三位数字组成,第一个数字定义响应类别:

  • 1xx:指示信息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务器端错误

HTTP响应-常见响应状态码

状态码 状态信息 说明
200 OK 服务器成功返回用户请求的数据
201 CREATED 用户新建或修改数据成功
204 NO CONTENT 用户删除数据成功
301 Moved Permanently 被请求的资源已永久移动到新位置
302 Move Temporarily 被请求的资源临时性移动到新位置
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 未授权的(未登录
403 Forbidden 表示用户得到授权,但是访问是被禁止的
404 Not Found 请求资源不存在
500 INTERNAL SERVER ERROR 服务器发生错误,用户将无法判断发出的请求是否成功
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

HTTP响应-响应头

  • 位置:第二行开始到空白行之间
  • 作用:描述客户端要使用的一些附加信息
  • 特点:响应头由键值对组成,每行一对
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type:text/html;charset=UTF-8

<html>
<head></head>
<body>...</body>
</html>

HTTP响应-响应体

  • 位置:响应数据空白行之后
  • 作用:服务器返回的数据实体
  • 特点:有图片、json、xml、html等多种类型
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
<head></head>
<body>...</body>
</html>

二、接口规范和测试流程

接口规范

RESTful
RESTful是一种网络应用程序的设计风格和开发方式,并不是必须要遵守的标准,只是提供了一组设计原则和约束条件

操作 请求方式 URL 成功状态码
查询某个用户 GET http://127.0.0.1:8080/myweb/users/1 200
查询所有用户 GET http://127.0.0.1:8080/myweb/users 200
添加用户 POST http://127.0.0.1:8080/myweb/users 201
修改用户 PUT http://127.0.0.1:8080/myweb/users/1 201
删除用户 DELETE http://127.0.0.1:8080/myweb/users/1 204

接口API设计规范
特点: 面向资源

  1. 请求 API 的 URL 用来定位资源(名词表示)

    资源集合
    /users      //所有用户
    单个资源
    /users/1001     //id为1001的用户
  2. 通过标准HTTP方法对资源CRUD

GET  /Users     //获取所有用户
GET  /Users/1001        //获取id为1001的用户
POST  /Users/1002       //新增id为1002的用户
PUT  /Users/1001        //修改id为1001的用户
DELETE  /Users/1001     //删除id为1001的用户

传统风格和RESTful对比

接口规范 请求方式 URL 状态码
传统风格 使用post完成增删改查 url定义资源和操作混合 均为200
RESTful 遵循HTTP协议方法定义 url仅定义一个资源,不包含对资源的操作 遵循HTTP协议状态码定义

接口测试流程

需求分析、接口文档解析、设计测试用例、脚本开发、执行及缺陷跟踪 、生成测试报告、接口自动化持 续集成 (可选)

接口文档解析

  • 为什么要进行接口解析?
    熟悉接口的相关信息,为设计接口用例准备

  • 接口解析要关注的核心要素?
    请求报文:请求方法/请求路径/请求数据
    响应报文:响应状态码/响应数据

接口文档:又称为API文档,是由后端 开发编写,用来描述接口信息的文档。

为什么要写接口文档?
协同:团队人员工作协同配合
约束:项目更新修改同步维护

留言