接口自动化测试
霍格沃兹测试开发学社
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#/