霍格沃兹测试开发

接口自动化测试

霍格沃兹测试开发学社

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: 测试工程师直接查看测试报告结果。

接口自动化测试的价值

web自动化测试 接口自动化测试
成本 ⭐️⭐️⭐️ ⭐️
测试效率 ⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
用例编写效率 ⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
稳定性 ⭐️⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
自动化回归测试效率 ⭐️⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
测试覆盖度 ⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
自动生成用例 ⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️

接口自动化测试在企业中的实践

  • 如何使用抓包工具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类型
    • 表单类型
    • 文件类型
    • xml类型
# json请求示例
import requests

r = requests.post(url, json=data)

实战练习

电子商场前端: https://litemall.hogwarts.ceshiren.com/vue/index.html#/

  • 单接口场景
    • 搜索接口的测试
  • 流程覆盖测试
    • 下单场景的测试