接口可分为:硬件接口、软件接口;(目前仅关注软件层面的接口知识)。
接口:指系统或者组件之间的交互点,通过这些交互点可实现数据的交互(数据交互的通道)。
按照范围划分:系统之间的接口、系统内部的接口。
系统之间的接口:多个内部系统之间的交互,内部系统与外部系统的交互;
程序内部的接口:方法与方法之间的接口,模块与模块之间的接口;
接口测试:是对系统或者组件之间的接口进行测试,主要是校验数据的交换、传递、控制管理过程、以及相互逻辑依赖关系。
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
测试可以提前介入,提早发现Bug,符合质量控制前移的理念;
可以发现一些页面操作发现不了的问题;
接口测试低成本、高收益;
接口测试是从用户的角度对系统(业务层面)进行全面的检测;
使用接口测试工具来实现(比如:JMeter、Postman);
通过编写代码来实现(比如:Python + Requests);
接口自动化测试:是让程序或工具代替人工自动完成对接口进行测试的一种过程。
HTTP(HyperText Transfer Protocol):超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
4.1.1、HTTP协议的特点
支持客户端/服务器模式
简单快速
灵活
无连接
无状态
URL:统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。
URL格式: 协议、域名、端口号、资源路径、参数
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
协议部分:“http”,常见的协议有HTTP,HTTPS、FTP等
域名部分:“www.itcast.cn”,也可以使用IP地址作为域名使用
端口部分:“8080”,默认端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
资源路径部分:“/news/index.html”(图片、视频、音频、链接、接口等)
查询参数部分:“uid=123&page=1”,“?”:隔离主体与参数部分内容;可以允许有多个参数,多个之间用“&”作为分隔符
http请求由三部分组成,分别是:请求行、请求头、请求体
请求行:请求行用来说明请求方法、要访问的资源以及所使用的协议版本。
GET:从服务器获取资源(一项或多项) POST:在服务器新建一个资源 PUT:在服务器更新资源(客户端提供改变后的完整资源) DELETE:从服务器删除资源 HEAD:请求获取由Request-URI所标识的资源的响应消息报头 TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断 CONNECT:保留将来使用 OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
请求头:紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型 Accept:客户端可识别的内容类型列表 Content-Type:请求体数据的类型,常见的类型有: text/html: HTML格式 text/plain:纯文本格式 image/jpeg:jpg图片格式 application/json: JSON数据格式 application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器(表单默认的提 交数据格式) multipart/form-data: 在表单中进行文件上传时使用
请求体:
请求体不在GET方法中使用,经常在POST、PUT方法中使用 请求体的数据可以是:表单数据、文本、XML、JSON 与请求数据相关的最常使用的请求头是Content-Type和Content-Length
HTTP响应也由三个部分组成,分别是:状态行、响应头、响应体。
状态行:状态行由协议版本号、状态码、状态消息三部分组成。
1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操作 4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求
响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据。
响应体:响应体就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码。
状态码 | 状态消息 | 动词 | 说明 |
200 | OK | [GET] | 服务器成功返回用户请求的数据 |
201 | CREATED | [POST/PUT] | 用户新建或修改数据成功 |
202 | Accepted | [*] | 表示一个请求已经进入后台排队(异步任务) |
204 | NO CONTENT | [DELETE] | 用户删除数据成功 |
400 | Bad Request | [POST/PUT] | 客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | [*] | 表示用户没有权限(令牌、用户名、密码错误) |
403 | Forbidden | *] | 表示用户得到授权,但是访问是被禁止的 |
404 | Not Found | [*] | 请求资源不存在(比如:错误的URL) |
406 | Not Acceptable | [GET] | 请求资源不存在(比如:错误的URL) |
410 | Gone | [GET] | 用户请求的资源被永久删除,且不会再得到的 |
500 | INTERNAL SERVER/ERROR | [*] | 服务器发生错误 |
503 | Server Unavailable | [*] | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
5.1.1、定义
一种软件架构风格、设计风格而不是标准,只提供了一组设计原则和约束条件。
5.1.2、RESTful接口风格
暂时空着
6.1、接口测试流程
需求分析:主要依据需求文档;
接口文档解析:(API文档);
设计测试用例:
执行测试(1、接口工具;2、代码)
接口缺陷管理与跟踪;
生成测试报告;
接口自动化持续集成;
接口文档:API文档,一般开发人员编写,描述系统所提供接口信息的文档。(请求、响应)
能够让前端开发和后台开发人员更好的配合;
项目迭代或者项目人员更迭时,方便后期人员查看和维护;
方便测试人员今早介入;
主要包含以下信息:
基本信息:
接口名称、请求方法、请求路径(接口地址(path))、接口描述
请求参数
请求头 请求体(参数名称、参数类型、是否必填、示例、备注等)
返回数据
不同情况的响应状态码 响应数据(具体的响应数据名称、类型、是否必填、默认值、示例、备注)
7.3.1、接口文档示例
功能测试用例模板:
用例编号、用例标题、测试项目、用例级别、预置条件、测试输入、执行步骤、预期结果
ID
模块
用例标题
接口名称
请求
请求URL 请求方法 请求头 请求数据类型 请求体(请求参数)
预期结果
响应状态码 响应数据
正向功能:(通过性测试)
正常:数据的格式、大小等全部正确;
反向测试:(异常测试)
异常:数据长度、大小、格式、必填、重复、空字符、参数多(少)、无参数、错误参数等情况;
功能测试:单接口功能、业务场景功能;
性能测试:响应时间长、吞吐量、并发数、服务器资源使用率;
安全测试:敏感数据是否加密、SQL注入、其他;
作者:石头缝里的小松鼠
原文链接:https://blog.csdn.net/yutian8233/article/details/118089424