一、接口测试
1、目标
- 编写接口测试用例
- postman进行接口测试
- requests封装接口测试框架–明天讲
2、接口介绍
指系统或组件之间的交互点, 通过这些交互点可以实现数据的交互
硬件接口与软件接口, 作为测试工程师, 更多关注软件层面的接口
3、接口测试
接口测试, 是对系统或组件之间的接口进行测试,主要检查接口数据传递的正确性、接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理。
4、接口测试原理
我们接口测试的原理,就是使用工具或代码 来模拟客户端向服务端发起请求,来完成接口访问。
模拟客户端向服务端发起请求,服务器收到请求做出响应,检查响应是否符合预期,这个就是接口测试的过程。
5、接口测试特点
-
测试可以提前介入,提早发现Bug,符合质量控制前移的理念
-
可以发现一些页面操作发现不了的问题
-
接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
-
接口测试是从用户的角度对系统进行全面的检测
6、接口测试实现方式
- 使用工具来实现
JMeter、postman、抓包工具fiddler
接口测试的本质就是通过向接口发送请求, 查看响应是否正确. 现阶段主要以postman工具来实现接口测试, JMeter会在后续的性能测试中重点讲解
- 编写代码来实现
使用python+requests模块,
接口测试的另一种方式就是通过代码实现, 由于本质就是向接口发送请求, 同样可以使用代码实现, 并且代码相比工具实现起来更加灵活, 但要求测试人员具有一定的coding能力.
7、接自动化
按照是否自动化进行测试分类, 可以分为:
- 手工测试
- 自动化测试
接口自动化测试:
针对接口进行测试, 用工具或代码代替人进行测试的一种活动
8、HTTP
- 请求头
# 请求头: 请求头紧接着请求行,请求头部由键值对组成,每行一对. 请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
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: 在表单中进行文件上传时使用
- 响应
状态码:
200系列:
200 成功 服务器已成功处理了请求 # 重点1
300系列:
301 永久移动 请求的网页已永久移动到新位置,即永久重定向 # 重点
302 临时移动 请求的网页暂时跳转到其他页面,即暂时重定向 # 重点
400系列:
400 错误请求 服务器无法解析该请求 # 重点
401 未授权 请求没有进行身份验证或验证未通过
403 禁止访问 服务器拒绝此请求 # 重点
404 未找到 服务器找不到请求的网页
500系列
500 服务器内部错误 服务器遇到错误,无法完成请求 # 重点
501 未实现 服务器不具备完成请求的功能
502 错误网关 服务器作为网关或代理,从上游服务器收到无效响应
504 网关超时 服务器作为网关或代理,但是没有及时从上游服务器收到请求
505 HTTP版本不支持 服务器不支持请求中所用的HTTP协议版本
9、Restful架构特点
# RESTful架构特点:
(1).每一个URL代表一种资源
(2).客户端和服务器之间,传递这种资源的某种表现层
(3).客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"
(4).接口之间传递的数据最常用格式为JSON。
# 常用的HTTP动词有下面四个:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
7、接口测试流程
# 接口测试流程
(1)需求分析: 主要依据需求文档
(2)接口文档解析: 一般是由开发人员编写接口文档(API文档)
(3)设计测试用例
(4)执行测试
- 使用接口测试工具实现
- 通过编写代码实现
(5)接口缺陷管理与跟踪
(6)生成测试报告
(7)接口自动化持续集成(可选)
二、postman使用
1、基础
1、会创建 collection集合
2、会在集合中创建具体请求request、会重命名
3、会使用postman进行 get请求,携带参数
4、会使用postman进行post请求,携带数据:
携带数据可以分为几种各种:
① form-data 格式
Content-Type: multipart/form-data
② x-www-form-urlencoding
Content-Type: application/x-www-form-urlencoded
③ json
Content-Type: application/json
2、高级
- 用例管理
我们接口用例也很多,分属于不同的模块,模块还可以进一步划分
因此为了方便管理测试用例,我们要指定几个概念
collection-集合
folder-文件夹(目录)
http request- 请求接口
我们可以把一个项目作为一个集合
然后把每个模块 作为文件夹
在把每一个接口作为 request