接口测试实战课 读书笔记 接口测试入门

作者: 小菠萝测试笔记

什么是接口?

接口就是有特定输入和特定输出的一套逻辑处理单元,而它不用知道自身的内部实现逻辑,也可以叫做接口的黑盒处理逻辑

由于服务对象不同,接口又可以分为两种

  • 一种是系统或服务的内部接口
  • 一种是外部依赖接口 内部接口

系统内部调用的接口 内部接口的实际场景

购物流程,从登录系统,到加入购物车,再到支付订单,这一长串的流程中,都是通过系统内部接口来完成的 外部接口

外部系统对外提供的接口 外部接口的实际场景

你在购物后点击付款时,页面会跳转到支付系统,等你完成支付流程后,再跳转回订单页,在这样的流程中,都会涉及系统对外的接口,还比如说付款工程的支付接口、配送过程的物流接口等等 接口的本质 其实就是一种契约,遵循这样一种形式:在开发前期,们约定接口会接收什么数据;在处理完成后,它又会返回什么数据

什么是接口测试?

接口测试,其实就是验证接口内部处理逻辑是否正确;们既要保证单接口的正确性 ,也要保证接口的业务逻辑正确性,主要体现在两方面:

  • 输入正确的测试数据,验证接口正常处理后返回的结果是否正确(数据结构\&数据内容)
  • 输入异常的测试数据,验证接口能否正确处理异常数据并返回特定提示,是否合理,是否健壮 简单来说
  • 正确接受合法 Request 入参
  • 正确拒绝非法 Request 入参

这两种情况都是要验证的,都属于正向测试 反向测试

  • 正向测试相对应的是反向测试
  • 反向测试是指:测试流程的反向测试或者是功能的反向测试,这是一个在业务测试里的概念,例如:支付付款是正向测试,那么退款是反向测试

为什么说接口测试如此重要?

从它对项目的影响来说,接口测试直接测试后端服务,更加接近服务器上运行的代码程序,也更能发现影响范围广泛的 Bug。 越接近底层的 Bug,影响用户范围越广

随着中台化、服务化的发展,一套服务支持多种终端,例如 Android 端、iOS 端、Web 端等,这些服务都是由一套后端服务支持的。

如果在Web端发现一个界面问题,影响的只是Web端用户,倘若一个服务宕掉,影响的就不止是Web端,还有Android 端、iOS 端

目前流行的测试模型

分层测试可以看到现在流行的模型更多偏向于接口测试

在质量保障过程中,们的测试工程师会不断增大接口测试的测试深度和测试广度,往下逐渐覆盖一些公共接口的单元测试内容,往上则逐渐覆盖应该由 UI 层保障的业务逻辑测试,这么做的主要目的,就是为了更好地完成质量保障工作,交付一个可靠的、高质量的项目。

所以,从接口测试这一环节开始,测试工程师就变成了质量保障工作的主要推动者,接口测试也变得愈发重要。 接口测试的优越性

  • 接口测试更容易和其他自动化系统相结合;
  • 相对于界面测试,接口测试可以更早开始,也可以测试一些界面测试无法测试的范围,因此它使测试更早的投入这句话变成现实;
  • 接口测试还可以保障系统的鲁棒性,使得被测系统更健壮。

不同协议形式的测试

  • HTTP 协议的接口
  • RESTful 格式的接口
  • WebService 的接口
  • RPC 协议的接口

其实无论是哪一种形式的接口,它们都是通过某一种传输协议,在 Client 端和 Server 端之间来完成数据传递的。

假如测试的是 Web 端网站,那么 Client 端就是浏览器,Server 端就是 Web 服务,那么浏览器和 Web 服务之间,就是通过 HTTP 协议传输的;

测试的是移动端的app,那么 Client 端就是你的设备上安装的极客时间应用,Server 端就是 RESTful 格式的接口服务,那么极客时间的应用和 RESTful 格式的接口服务,就是通过 JSON 格式的数据来传递的。 结论:接口测试其实就是模拟调用方,比如 Client 端,通过接口通信来检测被测接口的正确性和容错性

接口测试工作场景

单接口的测试

单接口测试的重点,其实就是保证该接口的正确性和健壮性。也就是说,你既要保证这个接口可以按照需求,正确处理传入的参数,给出正确的返回;也可以按照需求,正确的拒绝传入非正确的参数,给出正确的拒绝性返回。 总结:需要有足够的用例保证接口能正确处理各种正常情况和异常情况 业务流程的接口测试(多接口测试)

主要是保障通过多个接口的串联操作可以完成原来需求中提出的业务逻辑 总结:重点在于业务流程是否能跑通 拓展:们更需要关心业务流和数据流的关系,并不需要再过度关心如何用业务流的方法覆盖更多的代码逻辑异常 多个接口串行分析

在大部分的测试场景中,们都需要串行多个接口,才能完成一个完整的业务逻辑;多个接口之间并不是随意组合的,而是按照业务逻辑、通过数据传递来完成的。所以要完成整体业务逻辑的接口测试,需要理清每个流程的数据流程,而数据流程驱动了业务流处理 工作实践

分层测试中为什么在单元测试和界面测试之间要加入一层接口测试的主要原因之一。

  • 通过单接口测试,可以更加接近于单元测试;
  • 通过业务流的接口测试,可以更加接近于界面所承载的交互中的业务流验证

这也是为什么现在很多人在提倡将测试模型由原来的金字塔形往菱形转变的依据之一了。 接口测试总结 接口测试的执行方式、设计思维都和业务测试不完全一致,它们既有交集又有差异。

交集部分是它们都会涉及到业务逻辑测试,但是接口测试更加关注有数据流驱动的业务流程,而不再着眼于代码异常、代码边界等,这些边界问题在接口测试过程中已经由单接口测试完成了。

接口测试在单接口测试的设计思维上也更加贴近于代码的单元测试,但它还是站在 Client 端的角度来完成测试;而接口测试的业务逻辑测试更加靠近手工业务测试,但却更加聚焦于业务逻辑本身,不再将一些非法业务异常放到该部分进行测试。 在测试手段上,接口测试算是技术驱动和业务驱动双管齐下的工作(界面测试却是业务驱动为主的工作)

因此,你需要借助一定的工具来完成它。这个工具既有可能是成熟的工具,也有可能是你自己写的代码,因此,测试技术会在接口测试阶段,变得和业务知识一样重要。

关于接口测试中的Cookie

Cookie 中传递的参数很多都是用来确认用户身份、鉴定角色权限等需要的参数。 Cookie 内容是完成接口测试必须要模拟并传递的一些信息,因此,们必须要尽可能完善它,使它成为接口测试的必要输入条件之一。

一般来说,当你测试一个接口的时候,你可以将接口的信息弄成一个表

被标注为白色背景的部分,是这次访问的基本信息;

被标注为黄色背景的部分,是访问的头信息,同时也是们已知的内容,因为字段\&值都是统一的

被标注为红色背景的部分,就是 Cookie 信息,是们未知的内容(针对Cookie的各项参数们需要向开发询问他们的含义)

需要了解Cookie哪些信息?

参数的含义以及来源

要知道参数的含义是拿来干嘛的,也要知道这个参数的赋值是从哪里来的,是从其他页面的返回值中得到的?还是 JS 生成的?如果是其他页面或者接口返回的,那么,是哪一个接口返回的哪个字段?这样,当你开始做接口测试的时候,你就知道去哪里拿到这个参数的赋值了。 参数的作用域

是指这个参数在这个接口中是做什么用的,它在哪一个访问周期里是一直存在的,它是否导致了业务逻辑分支等。比如说,这个参数是用来验证用户权限吗?它的验证算法是什么?之所以要搞清楚这些内容,是为了你在做接口测试的时候,可以设计更小的参数组合来覆盖更多的业务逻辑,这是测试用例去除冗余的一个很好的方法。 返回值的含义

针对接口返回的 JSON,你要搞清楚在返回值中,每一个 JSON 的 Key 所对应的含义,这样,当你需要和这个接口产生交互的时候,就可以快速地拿到对应参数的含义,完成业务逻辑上下文的参数串联了。

原文创作:小菠萝测试笔记

原文链接:https://www.cnblogs.com/poloyy/p/12264323.html

文章列表

更多推荐

更多
  • Ansible2实战-五、消费和创建模块 技术要求,使用命令行执行多个模块,查看模块索引,从命令行访问模块文档,模块返回值,开发定制模块,避免常见的陷阱,测试和记录您的模块,模块清单,向上游投稿–提交 GitHub 拉取请求,摘要,发现插件类型,问题,进一步, 在这本书里
    Apache CN

  • Ansible2实战-十、容器和云管理 技术要求,使用行动手册设计和构建容器,管理多个容器平台,使用可扩展容器部署到 Kubernetes,用 Ansible 管理 Kubernetes 对象,安装 Ansible 的库本内特依赖项,用 Ansible 列出 Kubernet
    Apache CN

  • Ansible2实战-九、使用 Ansible 的网络自动化 技术要求,为什么要自动化网络管理?,了解 ansible 如何管理网络设备,实现网络自动化,查看可用的 Ansible 网络模块,连接到网络设备,网络设备的环境变量,网络设备的条件语句,摘要,问题,进一步, 多年前,标准做法是手工
    Apache CN

  • Ansible2实战-十二、Ansible Tower 入门 技术要求,安装 AWX,运行你的第一个剧本从 AWX,创建 AWX 项目,创建库存,创建作业模板,运行作业,控制进入 AWX,创建用户,创建团队,创建组织,在 AWX 分配权限,摘要,问题, Ansible 非常强大,但它确实需要
    Apache CN

  • Ansible2实战-十一、故障排除和测试策略 技术要求,挖掘行动手册执行问题,使用主机事实诊断故障,用剧本测试,使用检查模式,解决主机连接问题,通过命令行界面传递工作变量,限制主机的执行,刷新代码缓存,检查错误的语法,摘要,问题,进一步, 与任何其他类型的代码类似,Ansib
    Apache CN

  • Ansible2实战-第三部分:在企业中使用 Ansible 在本节中,我们将从实际出发,看看如何在企业环境中最大限度地利用 Ansible。在开始使用 Ansible 管理云和容器环境之前,我们将首先了解如何使用 Ansible 自动化您的网络设备。然后,我们将了解一些更高级的测试和故障
    Apache CN

  • Ansible2实战-第二部分:扩展 Ansible 的能力 在这一节中,我们将介绍 Ansible 插件和模块的重要概念。我们将讨论它们的有效使用,以及如何通过编写自己的插件和模块来扩展 Ansible 的功能。我们甚至会考虑将您的模块和插件提交回官方 Ansible 项目的要求。我们还
    Apache CN

  • Ansible2实战-第一部分:学习 Ansible 的基础知识 在本节中,我们将了解 Ansible 的基本原理。我们将从安装 Ansible 的过程开始,然后我们将掌握基础知识,包括语言和特殊命令的基础知识。然后,我们将探索 Ansible 清单,然后再考虑编写我们的第一个行动手册和角色来
    Apache CN

  • Ansible2实战-十三、答案 第一章,第二章,第三章,第四章,第五章,第六章,第七章,第八章,第九章,第十章,破产重组保护,第十二章,第一章1.甲,乙 2.C 3.A 第二章1.C 2.B 3.A 第三章1
    Apache CN

  • Ansible2实战-八、高级 Ansible 主题 技术要求,异步与同步操作,控制滚动更新的播放执行,配置最大故障百分比,设置任务执行委托,使用一次性运行选项,在本地运行行动手册,使用代理和跳转主机,在游戏和任务中放置标签,使用可加密保管库保护数据,摘要,问题,进一步, 到目前为止
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多