接口自动化测试
霍格沃兹测试开发学社
ceshiren.com
目录
- 接口测试自动化测试介绍
 
- 接口测试用例设计
 
- 接口自动化测试实战
 
接口自动化测试场景
autonumber
scale 1000*800
actor 测试 as tester
participant 代码编辑器 as vs
participant "代码仓库(git、svn)" as git
participant "调度平台(Jenkins)" as jenkins
participant 测试报告 as report
tester -> vs: 编写接口测试用例。
vs -> git: 编写完成、调试成功后提交到git。
jenkins -> git:  jenkins触发构建后,拉取仓库中的代码。
jenkins -> report: 执行自动化测试代码产生测试报告。
tester -> report: 测试工程师直接查看测试报告结果。
接口自动化测试的价值
| 成本 | 
⭐️⭐️⭐️ | 
⭐️ | 
 | 
| 测试效率 | 
⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
| 用例编写效率 | 
⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
| 稳定性 | 
⭐️⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
| 自动化回归测试效率 | 
⭐️⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
| 测试覆盖度 | 
⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
| 自动生成用例 | 
⭐️⭐️ | 
⭐️⭐️⭐️⭐️⭐️ | 
 | 
- 如何使用抓包工具fiddler、Charles对APP抓包?
 
- 给你一个接口怎么测试?
 
- 接口测试能发现哪些问题
 
- 做接口测试,依赖登录接口怎么办
 
- 没有任何文档,怎么快速了解接口的信息?
 
- 如何把流程化的测试脚本抽象为测试框架?
 
- 怎么用 Mock 解决混乱的调用关系?
 
- 如何并发运行测试用例,测试用例的顺序如何控制
 
- 接口测试流程,Charles 抓包(反向代理)、接口场景题(实际就是问 Postman 怎么用)
 
- 其他接口都需要登录接口的信息,怎么去让这个登录的接口只在其他接口调用一次
 
- 接口产生的垃圾数据如何清理
 
- 怎么用接口案例去覆盖业务逻辑?
 
- 接口自动化实现思路
 
- API测试用例的编写
 
- 接口测试之RESTful
 
- 接口测试的维度
 
- 接口自动化的用例是如何选取,怎么评判接口自动化跑完后,覆盖率是多少
 
- 测了多少接口,测试case有多少?这些接口跑自动化脚本需要多久,通过率多少?
 
- CI/CD如何实现的,你负责了哪些工作?
 
- 接口自动化的执行时间与稳定性
 
- 你们接口自动化的测试流程是怎么样的?
 
- 写接口自动化测试用例时,你使用了 requests 库,那大概使用到了 requests 的哪里内容?
 
- 你们会做一些接口的开发工作吗?使用什么技术?具体的流程?
 
- 接口自动化测试过程中,关联自动化测试如何做?单个模块和多个模块关联的话会怎么去做?
 
接口测试流程
@startuml
scale 500*800
:需求分析;
:测试设计;
:测试用例评审;
:测试执行;
:验收;
:预发布;
:上线;
@enduml
接口测试用例设计思路
@startmindmap
*[#Orange] 接口测试思路
**[#lightblue] 基本功能流程测试
***[#lightgreen] 冒烟测试
***[#lightgreen] 正常流程覆盖测试
**[#lightblue] 基于输入域的测试
***[#lightgreen] 边界值测试
***[#lightgreen] 特殊字符校验
***[#lightgreen] 参数类型校验
***[#lightgreen] 必选参数校验
***[#lightgreen] 组合参数校验
***[#lightgreen] 有效性校验
***[#lightgreen] 默认值校验
***[#lightgreen] 排重逻辑
left side
**[#lightblue] 接口幂等性
***[#lightgreen] 重复提交
**[#lightblue] 故障注入
***[#lightgreen] Redis故障降级测试
***[#lightgreen] 服务故障转移测试
**[#lightblue] 线程安全测试
***[#lightgreen] 并发测试
***[#lightgreen] 分布式测试
***[#lightgreen] 数据库读写安全测试
@endmindmap
接口测试用例要素
- 用例名称
 
- 接口地址
 
- 请求方式
 
- 前置条件
 
- 请求头部
 
- 请求参数
 
- 响应状态码
 
- 预期响应结果
 
Requests 介绍
- 官网:https://2.python-requests.org/en/master/
 
- 优点
- 功能全面:http/https支持全面
 
- 使用简单:简单易用,不用关心底层细节
 
 
![]()
演练环境
- http://httpbin.ceshiren.com/
 
![]()
Requests 安装
- pip 命令安装:
pip install requests 
- pycharm 安装:
 
![]()
发送 GET 请求
import requests
r = requests.get(url)
 
响应内容
import requests
r = requests.get(url)
r.text
r.content
r.json()
r.raw
 
响应状态码
import requests
r = requests.get(url)
r.status_code
 
传递 URL 参数
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get(url, params=payload)
 
定制请求头
import requests
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
 
发送 POST 请求
# json请求示例
import requests
r = requests.post(url, json=data)
 
实战练习
电子商场前端: https://litemall.hogwarts.ceshiren.com/vue/index.html#/