【接口测试01-测试基础】

一、接口

1.1 概念

接口可分为:硬件接口和软件接口,我们这里只关注软件层面的接口。
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。(数据交互的通道)
系统与系统之间,组件与组件之间,数据传递交互的通道。
接口概念

1.2 接口的类型

接口测试分类有许多种,

  • 按照协议划分:http,tcp,IP
  • 按照语言划分:C++,java,php…
  • 按照范围划分:系统之间的接口和程序内部的接口
    • 系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互。
    • 程序内部的接口:方法与方法之间,函数与函数之间,模块与模块之间的交互。

接口类型

二、接口测试

2.1 接口测试概念

是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

2.2 接口测试原理

模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
接口测试,主要针对的测试目标 – 服务器
测什么? 测试 服务器针对客户端请求,回发的响应数据是否与预期结果一致。
用什么测? 工具:fiddler、postman、jemter。 代码:python + UnitTest框架 + Requests框架。
怎么测? 模拟客户端,向服务器发送请求。
人眼对比、断言。

2.3 接口测试的特点

测试可以提前介入,提早发现bug,符合质量控制前移的理念。
可以发现一些页面操作发现不了的问题。
接口测试低成本高效益(底层的一个bug能够引发上层8个左右bug,接口测试可以实现自动化)。
不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测。

2.4 实现方式

工具:JMeter、postman、fiddler。
代码:python + UnitTest框架 + Requests框架

2.5 自动化接口测试

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

三、HTTP协议(重点)

协议:就是规则。要求通信的双方必须严格遵守!

3.1 HTTP协议简介

HTTP:超文本传输协议(HyperText Transfer Protocol),是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
IP地址是在网络中唯一标识一台主机。

3.1.1 HTTP协议的特点

  • 支持客户端/服务端模式
  • 简单快速
  • 灵活
  • 无连接(IP + 端口)
  • 无状态

3.2 URL格式(重点)

URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。
作用:在网络环境中,唯一的定位一个数据资源。
URL语法格式(组成):http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
URL语法格式

  • 协议:http,规定数据传输的方式。
  • 域名(IP):相当于IP地址。在网络环境中,唯一标识一台主机。 – 用:// 与协议隔分
  • 端口(port):(常省略)在网络主机上,标识一个进程(应用程序)。-- 用 : 与域名隔分。端口号的范围:0~65535。可以省略,http默认80,https默认443.
  • 资源路径:标识网络资源(文件、图片、音视频、变量…)-- 用:/ 与端口隔分
  • 查询参数:传递给资源路径对应的数据。-- 用 ? 与资源路径隔分,查询参数内部用 & 隔分多个键值对

练习

请写出以下URL的各个组成部分,这个URL没有写出端口号,它的端口号是什么?

http://www.itcast.cn:8080/news/index.html?uid=123&page=1
协议:http
域名:www.itcast.cn
端口号:8080(不是默认端口,只不过网络通信常用)
资源路径:/news/index.html
查询参数:uid=123&page=1

3.3 HTTP请求(重点)

作用:客户端(app、浏览器),发送请求给服务器时,使用的协议 – http请求协议。
规定 发送给服务器的数据传输的语法格式。

3.3.1 整体格式

  • 请求行:http请求第一行。请求方法(空格)URL(空格)协议版本
    • get:查询
    • post:添加(常用在登录)
    • put:修改
    • delete:删除
  • 请求头:语法格式:k:v
    • User-Agent:描述 请求发送端的 浏览器类型
    • Content-Type:描述 请求体的 数据类型
      • text/html:HTML格式
      • text/plain:纯文本格式
      • image/jpeg:jpg图片格式
      • application/json:json数据格式
      • application/x-www-form-urlencoded:form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
      • multipart/form-data:在表单中进行文件上传时使用
  • 空行:代表http请求头结束。
  • 请求体:请求发送时携带的数据。数据类型 受Content-Type的值 影响!
    • post 和 put 有请求体
    • get 和 delete 没有请求体
      http请求整体格式

http请求

3.3.2 fiddler抓包验证

fiddler抓包验证
fiddler抓包验证

练习

以下是抓取的某个http协议数据包的请求报文,请问其中,请求行、请求头、请求体分别是什么?url 的各个组成部分是什么?
抓包验证练习

请求行:第一行
	请求方法:post(有请求体,常用在登录、添加)
	URL:http://tpshop-test.itheima.net/index.php
	协议版本:HTTP/1.1
	协议:http,域名:tpshop-test.itheima.net,端口号:80,资源地址:index.php,查询参数:没有
请求头:第2-16行
	浏览器类型:Mozilla/5.0
	请求体数据类型:form
请求体:第18行
	key:value

3.4 HTTP响应(重点)

作用:服务器端,针对客户端发送的http请求,回发响应数据。–http应答
规定 回发给客户端的数据组织格式。

3.4.1 整体格式

  • 响应行(状态行):协议版本(空格)状态码(空格)状态码描述
    • 状态码有三位数字组成,第一个数字定义了响应的类别:
      • 1xx:指示信息 --表示请求已接收,等待继续处理。
      • 2xx:成功 --表示请求已被成功接收、理解、接受。
      • 3xx:重定向 --要完成请求必须进行更进一步的操作。
      • 4xx:客户端错误 --请求有语法错误或请求无法实现。常见:404 访问文件不存在,403 访问的文件拒绝访问。
      • 5xx:服务器端错误 --服务器未能实现合法的请求。
    • 状态码描述:一般与状态码 唯一对应。200 --OK;404 --file not found
  • 响应头:语法格式:k:v
    • Content-Type:描述 响应体中数据类型。
    • Content-Length:响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确。
  • 空行:代表响应头结束。
  • 响应体:回发给客户端的 数据,绝大多数不为空。(请求成功:回发数据;失败:回发错误信息)
    • 数据类型受 Content-Type的值 影响!
    • 在测试中,就是“实际结果”。
      http响应整体格式
练习

以下是HTTP协议的响应报文内容,请问 状态行、响应头、响应体分别是哪几个部分?
http响应练习
http响应练习

3.5 传统风格接口

对用户进行操作的相关接口,包括增删改查。
特点:

  • 请求方法,只使用get和post即可。
  • URL不唯一。同一个操作可以对应不同的URL。
  • 状态码的使用较单一。200最常见。

传统风格接口

3.6 RESTful风格接口

3.6.1 定义

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是“表现层状态转化”。如果一个架构符合REST原则,就称它为RESTful架构。

3.6.2 RESTful风格接口

对用户进行操作的接口,包括增删改查。
RESTful接口

3.6.2 RESTful架构特点

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

四、接口测试流程

  1. 需求分析:主要依据需求文档
  2. 接口文档解析:一般是由开发人员编写接口文档(API文档)
  3. 设计测试用例
  4. 执行测试:使用接口测试工具(postman、jmeter)实现;通过编写代码(python+Requests+UnitTest)实现。
  5. 接口缺陷管理与跟踪
  6. 生成测试报告
  7. 接口自动化持续集成(可选)

五、接口文档

5.1 接口文档介绍

接口文档:又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。大家都根据这个接口文档进行开发,并需要一直维护和遵守。

5.2 为什么要写接口文档

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

5.3 展现形式

word文档形式、Excel表格式形式、PDF文档形式。

5.4 结构(重点)

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

六、接口文档解析(重点)

接口文档解析的本质:从接口文档中,找出http请求所需要的的 数据信息,对应响应结果的 预期结果。

  • 主要包含:请求方法、URL、请求头、请求体、响应状态码、描述。

以登录为例:

  • 请求方法:post
  • URL:http://ihrm-test.itheima.net/api/sys/login
  • 请求头:Content-Type:application/json
  • 请求体:{“mobile”:“13800000002”,“password”:“123456”}
  • 响应状态码:200
    • 错误码:
      • 10000:操作成功!
      • 20001:用户名或密码错误
      • 99999:抱歉,系统繁忙,请稍后重试!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值