接口测试入门到精通
1.课程介绍
1.接口测试相关概念(掌握)
2.restful风格
3.jason数据格式
4.Postman接口测试工具(掌握)
2.接口相关概念
2.1接口的概念
客户端:和用户交互。
服务端:提供数据、业务逻辑。
request:请求(客户端)
response:响应(服务端)
接口又叫API(application programing interface)应用程序编程接口,我们经常会说web接口,app接口。是连接客户端和服务端的桥梁,同时规定了客户端和服务端之间数据交换格式。
谁来统一规范:项目架构师或者项目经理。
2.2为什么使用接口:
- 研发标准不统一,团队磨合难度高。 - 研发周期长 - 可扩展性差
2.2.1在项目中使用接口优点:
- 统一设计标准 - 扩展性灵活 - 前后端开发相对独立,前后端都可以使用自己熟悉的技术。
2.2.2接口三要素:
-请求地址+请求方式 -请求参数 -返回值
2.3接口分类:
软件 --就是前后端共同遵守的一套数据交互的规范。
2.4接口文档
接口规范以接口文档的形式进行体现,我们做接口测试就是依据接口文档进行测试。
接口测试依据:
- 接口文档
- 需求文档
- 原型图
#2.5接口文档包含内容:
- 接口名称 ---说明接口功能
- 接口描述 ---对接口功能进行详述
- 接口地址 ---接口请求地址
- 请求方式 ---针对接口使用协议
- 传入参数 --请求所需要的数据
- 返回值 ---服务器响应数据
- 状态码 ---断言请求参数对应返回值是否正确
- 说明 ---接口其他内容
3.接口测试
3.1接口测试概念:
代替客户端验证后台程序是否正确。
3.2接口测试特点
- 无界面
- 无交互
- 不是手工测试
- 基于协议
-任何协议都由两部分组成-协议头 -协议体
- 数据校验:对请求参数和返回值格式验证。
接口测试原理
- 模拟客户端向服务器发请求。
- 服务器收到请求并经过处理返回数据
- 客户端对返回数据正确性进行验证。
接口测试分类
1.web接口测试:
- 服务器接口测试:测试自己公司实现接口(工作重点)
- 第三方接口测试:测试别人公司实现接口
2.模块接口测试:
- 程序内部接口
接口测试意义:(重点)
- 更早发现问题
-接口测试在功能性测试之前执行的 - 缩短产品研发周期
- 发现更底层问题
- 检查服务器异常处理能力
测试轮次:
- 冒烟测试(不在轮次中)
- 第一轮测试(筛选用例)
- 所有业务流程--正向流程
- 第二轮测试
- 回归第一轮bug
- 所有测试范围的所有用例
- 第三轮
- 回归前两轮的bug
- 在执行一次正向流程
- 对老的功能也要测试(迭代项目)
- 验收测试(开发不再更新代码了)
- 验收测试环境(UAT)
- UAT环境----接近线上环境
- 验收测试环境(UAT)
- 线上验证
- 测试人员不再线上环境产生数据
- 不产生交易
- 测试人员不再线上环境产生数据
接口测试VSUI测试
UI测试:
-web应用和app迭代速度非常快 -页面更新更频繁 - 测试成本高于效益 - 可交付第三方进行测试(云测,众测)
接口测试
针对服务端后台测试,接口规则一旦确定。后期的变化非常小,接口测试性价比更高。成为企业内重点测试对象。 服务端中保存着用户数据、业务数据、交易数据等,倘若任何一个接口实现有问题,都会影响所有用户,服务端数据和业务逻辑关系着企业的命脉,所以极少有企业把接口测试交给第三方进行测试。作为测试人员,我们需要验证接口见数据传递的正确性和完整性。
如何进行接口测试
接口测试三要素:
- 根据url定位服务器资源 - 设置提交的数据 - 查看相应结果
接口测试流程:
需求讨论>需求评审>场景设计(用例设计)>数据准备>执行用例
接口测试重点:测试用例设计:
- 理清思路
- 提高测试效率
- 跟进测试进度
- 跟进重复性工作
- 告诉领导做过
接口测试用例设计着手点:
1.功能
2.业务逻辑
3.异常
4.安全
1.功能用例设计的测试点:1功能是否正常2.功能是否根据接口文档实现
2.业务逻辑用例设计的测试点: 1.是否依赖业务(比如‘下单’操作要判断是否已经登陆成功)
3.异常用例设计的测试点:
- 异常参数:(请求参数的参数名)
- 关键字参数
- 参数为空
- 多少参数
- 错误参数
- 异常数据(请求参数对应的值)
- 关键字数据
- 数据为空
- 长度不一致
- 错误参数
4.安全用例设计测试点:1.cookie 2.header 3.唯一识别码
3.http协议
http请求
- 请求行
-请求方式- 请求地址
- 协议版本-HTTP1.1
- 请求头--header
- useragent:发送请求设备信息
- contenttype:请求内容的数据类型:
- form_data
- json
- x_www_form_urlencoded
- binary
- cookie
- 空行
- 请求体:
- 请求参数的具体内容
http响应
- 状态行
- 响应状态码
- 响应头
- 与请求头类似
- 空行
- 响应体
- 响应内容
状态码
- 响应内容
- 2xx
- 200 表示成功处理请求,但是返回数据不一定是想要的(和服务器连接通畅)
- 3xx
- 301 永久重定向
- 4xx
- 404 表示访问资源不存在(可能地址写错了)
- 403 没有权限
- 5xx
- 503 表示服务器现在拒绝请求
HTTP请求方式
get:
向服务器请求资源
- 请求参数(params):
- 写在url地址后
- url?参数名=参数值&参数名2=参数值2
post
向服务器新增资源
- 请求参数(body)(一二按照键值对显示,对应python中字典)
- form_data
- x_www_form_urlencoded
- raw
- json json字符串
- xml
- binary 上传文件
put
向服务器更新资源,表现形式和post相同。
delete
向服务器发送删除资源,表现形式和get相同
4. RESTful风格
5.json数据格式
5.1什么是json
- json指javaScript对象表示方法 - 轻量级文本数据交换格式 - 具有自我描述性,更易理解
5.2json语法
格式1-json对象:{‘键1’:‘值1’,‘键2’:‘值2’} 格式2-json数组:[值1,值2,值3,,,] 复合格式(嵌套): 对象+素组:{'name':'葫芦娃','age':'8','技能':['','','']} 数组+对象:[{},{}]
6.接口测试顺序
6.1测试环境准备
- 安装 - pip install -r requirements.txt - 启动 - python run_server.py
6.2接口测试工具
- postman - Python-requests
6.3接口测试执行顺序
- 测试单接口
- 接口调试--开发配合
- 达到效果
- 接口在正常数据下可以请求成功
- 单接口测试
- 接口在正常数据下可以请求成功
- 达到效果
- 执行接口测试用例
- 接口调试--开发配合
- 测试关联接口(多接口联合测试)
- 根据业务逻辑中需要用到的接口
- 将这些接口串联起来进行测试
- 接口之间的交互
7.fiddler
7.1fiddler:
fiddler是抓包工具 ,Charles在mac系统上 ,HTTPwatch是和IE浏览器结合比较好areshark(http,tcp,ip)
在什么情况下使用
- 辅助手工测试
- 定位bug 区分一个bug是前端还是服务端
- 对于web 定位bug使用的是浏览器的f12 ---network
- 对于app应用 定位bug需要借助抓包工具
7.2使用fiddler抓浏览器的包
- 抓包工具默认抓HTTP协议
- 抓https协议
- 1.打开fiddler-tools-options
- 2.选择HTTPS:勾选decrypt HTTPS traffic,点击export root certificate to desktop
- 3.设置浏览器
- 设置-高级-证书管理
- 导入-先择fiidler证书-确定
- 4.重启fiddler
- 辅助手工测试
8.postman使用
接口测试三要素-接口文档中提取
接口返回值-系统数据库中得到
8.1 postman中使用get请求
不带参数的get请求
- 将请求地址复制到地址栏中即可
- 点击send
带参数的get请求
- 可以将地址复制到地址栏即可
- 填写参数
- 可以直接在请求地址后进行添加
- 请求地址?参数1=参数值1&参数2=参数值2
- 在postman--params选项
- 按照键值对格式填写请求参数书
- 可以直接在请求地址后进行添加
8.2postman环境变量
添加环境变量
-postman--设置--add添加环境变量- 环境变量名称 - 添加具体变量
引用变量
- 在postman右上角下拉菜单中选择需要 的局部变量
- 引用一个具体变量{{}}