(API)接口测试的关键技术

news2024/9/24 21:29:14

接口测试也就是API测试,从名字上可以知道是面向接口的测试活动。所以在讲API测试之前,我们应该说清楚接口是什么,那么接口就是有特定输入和特定输出的一套逻辑处理单元,而对于接口调用方来说,不用知道自身的内部实现逻辑,这也是接口的黑盒处理逻辑。从而也就揭示了接口的本质:接口即契约,这个契约是指接口提供方和接口调用方约定好的一种约定。它遵循这样一种形式:在开发前期会约定接口接收什么数据以及返回什么数据,在开发完成后接口提供方实现了原本约定。这也就出现了一个丞待解决,如何验证接口提供方是否遵了契约的约定,为了解决该问题,接口测试就出现了。接口测试是通过模拟接口调用方的行为,依据上述契约要求,并兼顾其它质量特性,对接口提供方提供的接口进行质量验证的活动。
在这里插入图片描述
在分层测试模型中,包含了单元测试、接口测试以及界面测试(也叫UI测试),在行业里最先提出的如图1所示的金字塔模型是最早的分层测试模型,也是第一次按照测试投入和收益综合设计的模型。

在金字塔模型中,界面测试、自动化接口测试和单元测试,每一个阶段所占面积的大小,代表了它们在测试过程中的投入和工作量占比。因此我们可以看出,金字塔模型中单元测试占据了绝大部分的比重,也就说明了我们应该在单元测试投入更多的精力和时间,已达到更大的收益。但是在实践过程中,有些团队单元测试覆盖度还不高,为了弥补单元测试的不足,测试工程师不断地加大在接口测试的投入,将接口测试逐渐划分成单接口测试和业务接口测试,其中:

● 单接口测试不断地扩大检测范围,既保证某一个单一接口的功能的正确性,也会覆盖单接口的可靠性,从而不断增大接口测试的测试深度和测试广度,往下逐渐覆盖一些公共接口的单元测试内容

● 业务接口测试是通过多接口的串联以及上下文参数的处理来完成业务逻辑的模拟,往上则逐渐覆盖应该由 UI 层保障的业务逻辑测试

从而,通过不断地在实践中扩大接口测试的投入,分层测试模型也就逐渐的演变成橄榄核模型了如图1所示,那么这种变化是工程实践选择的结果,它主要的优越性表现如下:

● 接口测试更容易和其他制品相关系统相结合

● 相对于界面测试,接口测试可以更早开始,也可以测试一些界面测试无法测试的范围,因此它使“尽早测试介入,尽早发现缺陷,修复缺陷的成本越低”这句话变成现实

我们提及的接口测试绝大部分情况下都是指的是自动化接口测试,其实自动化接口测试是两部分技术手段的结合体,这里面包含了自动化和接口测试两方面要素。

● 接口测试:依托于测试技术协议客户端模拟行为(该客户端是协议层访问客户端,具体可表现为客户端系统,也可以是微服务的调用发起方等任何包含协议发起方代码或者实现的系统或软件)的基础之上,按照测试用例设计方法完成接口入参的设计,并与被测服务端发生交互、验证结果是否满足预期的测试行为。

● 自动化:能够按迭代、定时、按需的完成没有人工或者较少人工直接参与的测试活动。

接口测试是建立在协议客户端模拟行为之上,验证被测系统功能性特性的测试实践手段。因此,我们可以看出,接口测试也是质量层次模型中功能适合性的测试实践方法。接口测试的主要包含了模拟协议客户端、接口的逻辑模拟、数据驱动、测试报告、关键字驱动、断言操作、测试替身是接口测试中关键技术。

● 协议客户端模拟:协议客户端模拟行为的测试技术,这既可以是测试脚本也可以是测试平台,它主要提供一种模拟与被测服务交互的技术手段,提供与被测系统发生交互的基础,从而为接口测试的实现建立基础手段,例如HTTP协议比较常用的方式是代码调取对应的协议访问客户端类,java的HttpClient、Python的requests等,或者利用常规的工具postman等。

● 接口的逻辑模拟:通过录制修改或者脚本开发的方式,在协议客户端模拟技术的基础之上实现与被测服务的交互,该交互主要实现了被测接口的访问和参数传递以及返回值的获取,例如HTTP协议的接口通过写代码完成访问uri、参数、访问方法等的设置,发起访问并获取返回值,或者通过postman新建请求请求完成对应的设置。

● 数据驱动:是指为自动化接口测试的接口逻辑模拟部分提供被测接口参数的入参,这个入参可以按照某一种形式存储在外部文件或者外部服务中,通过自有的参数策略进行选取,从而实现一个接口逻辑模拟方式的多次入参的访问,从而最大的提高接口模拟逻辑的复用,提高自动化接口测试开发效率。例如在编写脚本的时,常会将参数放入.csv、json、数据库等文件或者服务中。

● 断言操作:提供针对自动化接口测试返回值的部分或者全部的预期值的自动比对,其中支持一些布尔值的运算,例如等于、包含、不包含等。

● 测试报告:对测试结果有一个统一的展示方式,通过提供表格、统计图等给出形象的总体分析,甚至可以将缺陷报告、误报缺陷自动过滤模块的内容同时输出到报告中。

● 关键字驱动:提供关键字封装功能,能够通过关键字将一些接口封装成某一个流程的关键字,通过该关键字就可以完成对应业务流的测试、调用等。这样就可以把一些自动接口测试隐藏到业务识别关键字,提高编码的可读性和复用性。

● 测试替身:是为了达到测试目的并且减少被测试对象的依赖,在依赖接口编程的程序中使用测试替身代替一个真实的依赖对象,从而保证了测试的速度和稳定性。

自动化在自动化接口测试中仅仅是为了说明自动化执行,但是随着测试技术的发展,质量效能的不断发展,自动化并不仅仅存在于自动化执行,很多提高研发效能的技术也不断的涌现,例如测试缺陷自动提交、误报缺陷自动过滤、接口的逻辑模拟生成。

● 自动化执行:自动化接口测试能够按需或者定时的调取部分或者全部自动化接口测试脚本完成测试,这里按需就是按照固定的需要,这既可能是迭代的需要也可能是质量保障环节的需要,提供测试还要提供定时执行的能力,这既可以由自动化接口测试框架或者平台自己提供,也可以借助持续集成平台完成。

● 测试缺陷自动提交:自动化接口测试在执行测试过程中如发生执行失败,并确定是被测系统缺陷的时候,可以自动的将该现象、脚本、以及实际返回上报到缺陷,完成新缺陷的上报。

● 误报缺陷自动过滤:自动化接口测试在执行测试出现失败后,会先判断对应失败是不是非被测系统的缺陷导致的,而是由于环境问题、数据问题、依赖问题而导致的服务不可用,这部分并不是缺陷,可以自动将其反馈给测试工程师而并不上报新缺陷。

● 接口的逻辑模拟生成:能够通过某种接口输入内容,自动的完成访问接口逻辑的生成,常规的是自动生成自动化测试脚本代码。

学习安排上

如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

在这里插入图片描述

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群即可自行领取

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

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

相关文章

Spring 中经典的 9 种设计模式

1.简单工厂(非23种设计模式中的一种) 2.工厂方法 3.单例模式 4.适配器模式 5.装饰器模式 6.代理模式 7.观察者模式 8.策略模式 9.模版方法模式 Spring中涉及的设计模式总结 1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory。Spring中的BeanFa…

Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?

本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问。 前言 大家好,我是小彭。 SharedPreferences 是 Android 平台上轻量级的 K-V 存储框架,亦是初代 K-V 存储框架,至今被很多应用沿用。 有的…

【C语言】大小端字节序问题

一、大小端字节序问题 大小端是由CPU决定的,大小端可以理解为字节顺序,所以大小端全称叫大端字节序、小端字节序。其实大端、小端这两个词是从《格列佛游记》里出来的。《格列佛游记》有一段讲的是吃鸡蛋是从大的那头敲开还是小的那头敲开的问题&#xf…

拯救了大批爬虫程序员,因为一个简单的神器

相信大家应该都写过爬虫,简单的爬虫只需要使用 requests 即可。遇到复杂的爬虫,就需要在程序里面加上请求头和参数信息。类似这种:我们一般的步骤是,先到浏览器的网络请求中找到我们需要的请求,然后将请求头和参数信息…

CI/CD --- 什么才是真正的自动化平台

近2年在软件开发中比较火的两个术语,一个是敏捷开发,另外一个就是CI/CD了;敏捷开发顾名思义就是“以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发”。那CI/CD(Continuous Integration、 Continuous Del…

自抗扰控制ADRC之微分器TD

目录 前言 1 全程快速微分器 1.1仿真分析 1.2仿真模型 1.3仿真结果 1.4结论 2 Levant微分器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.总结 前言 工程上信号的微分是难以得到的,所以本文采用微分器实现带有噪声的信号及其微分信号提取,从而实现…

0216-0218复习:继承

目录 继承 一、基本介绍 二、示意图 三、基本语法 四、入门案例 父类 子类1 子类2 main方法 五、继承细节 第一条 第二条 第三条 第四条 ​编辑 第五条 第六条 第七条 第八条 第九条 第十条 六、继承本质 七、练习题 第三题 继承 一、基本介绍 继承可以…

RAY - 小记

文章目录关于 RAYRAY 结构关于 RAY Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a toolkit of libraries (Ray AIR) for accelerating ML workloads. RAY 是一个简单、通用的分布式计算框架。 RAY 解…

TikTok话题量超30亿,这款承载美好记忆的剪贴簿引发讨论

回忆风剪贴簿在TikTok引起关注小超在浏览超店有数后台时发现,有一款平平无奇的剪贴簿的种草视频爆火,在24h内收获了9.9K点赞,播放量更是突破了100W,直接冲到了【种草视频飙升榜】第六名的位置,并且这个数字目前仍在继续…

利用5G工业网关实现工业数字化的工业互联网解决方案

5G工业网关是一种用于将工业生产环境中的数据连接到工业互联网的解决方案。它可以利用高带宽、高速率、低时延的5G网络连接工业现场的PLC、传感器、工业设备和云端数据中心,从而实现工业数字化。 物通博联工业互联网解决方案 物通博联5G工业网关的使用步骤&#x…

XXL-JOB分布式任务调度框架(二)-策略详解

文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例6.随机选取7.轮询选取8.一致性hash9.最不经常使用 (LFU)10.最近最久未使用(LRU)11.故障转移12.忙碌转移7.分片广播任务1.引言 本篇文章…

中外互免签证协定一览表(普通护照与公务普通护照)

普通护照:由公安部出入境管理机构或者公安部委托的县级以上地方人民政府公安机关出入境管理机构以及中华人民共和国驻外使馆、领馆和外交部委托的其他驻外机构签发,主要颁发给出国定居、探亲、访友、继承财产、留学、就业、旅游等因私事出国的中国公民。…

[REDIS]redis的一些配置文件

修改配置文件 vim /etc/redis/redis.conf目录 protected-mode tcp-backlog timeout tcp-keepalive daemonize pidfile loglevel databases 设置密码 maxclients maxmemory maxmemory-policy maxmemory-samples 默认情况下 bind127.0.0.1 只能接受本机的访问请求。在不写的情况…

算法导论【字符串匹配】—朴素算法、Rabin-Karp、有限自动机、KMP

算法导论【字符串匹配】—朴素算法、Rabin Karp、有限自动机、KMP朴素字符串匹配算法Rabin-Karp算法有限自动机KMP算法朴素字符串匹配算法 预处理时间:0匹配时间:O((n-m1)m) Rabin-Karp算法 预处理时间:Θ(m),需要预先算出匹…

Lua脚本执行redis指令报错【java.lang.IllegalStateException】

Lua脚本执行redis指令报错【java.lang.IllegalStateException】 问题出现背景 今天在学习redis时,为了让redis的多条指令(取锁、比锁、释放锁)保障原子性,我通过使用一个lua脚本统一去执行redis的的多条指令。在执行lua脚本时报错…

Python3 File(文件) 方法讲解

open() 方法 Python open() 方法用于打开1个文件,并返回文件对象。 在对文件进行处理过程都需要使用到这个函数,如果这个文件无法被打开,会抛出 OSError。 注意:使用 open() 方法一定要保证关闭文件对象,即调用 clo…

vrrp+mstp+osfp经典部署案例

LSW1和LSW2和LSW3和LSW4上面启用vrrpmstp组网: vlan 10 全走LSW1出再走AR2到外网,vlan 20 全走LSW2出再走AR3到外网 配置注意:mstp实例的根桥在哪,vrrp的主设备就是谁 ar2和ar3上开nat ar2和ar3可以考虑换成两台防火墙来做&…

Java基础 -- List集合

Java基础 -- List集合1. Introduction1.1 好处1.2 常用泛型2. 交集,差集等2.1 自身的方法2.2 1.8jdk stream 新特性2.3 Apache的CollectionUtils工具类(推荐)3. 限定泛型范围4. Awakening1. Introduction 1.1 好处 代码复用,多种…

分布式任务处理:XXL-JOB分布式任务调度框架

文章目录1.业务场景与任务调度2.任务调度的基本实现2.1 多线程方式实现2.2 Timer方式实现2.3 ScheduledExecutor方式实现2.4 第三方Quartz方式实现3.分布式任务调度4.XXL-JOB介绍5.搭建XXL-JOB —— 调度中心5.1 下载与查看XXL-JOB5.2 创建数据库表5.3 修改默认的配置信息5.4 启…

斐波那契数列(递归+迭代)

目录什么是斐波那契数列递归写法使用递归写法的缺点迭代写法(效率高)什么是斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例…