《软件测试52讲》读书笔记 —— API测试怎么做
前言
文章中还介绍了测试工具,比如cURL、postman,单API如何测试;但这些都是偏基础的东西,且网上教程各式各样,就不再赘述了;这里主要讲的就是关于复杂场景的API测试要如何应对
API测试的流程
- 准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步)
- 通过 API 测试工具,发起对被测 API 的 request
- 验证返回结果的 response
如何应对复杂场景的API测试?
测试场景一:被测业务操作是由多个API调用协作完成
背景
一个单一的前端操作可能会触发后端一系列的API调用,此时API的测试用例就不再是简单的单个API调用,而是一系列API的调用
存在的情况
- 存在后一个API需要使用前一个API返回结果的情况
- 需要根据前一个API的返回结果决定后面应该调用哪个API
存在问题
高效地获取单个前端操作所触发的API调用顺序
解决上述问题思路
- 通过网络监控手段,捕获单个前端操作时所触发的API调用顺序,譬如Fiddler、Charles等抓包工具
- 也可以通过用户行为日志,通过大数据手段来获取调用顺序
测试场景二:API 测试过程中的第三方依赖
背景
- API 之间是存在依赖关系的,比如你的被测对象是 API A,但是 API A 的内部调用了 API B,此时如果由于某种原因,API B 在被测环境中处于不可用状态,那么 API A 的测试就会受到影响。
- 在单体架构下,通常只会在涉及到第三方 API 集成的场景中才会遇到这个问题,所以还不算严重。但是,在微服务架构下,API 间相互耦合的依赖问题就会非常严重。
解决问题的核心思路
启用 Mock Server 来代替真实的 API
测试场景三:异步 API 的测试
什么是异步API
调用后会立即返回,但是实际任务并没有真正完成,而是需要稍后去查询或者回调(Callback)的 API
对异步 API 的测试主要分为两个部分
- 测试异步调用是否成功:检查返回值和后台工作线程是否被创建两个方面就可以了
- 测试异步调用的业务逻辑处理是否正确
测试异步调用的业务逻辑复杂性
因为异步 API 通常发生在一些比较慢的操作上,比如数据库 I/O、消息队列 I/O 等,此时测试往往需要去验证数据库中的值、消息队列中的值等,这就需要测试代码具有访问和操作数据库或者消息队列的能力。在实际工程项目中,这些能力一般会在测试框架级别提供,也就是说要求 API 测试框架中包含对应的工具类去访问和操作数据库或者消息队列等
《软件测试52讲》读书笔记 —— API测试怎么做的更多相关文章
- Selenium 实现 Web 自动化的原理 (软件测试52讲学习笔记)
Selenium 1.0 的工作原理 Selenium 1.0,又称Selenium RC ,RC是Remote Control的缩写.Selenium RC利用的原理:JavaScript代码可以方 ...
- mysql实战45讲读书笔记(二) 一条SQL更新语句是如何执行的 极客时间
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块.相信你还记得,一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 那么,一条更新语 ...
- mysql实战45讲读书笔记(一) 一条SQL查询语句是如何执行的
我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于MySQL的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单的表 ...
- erl_0015 《硝烟中的erlang》 读书笔记002 “为过载做计划”
为过载做计划 到目前为止,我在实际工作中所碰到最常见的错误,基本上都是节点内存耗尽.而且通常都和过长的消息队列有关37.解决这类问题的方法有很多,不过只有在深入.全面的理解系统后,才能做出正确的选择. ...
- 22 | 从0到1:API测试怎么做?常用API测试工具简介
- 重构(Refactoring)技巧读书笔记(General Refactoring Tips)
重构(Refactoring)技巧读书笔记 之一 General Refactoring Tips, Part 1 本文简要整理重构方法的读书笔记及个人在做Code Review过程中,对程序代码常用 ...
- 《软件测试自动化之道》读书笔记 之 基于Windows的UI测试
<软件测试自动化之道>读书笔记 之 基于Windows的UI测试 2014-09-25 测试自动化程序的任务待测程序测试程序 启动待测程序 获得待测程序主窗体的句柄 获得有名字控件的 ...
- 《软件测试自动化之道》读书笔记 之 基于反射的UI测试
<软件测试自动化之道>读书笔记 之 基于反射的UI测试 2014-09-24 测试自动化程序的任务待测程序测试程序 启动待测程序 设置窗体的属性 获取窗体的属性 设置控件的属性 ...
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
<软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序 启动IE并连接到这个实例 如何判断待测web程序完全加载到浏览 ...
随机推荐
- JAVA类变量、类方法
类变量(static) 类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. public class C { ...
- python如何安装Jupyter notebook
一,安装Jupyter notebook 环境:win10,python3.7 两种安装方式,这里只讲pip安装 pip install jupyter notebook 二,启动Jupyter no ...
- MySQL8服务无法正常启动的解决方法(1053错误)
个人博客 地址:https://www.wenhaofan.com/article/20190530120545 错误描述 在MySQL安装的最后一步启动失败,如下图所示 在服务和应用程序->服 ...
- Email-发送邮件
Email 发送邮件 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIME ...
- npm ERR! Cannot read property 'match' of undefined
在Vue项目中运行npm i命令时直接提示npm ERR! Cannot read property 'match' of undefined错误了,此时需要把package-lock.json文件删 ...
- 360独角兽实习,连载周记(gnuradio 低功耗蓝牙BLE 综合工具模块编写)
(有点乱,之后会有整理) 最近在用写一套gnuradio的OOT模块,主要用来进行BLE嗅探的,github上有了一些工具,可是他们并没有很好的模块化,于是打算自己写一个,这样以后做一些其他的项目,模 ...
- mysql 获取当前时间加上一个月
select DATE_ADD(NOW(), interval 1 MONTH) NOW()此处必须为时间格式 date_add() 增加 date_sub()减少 month 月份 minute 分 ...
- 配置webpack中dev.env.js、prod.env.js,解决不同命令下项目启动和打包到指定的环境
前后端分离的项目开发中,我们有开发环境.测试环境.预生产环境和生产环境. 1.开发环境下调试接口的时候,一般都会有好几个接口地址(开发服务器上的,本地的,接口开发人员的,七七八八的接口地址),要根据情 ...
- Linux shell unzip和tar 批量解压文件
#!/bin/sh UNTAR="tar -xvf " #unzip all zip files function unzip_all_file() { for i in *.zi ...
- H5_0009:关于HTML5中Canvas的宽、高设置问题
关于HTML5中Canvas的宽.高设置问题 Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法(不会被拉伸): 方法一: <canvas widt ...