1、什么是接口测试
接口测试(Interface Testing)是软件测试的一种类型,它主要关注应用程序或系统之间的接口的交互和通信。接口测试的目的是验证这些接口的功能、稳定性、安全性和性能是否符合预期,以确保各组件之间能够正确地交互和协作。
通常包含以下几个方面:
-
功能测试:验证接口是否能够按照预期接收输入并返回正确的输出。这包括测试各种输入场景(正常输入、边界输入、异常输入等)以确认接口的功能是否全面且正确。
-
安全性测试:检查接口是否存在安全漏洞,如未授权访问、数据泄露、注入攻击等。通过模拟恶意请求和攻击场景,评估接口的安全性。
-
兼容性测试:验证接口在不同环境(如不同的操作系统、浏览器、设备等)和不同版本之间的兼容性。这有助于确保接口能够广泛适应各种使用场景。
-
性能测试:测量接口在处理大量请求时的响应时间、吞吐量、资源消耗等性能指标。这有助于评估接口的性能瓶颈和优化方向。
接口测试的方法通常包括编写测试脚本或使用专门的接口测试工具来模拟客户端请求,并验证服务端的响应。这些测试脚本可以手动编写,也可以使用自动化测试框架(如Postman、RestAssured、JMeter等)来自动生成和执行。
接口测试在软件开发周期中扮演着重要的角色。它有助于在早期发现潜在的问题,减少后期修复的成本和风险
1.1、接口测试原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
1.2、接口测试的特点
测试可以提前介入,提早发现Bug,符合质量控制前移的理念
可以发现一些页面操作发现不了的问题
接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测
1.3、接口测试的实现方式
使用接口测试工具来实现(比如:JMeter、Postman)
通过编写代码来实现(比如:Python + Requests)
2、HTTP协议
2.1、Request请求
(1)请求行
请求行用来说明请求方法、要访问的资源以及所使用的协议版本
常用请求方法:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
其他请求方法(了解):
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
(2)请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:
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: 在表单中进行文件上传时使用
(3)请求体
请求体不在GET方法中使用,经常在POST、PUT方法中使用 请求体的数据可以是:表单数据、文本、XML、JSON 与请求数据相关的最常使用的请求头是Content-Type和Content-Lengt
2.2、Response响应
(1)请求行
请求行用来说明请求方法、要访问的资源以及所使用的协议版本
常用请求方法:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
其他请求方法(了解):
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
(2)请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:
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: 在表单中进行文件上传时使用
(3)请求体
请求体不在GET方法中使用,经常在POST、PUT方法中使用 请求体的数据可以是:表单数据、文本、XML、JSON 与请求数据相关的最常使用的请求头是Content-Type和Content-Length
3、接口规范Restful
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构
- 每一个URL代表一种资源;
- 2. 客户端和服务器之间,传递这种资源的某种表现层;
- 3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化";
- 4. 接口之间传递的数据最常用格式为JSON。
4、接口用例的测试点
功能测试:验证接口功能是否按照接口文档实现(输入+处理+输出)
- 单接口测试
正向功能:(通过性测试)
仅必填参数
全部参数
参数组合
反向测试:(异常测试)
参数异常:无参、少参、多参、错误参数
数据异常:数据为空、长度不符、类型不符、错误数据
数据异常:结合业务功能考虑输出的各种异常返回情况
- 多接口测试:业务场景功能测试(站在用户角度考虑常用的使用场景)
接口之间数据依赖