1. 接口测试基础
基础知识
什么是接口?
接口分类
硬件接口:指的是两个硬件设备之间的连接方式
软件接口:简单来说就是软件程序之间的数据交互通道
软件接口分类
程序内部接口:同一个系统中模块与模块间的接口
举例:登录->浏览商品->加入购物车->下单
外部接口:是跨系统平台与平台间的对接
举例:付款->支付 快递->物流
常见接口分类
不管是哪一种形式的接口,本质上都是通过某一种传输协议,在客户端与服务端之间传递数据
Http接口:目前使用最为广泛,使用http协议传输数据,常用的测试工具Jmeter、Postman等
Web Service接口:使用soap协议通过http传输,请求报文和响应报文一般是xml格式的,常用的测试工具SoapUI
什么是接口测试?
本质上基于某种协议,模拟客户端发送请求给服务器,服务器返回响应数据,对响应数据进行分析,判断和我们的预期是否一致(断言),从而验证功能是否正确。
为什么要做接口测试?
经典测试金字塔:
接口测试优点:
- 接口测试更早介入,降低研发成本
- 更容易实现自动化测试、比UI稳定
- 更加接近于底层,发现的BUG影响范围广
接口测试流程
一、需求分析:理清功能、需求明确
二、接口分析:接口文档(抓包)分析请求与响应,接口之间的依赖关系
三、测试计划:分配测试任务进度安排和指导测试方案执行
四、用例设计:根据功能整理提取测试点,运用如等价类、边界值、场景法
单接口场景
保障接口的正确性,既要保证接口可以按照需求正确处理传入的参数,给出正确的返回;也要按照需求,正确的拒绝传入非法的参数,给出正确的拒绝性返回。
-
正向场景:正常发送请求得到正常的响应数据
所有必填参数 全部参数(必填参数+选填参数) 参数组合(必填参数+某些选填参数)
-
异常场景:用不属于规定范围的数据区发送请求检查服务器能否正常处理
参数异常:关键字参数、参数为空、多、少参数、错误参数 数据异常:关键字数据、数据为空、长度不一致、错误数据
多接口场景
站在用户角度考虑常用的使用场景,通过多个接口的串联组合调用完成业务逻辑,更加关注于业务流程是否能跑通
五、测试准备:测试环境搭建、测试数据准备
六、测试执行:使用对应接口测试工具执行测试用例
七、缺陷管理:缺陷提交->修复->回归->关闭
八、测试报告:缺陷统计、分析、总结
Fiddler抓https请求:http://testingpai.com/article/1595507292210
Fiddler抓包工具官网:https://www.telerik.com/fiddler
postman接口测试工具官网:https://www.postman.com/
接口四大要素:
- 请求方法
- 请求地址
- 请求头
- 请求参数
get请求与post请求的区别
- get请求把请求参数数据拼接到URL地址的后面(查询参数),post请求把请求参数数据放到请求体
- get请求传输的数据量相对来说比较小,post请求传输的数据量更多
post请求传参的类型:
- Content-Type:application/json json 传参
- Content-Type:multipart/form-data 多参数表单 – 传输大容量的数据(上传文件)
- Content-Type:application/x-www-form-urlencoded form表单传参
总结
1、接口/接口测试基础概念
2、金字塔测试模型
3、接口测试开展流程(掌握,面试问的较多)
4、通过抓包工具分析接口协议(http协议),接口请求/接口响应
5、postman接口测试工具模拟发送接口请求
HTTP协议
HTTP概念
- Hyper Text Transfer Protocol(超文本传输协议);
- 是因特网上应用最为广泛的一种网络传输协议,HTTP最初是为
Web 浏览器与 Web 服务器之间的通信而设计的; - HTTP 基于 TCP/IP 通信协议来传递数据(HTML文件、图片文件、查询结果等),属于应用层协议,默认端口为80。
HTTP请求
HTTP请求主要由请求行、请求头、请求体组成。
1. 请求行
包括:
<请求方法> <统一资源定位符URL> <http协议版本>
1.1 统一资源定位符URL(Uniform Resource Locator)
用于描述互联网上的网页和其他的资源地址
格式:
schema://host[:port]/path/.../[?query-string]
- scheme:协议,如http,https,ftp等
- host:域名或者IP地址
- port:端口
- path:资源路径
- query-string:发送的参数
1.2 请求方法
请求方法 | 备注 |
---|---|
GET | 查询、获取资源-查 |
POST | 更新资源-改 |
PUT | 替换资源-增 |
DELETE | 删除资源 |
HEAD | 获取服务器响应消息头 |
PATCH | 更新资源,替换部分资源 |
GET与POST请求方法的区别?(高频面试题)
-
提交数据的方式不同
GET将请求数据附在URL之后 POST将请求数据放在请求体中
-
传输的数据量大小不同
GET方法URL长度受限制 POST方法理论上请求体中的数据不受大小限制
-
安全性不同
GET直接将信息暴露在URL中 POST放在请求体中更加安全
2. 请求头
请求头 | 描述 |
---|---|
Host | 主机ip地址或域名 |
User-Agent | 客户端相关信息,比如操作系统、浏览器等信息 |
Accept | 指定客户端接收信息类型,如:image/jpg,text/html,application/json |
Accept-Charset | 客户端接受的字符集,如gb2312、iso-8859-1 |
Accept-Encoding | 可接受的内容编码,如gzip |
Authorization | 客户端提供给服务端,进行权限认证的信息 |
Cookie | 携带的cookie信息 |
Referer | 当前文档的URL,即从哪个链接过来的 |
Content-Type | 请求体内容类型,如Content-Type: application/x-www-form-urlencoded |
Content-Length | 数据长度 |
Cache-Control | 缓存机制,如Cache-Control:no-cache |
Pragma | 防止页面被缓存,和Cache-Control:no-cache作用一样 |
3. 请求体
存放请求携带的数据
HTTP响应
包含状态行、响应头、响应正文
1. 状态行
格式:
<http版本> <状态码> <状态码描述>
状态码:用以表示网页服务器HTTP响应状态的3位数字代码
状态码 | 描述 |
---|---|
1XX | 请求已接受待处理 |
2XX | 请求成功并返回 |
3XX | 重定向相关,请求资源位置发生了变化 |
4XX | 客户端发送请求错误 |
5XX | 服务器端错误 |
2. 响应头
响应头 | 描述 |
---|---|
Server | HTTP服务器的软件信息 |
Date | 响应报文的时间 |
Expires | 指定缓存过期时间 |
Set-Cookie | 种Cookie |
Last-Modified | 资源最后修改时间 |
Content-Type | 响应的类型和字符集,如:Content-Type: text/html; charset=utf-8 |
Content-Length | 内容长度 |
Connection | 如Keep-Alive,表示保持tcp连接不关闭,不会永久保持连接,服务器可设置 |
Location | 指明重定向的位置,新的URL地址,如304的情况 |
3.响应数据
存放服务端响应的数据
常见面试题
- 说说接口测试如何做的?
- 接口测试中常见的返回(响应)状态码?
- 平常用什么工具测接口的?
- get和post区别是什么?
- 在浏览器中输入URL,整个流程是怎么样的?
作业
- 安装好postman/fiddler工具
- 通过fiddler工具分析项目的接口请求(登录->商品搜索->商品详情页接口->添加购物车),通过xmind工具梳理接口信息,再通过postman工具发起请求去测试下
Judy_juanzi: 谢谢
CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java
Judy_juanzi: 感谢你的关注
不正经的kimol君: 这写的什么啊你这样的人我不想多说什么, 直接一键三连等我水平够了再回来看,留下“牛X”二字