接口测试
软件接口,是指软件不同模块之间交互的接口,我们通常所说的API(Application Programming Interface 应用程序接口),即是软件系统不同模块之间衔接的约定。
接口测试即是对软件各个模块的接口进行的测试。
接口测试(API测试)是指对应用程序编程接口(API)进行验证的一种测试类型。接口测试主要目的是确保API在各种条件下按照预期的方式工作,涵盖了API的功能性、可靠性、安全性和性能等方面。
接口测试流程
拿到一个接口项目之后,先测试业务接口好事先测试单个接口?先测业务接口,确保核心业务正确。
如何测试业务接口?根据业务流程图去梳理业务路径;设计测试用例覆盖每一条业务路径。
需求分析:我们的需求来源于开发人员提供的一个接口文档,我们进行接口文档解析(地址信息,参数信息等待)
设计测试用例
脚本开发:通过工具或者代码来进行脚本的开发
执行脚本
缺陷跟踪
测试报告
URL基础介绍
url:互联网上标准资源的地址,一般称为 统一资源定位符
组成:协议://hostname[:port] / path / [?查询参数1&查询参数2]
示例:http://kdtx-test.itheima.net:8080/contract/details?id=449280106&pageType=info
http:协议,数据传输的格式,http,https
kdtx-test.itheima.net:域名或者IP,服务器地址
8080:端口:一个应用程序对外访问的唯一标识,常用的80(http)\443(https)。默认端口可以省略
contract/details:资源路径,主机资源的具体地址,包含目录和文件名,用"/"隔开
id=449280106&pageType=info:参数部分,客户端向服务器传递的具体数据。
HTTP协议
HTTP协议:超文本传输协议,基于请求与响应的应用层协议
作用:规定了客户端与服务器之间的信息传递规范,是二者共同遵守的协议
组成:HTTP请求:定义请求数据格式。请求行、请求头、请求体
HTTP响应:定义响应数据格式。状态行、响应头、响应体
HTTP请求-请求行
位置:请求数据的第一行
作用:说明请求方法、访问的资源、协议版本
常用的请求方法:GET:从服务器获取资源;POST:从服务器新建一个资源
** PUT:在服务器更新资源 ; DELETE:从服务器删除资源**
HTTP请求-请求头
位置:请求数据第二行到空白行之间
作用:通知服务器客户端请求信息
特点:请求头部由键值对组成,每行一对
Content-Type :请求体数据类型.text/html:HTML格式;image/jpeg:jpg图片格式
**application/json:JSON数据格式**
application/x-www-form-uelencoded:表单默认的提交数据格式。
HTTP请求-请求体
位置:空白行之后
作用:传输数据实体。密码,用户等等
请求体常在POST、PUT方法中使用
常配合的请求头:Content-Type和Content-Length
请求报文中可以没有请求体数据
HTTP响应-状态行
位置:响应数据的第一行
作用:描述服务器处理结果
内容组成:协议版本号、状态码、状态消息
状态码:三位数字组成,第一个数字定义响应类别,1xx:指示信息,2xx:成功,3xx:重定向,4xx:客户端错误,5xx:服务端错误
HTTP响应-响应头
位置:数据第二行到空白行之间
作用:描述客户端要使用的一些附加信息
特点:响应头是由键值对组成,每行一对
HTTP响应-响应体
位置:响应数据空白行之后
服务器返回的数据实体
返回的有图片、json、xml、html等多种类型
接口规范
RESTful:一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。
定位资源就是要操作的对象
解析接口文档
为什么要进行接口文档解析?
熟悉接口信息,为设计接口用例准备
接口API文档:一般由后端开发编写,用来描述接口信息的文档
如何进行接口文档解析?
(1)分析接口之间的依赖关系
比如购物车接口,需要用户登录,即购物车接口依赖于登录接口
(2)分析接口请求(如:URL、请求方法、请求头、请求参数类型、请求参数等)
(3)分析接口响应(如:响应状态码,响应数据)
测试用例示例:
附:Get和Post区别
get产生一个编辑tcp数据包,服务器只响应一次,而post请求服务器会响应两次(第一次发送请求头响应100,再次响应返回200,成功)
Expect: 100-Continue
机制
在HTTP/1.1中,客户端可以在请求头中包含
Expect: 100-Continue
字段。这是一种优化机制,用于处理大型请求体,避免不必要的数据传输。具体过程如下:
- 客户端发送请求头:客户端发送一个
POST
请求,包含Expect: 100-Continue
头部。这个头部告诉服务器,客户端希望在发送请求体之前,先获得服务器的初步响应。 - 服务器响应:- 100 Continue:服务器收到请求头后,首先返回一个100状态码(
100 Continue
),表示服务器已经接受了请求头,并且客户端可以继续发送请求体(数据)。如果服务器决定拒绝请求,可能会返回一个4xx或5xx状态码,客户端就不会发送请求体,从而节省了带宽和资源。- 最终状态码:在客户端收到100状态码后,它继续发送请求体。服务器处理完请求体后,返回最终的状态码,例如200(200 OK
),表示请求成功,或者其他状态码表示不同的结果。
GET
请求与
POST
请求的区别
- GET请求:通常不涉及请求体,因此不使用
Expect
头部,服务器直接返回最终响应,没有100状态码的情况。 - POST请求:可能包含请求体,使用
Expect: 100-Continue
机制来优化性能和减少无用的数据传输。服务器首先返回100状态码,客户端再发送请求体,最后服务器返回最终的状态码。
总结
GET
请求:通常直接发送请求并接收响应,因为没有请求体,因此没有Expect
头部,也不涉及100状态码。POST
请求:如果请求体较大或有其他处理需要,客户端会使用Expect: 100-Continue
头部。服务器返回100状态码表示可以继续发送请求体,之后客户端发送实际的数据,最后服务器返回最终的状态码(如200)表示处理结果。
这个机制旨在提高传输效率,减少不必要的带宽消耗。
其他区别
- 目的:- GET:用于从服务器请求数据或资源,主要是获取信息。- POST:用于向服务器提交数据,通常是创建或更新资源。
- 数据传输:- GET:数据附加在URL中(查询字符串),通常用于少量数据的传输。- POST:数据放在请求体中,可以传输较大或更复杂的数据。
- 数据安全性:- GET:数据在URL中可见,不适合传输敏感信息。- POST:数据在请求体中,不会直接暴露在URL中,适合传输敏感信息,但仍需HTTPS来确保安全。
- 请求幂等性:- GET:请求是幂等的,即多次请求不会改变服务器的状态。- POST:请求通常不是幂等的,多次请求可能会导致服务器状态发生变化。
- 缓存机制:- GET:请求可以被缓存,浏览器和服务器可以缓存响应以提高性能。- POST:请求通常不被缓存,确保每次请求都是最新的。
GET请求是从服务器获取数据,数据被包含在URL中,大小受限于URL长度,通常不超过2KB,容易被缓存且数据会保存在浏览器历史记录中,并且是幂等的,多次执行结果相同;而POST请求是向服务器发送数据,数据包含在请求体中,大小没有限制,不会被缓存且数据不会保存在浏览器历史中,通常不是幂等的,多次执行可能产生副作用。
所谓幂等性指的是同样的请求执行多次,产生的效果是一样的,GET请求是幂等的因为只是从服务器读取数据不会对服务器产生任何影响,而POST请求通常不是幂等的因为会修改服务器上的资源,每次执行都可能产生不同的结果。
版权归原作者 KristinSun 所有, 如有侵权,请联系我们删除。