目录:导读
前言
API测试的流程
准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步)
通过 API 测试工具,发起对被测 API 的 request
验证返回结果的 response
如何应对复杂场景的API测试?
场景1:被测业务操作是由多个API调用协作完成
背景
一个单一的前端操作可能会触发后端一系列的API调用,此时API的测试用例就不再是简单的单个API调用,而是一系列API的调用
存在的情况
存在后一个API需要使用前一个API返回结果的情况
需要根据前一个API的返回结果决定后面应该调用哪个API
存在问题
高效地获取单个前端操作所触发的API调用顺序
解决上述问题思路
通过网络监控手段,捕获单个前端操作时所触发的API调用顺序,譬如Fiddler、Charles等抓包工具;
也可以通过用户行为日志,通过大数据手段来获取调用顺序;
场景2:API 测试过程中的第三方依赖
背景
API 之间是存在依赖关系的,比如你的被测对象是 API A,但是 API A 的内部调用了 API B,此时如果由于某种原因,API B 在被测环境中处于不可用状态,那么 API A 的测试就会受到影响。
在单体架构下,通常只会在涉及到第三方 API 集成的场景中才会遇到这个问题,所以还不算严重。但是,在微服务架构下,API 间相互耦合的依赖问题就会非常严重。
解决问题的核心思路
启用 Mock Server 来代替真实的 API
场景3:异步 API 的测试
什么是异步API
调用后会立即返回,但是实际任务并没有真正完成,而是需要稍后去查询或者回调(Callback)的 API
对异步 API 的测试主要分为两个部分
测试异步调用是否成功:检查返回值和后台工作线程是否被创建两个方面就可以了;
测试异步调用的业务逻辑处理是否正确;
测试异步调用的业务逻辑复杂性
因为异步 API 通常发生在一些比较慢的操作上,比如数据库 I/O、消息队列 I/O 等,此时测试往往需要去验证数据库中的值、消息队列中的值等,这就需要测试代码具有访问和操作数据库或者消息队列的能力。
在实际工程项目中,这些能力一般会在测试框架级别提供,也就是说要求 API 测试框架中包含对应的工具类去访问和操作数据库或者消息队列等
API测试面试常问
面试题:你们接口怎么鉴权的?
答:
通过用户和密码,auth鉴权;
通过 cookie和 session;
通过 token;
通过sign签名;
现在app一般是通过 token鉴权,有些是通过把 token放在请求头里面,有些是通过 singn签名这个字段放在body里面去鉴权的,一般的web是通过 session去鉴权的
面试题:cookie、session、token的区别?
答:
它们都是用来做鉴权的,区别的话,大概是这样的
现在 cookie、session一般是配合使用的用户第一次登陆时,服务器会创建一个 session生成一个 sessionID,sessionID保存在 cookie中,然后返回到客户端,保存在浏览器中。
客户端每次发请求都会把这个值带到服务器,做一个鉴权和会话的跟踪,或者时效的验证
token和 cookie、session差不多,通过算法,每次验陆,会产生一串很长的随机字符串,一般是在放在返回的body里面,或者返回的头里面,他们都是服务器产生,带过来是要做验证和时效的验证的。
一般在app中使用token比较多一点,Web端使用cookie、session的鉴权方式会多一点。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只有付出,才能获得回报;只有坚持,才能看到成功的曙光。在努力奋斗的路上,没有捷径可走,但不要放弃希望,因为每一份努力都会让你更接近目标。相信自己的实力,勇敢迎接挑战,你会发现,成长的旅程其实很美好。
每一天都是一个新的开始,不要因过去的失败而沉溺,在挫折中寻找成长的机会,坚持自己的梦想,勇往直前,无坚不摧,你将成为自己心中最强大的存在。
只有不断挑战自我,才能超越自己;只有不断努力,才能实现梦想;只有坚持不懈,才能迎来成功的曙光。让我们勇往直前,不停歇地奋斗,成就辉煌的人生!