软件测试笔记_16_接口测试概念、流程、文档、http协议

一、接口

1. 接口及接口测试概念

(1)接口概念

  • 系统与系统之间、组件与组件之间,完成数据交互的通道

(2)接口类型

  • 按照协议划分:http、tcp、ip…
  • 按照语言划分:C++、Java、php…
  • 按照范围划分
    • 系统之间
      • 多个内部系统之间
        比如:用户系统、订单系统、商品系统
      • 内部系统与外部系统之间
        比如:商品系统与支付系统
    • 程序之间
      • 方法与方法之间、函数与函数之间、模块与模块之间
      • 在这里插入图片描述

(3)接口测试概念

概念:对组件或者系统之间的接口进行测试,主要是(校验数据准确性&逻辑依赖关系的准确性
校验数据的交换
传递和控制管理过程
相互逻辑依赖关系
比如:要进入【商品订单】页面,就需要先进入【登录页面】完成登录

(4)接口测试原理

  • 👀接口测试,主要针对的测试目标是——服务器
  • 怎么测?
    • 模拟客户端,向服务器发送请求
  • 用什么测?(接口测试的实现方式)
    • 工具:fiddler[抓包为主]、postman、jmeter
    • 代码:python+UnitTest框架+Requests框架
  • 测什么?
    • 测试服务器针对客户端请求,返回的响应数据是否与预期结果一致(目视对比/断言自动判断)

(5)接口测试特点

  • 符合质量控制前移理念(提前发现bug,接口处解决)
  • 发现一些页面操作发现不了的问题(接口测试可测任意类型的数据 )
  • 低成本、高收益
  • 从用户的角度对系统进行检测

(6)自动化接口测试

  • 借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断【预期结果】和【实际结果】是否一致。

2. 接口的四大类传参

(1)URL格式传参

  • 直接拼接在url后面:url?params
  • 使用params传参(url格式参数 或者 字典)

(2)form表单传参

  • Content-Type:application/x-www-form-urlencoded
  • 使用data=字典

(3)json格式传参

  • Content-Type:application/json
  • 使用json=字典

(4)请求头传参

  • 头是一个字典
  • headers = 字典
  • 头部参数一般传的是验证信息

3. 接口的结果

(1)text

文本结果,可查看res.text

(2)json()

查看json解析之后的结果,返回一个字典(返回值需要是标准的json字符串,否则会报错)

(3)content

二进制结果,可根据需求转码(unicode-escape,utf8,gbk)
返回字符串

(4)响应头

服务器完成接口功能之后返回的验证信息
res.headers
res.cookies (举例:res.cookies.get("xxxx名")

4. Requests文件上传与下载

(1)单个文件的上传

url = 'http://httpbin.org/post'
files = {'file': open('../xxx.doc', 'rb')}
res = requests.post(url, files = files)
print(res.text)

(2)指定参数的上传

url = 'http://httpbin.org/post'
# 打开上传文件并加入文件相关参数
files = {'file': ('report.xls', open('../lib/xxx.doc', 'rb'), 'application/x-www-form-urlencoded')}
# 其他参数可以同时使用data=或者json=补充传递
data = None 
json = None
res = requests.post(url, data=data, json=json, files=files)
print(res.text)

二. 👀HTTP协议

  • 协议:即规则。要求数据通信的双方必须严格遵守的规则。

1. HTTP协议介绍

  • HTTP超文本传输协议(HyperText Transfer Protocol),一个基于请求响应模式的、应用层的协议,也是互联网上应用最为广泛的网络协议.
  • [下面的不用细看]
    • 超文本-超出文本范围,可传输图片、视频、音频…
    • 请求–客户端发送
    • 相应–服务器发送
    • 应用层协议
      • 计算机 (底层硬件+上层应用程序)
      • 上-下:应用层 – TCP/UDP指定端口 – IP指定IP地址[IP唯一标识一台主机] – 底层链路层

2. HTTP协议特点

  • 支持【客户端/服务器】模式
  • 简洁快速
  • 灵活
  • 无连接(不需要提前建立连接,只需要指定IP[找主机]跟端口[找程序])
  • 无状态

3. 👀URL格式

  • 概念
  • URL,统一资源定位符,是互联网上标准资源的地址
  • 作用:可以在网络环境中唯一的找到数据资源
    1. 数据资源(在网络上可见的所有东西)
    2. 可以是 服务/应用
    3. 也可以是 方法/函数/变量
  • HTTP可以使用URL来建立连接和传输数据
  • 在这里插入图片描述
    1. 协议:http 数据传输的方式
    2. 域名(IP地址):在网络环境中找到主机 —— 使用 :// 与协议分隔
    3. 端口(port):在网络主机上标识应用程序/进程 —— 使用 : 与域名分隔(http默认80,https默认443)
    4. 资源路径:标识网络资源(文件、图片…) —— 使用 / 与端口分隔
    5. 查询参数:传递给资源路径所对应的数据 —— 使用 ? 与资源路径分隔,内部使用&分隔

4. 👀HTTP请求

(1)作用

  • 客户端(app, 浏览器)发送HTTP请求给服务器时所使用的协议 —— HTTP请求协议
  • 规定了发送给服务器的数据传输的语法格式

(2)请求格式

  • 请求行 :【HTTP请求的第一行】请求方法(空格)URL(空格)协议版本
    • http请求方法
      • get:查询
      • post:添加(常用于登录)
      • put:修改
      • delete:删除
  • 请求头 :【掌握语法格式】
    • 语法格式:key:value
    • User-Agent:描述【请求发送端】的浏览器类型
    • Content-Type:描述【请求体】的数据类型,常见数据类型有:
      • application/json:JSON数据格式
      • application/x-www-form-urlencoded:form表单数据(如下图)
  • 空行 :代表http请求头结束
  • 请求体 :请求发送时携带的数据,数据类型Content-Type的值(如下图类型是表单)
    • 有请求体:post、put[修改操作]
    • 无请求体:get、delete
      在这里插入图片描述
    • 数据值的组织形式,受Content-Type的影响在这里插入图片描述

(3)Fiddler抓包

在这里插入图片描述

5. 👀HTTP响应

(1)作用

  • 服务器端根据客户端发送的HTTP请求,发送响应数据 —— HTTP应答
  • 规定了回发给客户端的数据传输的语法格式

(2)语法格式

在这里插入图片描述

  • 响应行/状态行

    • 协议版本+状态码+状态消息

    • 状态码

      • 1xx:指示信息 —— 表示请求已被接收,继续处理
      • 2xx成功 —— 表示请求已被成功接收、理解、接受,eg: 200, 201
      • 3xx:重定向 —— 要完成请求必须进行更进一步操作,待访问的资源需要重新指定路径访问
      • 4xx客户端错误 —— 请求有语法错误或者请求无法实现,eg: 404, 403
      • 5xx:服务器端错误 —— 服务器未能实现合法的请求
    • 状态码描述:一般与状态码相对应 200 -- OK;400 -- file not found

  • 响应头
    在这里插入图片描述

  • 响应体
    回发给客户端的内容,常见:HTML网页、xml、json

6. 传统风格接口

  • 请求方法只使用 get / post
  • url不唯一
  • 状态码的使用比较单一,常见:200

在这里插入图片描述

7. RESTful

(1)特点:[了解]

  • 每一个URL代表一种资源;
  • 客户端和服务器之间,传递这种资源的某种表现层;
  • 表现层:数据的不同表现形式(如:图片、文字表现同一个数据对象)
  • 客户端通过四个HTTP动词(post、delete、put、get),对服务器端资源进行操作,实现"表现层状态转化";
  • 接口之间传递的数据最常用格式为JSON。
    在这里插入图片描述

三、接口测试流程

1. 接口测试流程

在这里插入图片描述

  • 进行需求分析,生成需求文档(产品负责)
  • 尝试接口文档(开发负责),解析接口文档(测试负责)
  • 产生测试用例。送审
  • 执行测试用例
    1. 工具:postman、jmeter
    2. 代码:python + Requests + UnitTest
  • 提交、跟踪缺陷
  • 生成测试报告
  • (可选)接口自动化持续集成

2. 接口文档

(1)什么是接口文档

  • 由开发人员编写,描述接口信息的文档,开发团队按照接口文档进行开发工作。

(2)接口文档的作用[了解]

  • 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
  • 项目迭代或者项目人员更迭时,方便后期人员查看和维护
  • 方便测试人员进行接口测试

(3)展现形式

  • word 文档形式
  • Excel 表格式形式
  • pdf 文档形式

(4)👀结构

  • 基本信息
    • 资源路径(协议和域名在 “系统信息”中)
    • 请求方法
    • 接口描述
  • 请求参数
    • 请求头
      • Content-Type:描述请求体的数据类型
    • 请求体
      • 实现该接口使用的数据集与对应类型
  • 返回数据
    • 成功:状态码 200
    • 失败:错误码(属于自定义的状态码)
      • 码值
      • 错误信息

3. 👀接口文档解析

  • 接口文档解析的本质:从接口文档中,找出http协议所需要的数据信息请求方法
    • 主要包含:请求方法、URL、请求头、请求体、响应状态码、描述
      在这里插入图片描述

4. 使用fiddler发送HTTP请求

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值