接口测试入门必会知识总结(学习笔记)

news2024/12/28 13:09:51

目录

什么是接口?

内部接口

外部接口

接口的本质

什么是接口测试?

反向测试

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

越接近底层的 Bug,影响用户范围越广

目前流行的测试模型

接口测试的优越性

不同协议形式的测试

接口测试工作场景

单接口的测试

业务流程的接口测试(多接口测试)

多个接口串行分析

工作实践

接口测试总结

关于接口测试中的Cookie

需要了解Cookie哪些信息?

参数的含义以及来源

参数的作用域

返回值的含义


什么是接口?

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

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

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

内部接口

系统内部调用的接口

内部接口的实际场景

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

python自动化测试视频教程:2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0

                

 

外部接口

外部系统对外提供的接口

外部接口的实际场景

你在购物后点击付款时,页面会跳转到支付系统,等你完成支付流程后,再跳转回订单页,在这样的流程中,都会涉及系统对外的接口,还比如说付款工程的支付接口、配送过程的物流接口等等

接口的本质

其实就是一种契约,遵循这样一种形式:在开发前期,我们约定接口会接收什么数据;在处理完成后,它又会返回什么数据

什么是接口测试?

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

  • 输入正确的测试数据,验证接口正常处理后返回的结果是否正确(数据结构&数据内容)
  • 输入异常的测试数据,验证接口能否正确处理异常数据并返回特定提示,是否合理,是否健壮

简单来说

  • 正确接受合法 Request 入参
  • 正确拒绝非法 Request 入参

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

反向测试

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

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

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

越接近底层的 Bug,影响用户范围越广

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

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

目前流行的测试模型

 

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

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

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

接口测试的优越性

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

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0                   

 

不同协议形式的测试

  • 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 所对应的含义,这样,当你需要和这个接口产生交互的时候,就可以快速地拿到对应参数的含义,完成业务逻辑上下文的参数串联了。 

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『python爬虫』01. 爬虫入门的基础知识(保姆级图文)

目录 1. 合法性2. 爬虫原理3. 网站源代码查看4. 查看网络请求总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 1. 合法性 查看网站的爬虫协议,简单介绍爬虫协议robots.txt,避免爬虫爬的好…

简单理解内存分页机制

文章目录 1.CPU寻址方式2.段式内存访问的缺点3.80386两级页表4.PAE三级页表5.x64四级页表6.虚拟内存 思考一个问题:如果没有这样的分页机制时应用程序是怎么访问物理内存地址? 1.CPU寻址方式 Effective Address Base (Index * Scale) Displacement …

加载自己的图像数据集

文章目录 1 加载图像数据集2 图像预处理3 再次加载数据集4 这里还有一个问题,我们没有验证集5 构建DataLoader6 检查是否正确导入数据集 原文链接:《加载自己的图像数据集》 ​ 数据集下载链接 1 加载图像数据集 目录结构: 针对这种非常典型…

Java+proj4j实现根据EPSG编码进行坐标系转换

场景 JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换: JavaGeoTools实现WKT数据根据EPSG编码进行坐标系转换_霸道流氓气质的博客-CSDN博客 上面使用GeoTools实现坐标系转换。 VueOpenlayersproj4实现坐标系转换: VueOpenlayersproj4实现坐标系转换_霸道流…

VUE3页面div点击改变样式

如题目所示。 用上VUE之后,前后端分离,组件式开发,代码复用、独立性和隔离性都挺好,可维护性得以提高。相比之下,以前用jQuery,代码实在太多了。 不过,vue有个地方不大好,就是控制…

算法基础(二)(共有30道例题)

六、数据结构 (一)数组 定义:数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标下对应的数据。 注意: (1)数组下标都是从0开始的。 (2&#xff0…

【SWAT水文模型】SWAT水文模型建立及应用第二期:土地利用数据的准备(待更新)

SWAT水文模型建立及应用:土地利用数据的准备 1 简介2 土地利用数据的下载1.1 数据下载方式1.2 数据下载 2 土地利用数据的准备2.1 矢量转栅格2.2 土地利用类型的重分类2.3 土地利用分布图投影调整2.4 土地利用类型索引表建立 参考 SWAT水文模型建立及应用第一期主要…

前苹果设计总监创办,Humane想用AI+AR界面取代手机

在2001年,微软研究院一位工程师Gordon Bell开始了一段长时间的“生活记录”(Lifelogging)之旅,他会在胸前、头顶或是眼镜腿处佩戴相机,每30秒自动拍摄一张照片,以捕捉自己生命中的瞬间,记录下他…

数字化转型导师坚鹏:金融科技与保险公司转型

金融科技与保险公司转型 课程背景: 数字化背景下,很多保险公司存在以下问题: 不了解保险公司数转型现状、困惑与成功方法? 不清楚金融科技如何赋能保险公司数字化转型? 不了解保险公司数字化转型标杆企业成功案…

Linux系统上C程序的编译与调试

gcc分布编译链接: 预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking) gcc -E hello.c -o hello.i #预处理 gcc -S hello.i -o hello.s #编译 gcc -c…

ThingsBoard教程更新通知,规则节点全解析系列更新

前言 自从 《ThingsBoard系列教程》 专栏上线,我收到了很多读者的认同和肯定,这是我一直坚持分享的理由之一,做有价值的事,帮助他人。前段时间因为写书和学习的原因,ThingsBoard专栏已经4个月没更新。这就导致一些读者…

【点击查看】讯飞星火正在回答···

Hi,开发者: 关于世界,你有过什么样的疑问?每一次的提问,都代表着我们在关注什么,思考什么,好奇什么。世界的每一次更新,都始于一个新的提问。 我是讯飞星火认知大模型,…

【爆肝更新】第二章:Python基础语法——保姆级,超万字!

这一章我们开始学习Python的基础语法,包含字面量,运算符,变量,字符串格式化,input函数等,这一章是为整个Python体系学习打好基础,所以一定要重视起来。 习惯看视频的同学可以看这个免费教程&am…

面试题30天打卡-day13

1、Linux 中的硬链接和软连接是什么,二者有什么区别? 在Linux系统下,有两种链接文件,一种是硬链接(Hard Link),一种是软链接,也称为符号链接(Symbolic Link)…

Linux-使用mobaxterm连接虚拟机ubuntu

一、准备工作 VMware:16.0.0 Ubuntu:18.4 MobaxTerm:链接:https://pan.baidu.com/s/1dNsahe9wO5KrWlWXtNqT0A?pwdaz39 提取码:az39 二、实操 1.检查系统是否安装ssh service sshd status 如果显示未安装&#xff0…

Notes/Domino的未来在于

大家好,才是真的好。 很多企业不谈论应用程序,让Domino的平台价值和市场前景变得有些黯淡。 毕竟作为全球第一款企业级的邮箱平台,过去大部分企业和组织都在使用Notes/Domino。而从10来年前,很多企业开始大规模地由Notes/Domino…

GPT-3.5 生成 Fabric Cypher

GPT-3.5 生成 Fabric Cypher GPT-3.5 生成 Fabric CypherFabric 架构图数据库节点设计图数据模型设计Fabric 快速开始指南下载必要资源配置 构建数据在graph-node-1节点构建股票图谱在graph-node-2节点构建高管图谱 GPT-3.5 生成 Fabric Cypher Here’s the table of contents:…

【Java】『蓝桥杯』10道编程题及答案(四)

系列文章 【Java】『蓝桥杯』10道编程题及答案(一) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130223115 【Java】『蓝桥杯』10道编程题及答案(二) 本文链接:https://blog.csdn.net/y…

五种PDF转Word免费的软件!(附带转换效果对比!)

本文将介绍种PDF转Word免费软件,让您快速将PDF文件转换为可编辑的Word文件。 随着现代科学技术的飞速发展,PDF格式已经成为我们工作和生活中常用的文档格式之一。PDF文件的格式是固定的,不容易被篡改,因此经常被用来制作各种关键文…

1691_python学习笔记之week3_递归

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 最初接触递归的时候觉得这个有点不好理解,怎么能够有这种思维方式?这完全不同于之前自己所能够了解的那种一加一等于二的方式。相对于能够看得见的那种…