七个步骤覆盖 API 接口测试

news2024/11/25 22:43:06

接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。首先需要对接口测试的基本信息做一些了解:

接口测试的意义

  • 低 - 低成本

因为接口的相对稳定性,不需要大量的重新编写,做好基础的维护,用例的扩充,能满足日常的使用范围

  • 稳 - 相对稳定

当接口自动化创建后,可以相对稳定的运行。接口相对稳定,不会频繁更换,顶多增加字段或者新增接口(相对于UI测试来说,维护、编写成本很大,实际过程中一点点的放弃了UI自动化测试)

  • 快 - 执行速度快,反馈速度快

涉及到持续集成,把接口集成到 jenkins 上,自动触发或定时任务触发,触发后就反馈结果。

测试和监控 API 对确保应用程序的功能和性能变得越来越重要,我们在本文中可以详细了解完成API 测试的操作步骤,详细信息请参照下文:

七个基本步骤

1. 了解API的范围

在尝试测试 API 之前,了解 API 的作用及其职责是至关重要的。此步骤应从访问 API 文档开始。应该手动对 API 端点进行一些调用,以深入了解它们的工作方式以及它们返回的数据。

2. 了解用户流程

在这一步中,应该超越单个 API,查看使用它的应用程序。尝试并了解用户如何使用这些应用程序,以及它们的使用会触发哪些 API 调用。这将帮助你了解API在实际生活中使用的场景,并使你能够开发测试,以测试和验证 API 在实际生活中的使用方式。

例如,如果直接从 Web 应用程序调用 API,可以使用浏览器开发人员工具记录对 API 发出的所有请求并检查请求和响应负载。这有助于了解 API 的使用方式。 

3. 编写API测试

  • 测试接口选择

项目有几十个或者几百个接口。一方面,不可能对每一个接口都做自动化测试,所以要分主要接口和非主要接口;另一方面,也不是每个接口都适合做自动化测试,所有要分稳定接口和不稳定接口;还有一方面,有些接口只能调用一次,所有要分可重复执行接口和不可重复执行接口。当然其中还有其他银色影响接口的选择,要根据实际情况进行筛选,然后对接口逐步分析,来确定最后需要自动化测试的接口,做到可以在接口层面成本最大化。

  • 注册接口

这是一个重要的接口,但却是不可重复执行的接口,因为同样的数据第二次是无法注册成功的,所以这个接口不适合做这类自动化。

  • 登录接口

这个接口是可以重复执行的,而且相对于来说不太会随意改动的借口,所以这个接口适合做自动化。

  • 用户信息查询

这个接口可以反复请求,适合做自动化。

结合自身项目并在具体的实践过程中,我们会发现大多数做自动化的接口都是查询接口,因为不涉及对数据库的改动,仅仅是查询可以重复操作的,而且返回数据也是相同的,便于对返回结果的判断验证。

4. 覆盖异常情况和边界值情况

上一节介绍 API 测试接口的选择,并验证它在“正常”使用情况下是否按预期工作。在这一步中,判断 API 在边界值和异常情况下的行为是否正确。例如:

  • 是否试图让一个不存在的实体返回正确的错误代码(404 响应)?

  • 如果提供了错误数据类型的参数(400 响应),API 是否会失败?

  • 如果我们尝试访问我们没有权限的实体(401 响应)会发生什么?

这一步的技巧是查看HTTP 错误代码列表(尤其是 4xx 范围 - 用户错误)并尝试创建生成这些代码的场景。

5. 针对 Dev 和 Stage 环境执行测试

自动化需要一个干净的测试环境,不然很难重复运行起来。自动化测试要做到绝对只能也是不可能的,尤其运行过程中会遇到脏数据活着异常就会中断。首先需要在测试环境跑一遍正常流程,中间通过抓包获取数据信息,一方面需要确定这些数据作为自动化测试的数据基础,另一方面需要了解数据结构是什么,可能是包含列表的字典,也可能是一个纯元组。前提是可以测试通过一套流程,不然获取这些数据没有必然意义。

编写测试后,你应该能够开始在非生产环境中使用它们并看到它们通过。理想情况下,如果正确编写了测试,应该可以通过向不同环境传递不同的变量来针对不同环境执行测试。这可以帮助你开始验证 API 的开发版本。

6. 持续集成 Jenkins

Jenkins 是一个功能强大的工作,测试人员可以根据各自的测试需求灵活运用其中的部分功能。引进持续集成思想是为了帮助测试人员提高测试效率,一旦可以看到针对开发/阶段环境运行的所有测试,你就可以将它们连接到你的 CI/CD 管道,以便在你推送新代码时开始自动化测试过程。这可以通过源代码管理工具(如 GitHub 或 GitLab)或构建工具(如 Jenkins 或 CircleCI)来完成。这有助于保持测试运行并“强制”使测试保持最新,因为无法在测试失败的情况下推送代码。

7. 运行测试以监控生产环境

维护 API 测试用例的好处之一是你可以轻松地在多个环境中运行它们。具体来说,你可以在生产环境中定期运行测试以确保其按预期运行。这还可以帮助你收集有关 API 的性能数据,实时查看性能的降级或更改。

以上内容测重于对接口操作流程及一些简单操作步骤具体的作用,给出的只是借助工具对于基本操作方向性的指导,没有详细的具体实践,不过没关系呀,这都是正常的,关于如何使用/借助工作去做接口测试的方式非常多,也不是一两篇文章能够全部讲完,最重要的是先知道大概的方向,然后就去大胆实践,在做的过程中成长最快。 

近期,,Eolink推出面向初创企业的公益扶持计划,可免费使用API研发管理和API自动化测试企业版,可前往 Eolink 公众号/官网了解详情、提交申请。

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

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

相关文章

阿里面试题库被“泄露“导致多人进大厂,惨遭多家大厂威胁下架

我有一个玩得特别好的朋友找我帮忙,说他儿子去大厂面试几次没刷下来,要求我帮他儿子出出主意,大概了解他儿子的情况后,我就给他推荐了这本软件测试10万总结,大概过了几个月他就给我发信息了,说他已经靠这份…

(一) Oriented R-CNN

文章目录0.基础介绍1.旋转框的中点偏移表示法2.Oriented R-CNN架构2.1 Oriented RPN2.2 Rotated RoI Alignment参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 论文:Oriented R-CNN for Object Detection 代码&#xf…

Erlang - 入门之一日志系统如何打印输出使用lager框架

在合适的地方插入一句代码即可: lager:error("Some Message"), 就这样,谢谢阅读 。。。。。。。 。。。。。。。。。 。。。。。。。。。。。 。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。 没有什么比从直接“”…

web前端网页课程设计大作业 html+css+javascript天津旅游(11页) dw静态旅游网页设计实例 企业网站制作

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

草料二维码如何在多行业实现管理和自动化工作

二维码,在我们的日常生活中随处可见,不管是我们常用的微信支付,还是日常出入的场所码,已经渗透在我们生活的点点滴滴中。 如果我们自己也希望通过二维码,来传达文字、数据等信息,那么很多人都肯定给你推荐…

NS3笔记

NS3笔记1 Docker环境配置1.1 Docker安装1.2 镜像安装1.3 安装其他软件1.4 安装ns31 Docker环境配置 1.1 Docker安装 俺是macOS,直接参考这个网址。 1.2 镜像安装 俺打算安装Ubuntu18.04,镜像版本可以Ubuntu 镜像库 # 拉取镜像 docker pull ubuntu:18…

深入理解可升级智能合约

准备 为了理解可升级合约,必须理解proxy机制,要理解proxy机制,必须理解solidity的sstore和sload,以及关于以太坊架构和存储结构(数据结构)。 关于Solidity中的sstore和sload深入理解: 非常好的一篇剖析&…

SAP ABAP 散装笔记20220825

SAP ABAP 散装笔记20220825 引言: 散装笔记的标题系列中记录了我常用、备忘、易错的知识点。 关键字:SAP ABAP 散装笔记 知识点 文章目录SAP ABAP 散装笔记202208251. 获取域值和域值描述的两种方式2. 打开新的会话窗口(并执行可能的事务码…

西妥昔单抗丨艾美捷西妥昔单抗Cetuximab方案

西妥昔单抗Cetuximab是针对人表皮生长因子受体的一种单克隆抗体,主要作用就是与表皮生长因子受体结合,阻断表皮生长因子受体与其它配体的结合而达到抗肿瘤的目的。各种恶性肿瘤细胞,例如直肠癌细胞、胃癌细胞,表面都高表达表皮生长…

WebStorm pull(拉取)项目commit(提交)、push(推送)代码

1.打开WebStrom,找到Git---克隆... 2.输入需要克隆的项目地址,将其项目克隆下来 3.pull(拉取)、commit(提交)、push(推送) 4.在你本地新建一个和你git分支一样名字的分支 5.改完代码…

Eslint

1. 配置文件 配置文件由很多种写法: .eslintrc.*:新建文件,位于项目根目录 .eslintrc.eslintrc.js.eslintrc.json区别在于配置格式不一样package.json 中 eslintConfig:不需要创建文件,在原有文件基础上写。 2. 具体…

什么是Python?Python有什么特性?

什么是Python,相信第一次接触Python的同学会有一些疑问。我们通过百度百科得到Python的定义为:   Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本&#xff…

UDS入门至精通系列:诊断时间参数

文章目录 前言一、诊断时间参数 P2二、诊断时间参数 P2*三、诊断时间参数 S3四、上述参数在应用中的汇总总结前言 在职场中,对于自己领导吩咐的事情,事事有响应,是你在领导面前彰显自己能力的机会。并且这其中的响应时间就是你职业能力的时刻。 同样在汽车电子诊断领域,因…

忆享科技受邀亮相CIS2022网络安全创新大会

12月14日,忆享科技受邀亮相第八届网络安全创新大会(简称“CIS”)多维时空专场,与行业内资深专家及众多头部企业交流对话,深度了解网络安全行业新理念、新技术、新思路和新实践,共同探讨行业技术创新与突破。…

Java+Swing实现的五子棋游戏

JavaSwing实现的五子棋游戏一、系统介绍二、功能展示1.游戏展示三、系统实现1.ChessFrame .java四、其它1.其他系统实现2.获取源码一、系统介绍 五子棋游戏实现人机对战、人人对战两个模式。 二、功能展示 1.游戏展示 三、系统实现 1.ChessFrame .java package five;impor…

【图像处理】图像拼接原理介绍

问题 图像拼接是图像处理的基础之一,虽然自己并没有直接做图像拼接方面的研究,但在面试中却多次被问到这方面的内容,可见这个知识点还是很重要的。事实上,很多场景都会用到图像拼接的知识,例如运动检测与跟踪、游戏画…

HJL-E6/A DC220V数字式【电流继电器】

1.用途 HJL系列数字式交流电流继电器为瞬时动作特性,用于发电机,变压器和输电线路的过负荷和短路保护,作为启动元件。 2.安装结构 导轨安装9,导轨安装E 两种壳体尺寸,具体尺寸请参考外型尺寸…

Spark 3.0 - 12.ML GBDT 梯度提升树理论与实战

目录 一.引言 二.GBDT 理论 1.集成学习 2.分类 & 回归问题 3.梯度提升 4.GBDT 生成 三.GBDT 实战 1.数据准备 2.构建 GBDT Pipeline 3.预测与评估 四.总结 一.引言 关于决策树前面已经介绍了常规决策树与随机森林两种类型的知识,本文主要介绍梯度提…

小游戏赛道如何加速流量增长?

小游戏是指设计极简的轻量级游戏。它构造简单,但却给人带来了娱乐性和重复参与的欲望。 近年来,小游戏在抖音、微信小游戏等平台拥有着疯狂裂变的可能性,出现了例如“羊了个羊”“跳一跳”、“合成大西瓜”等风靡一时的小游戏。 这些爆火的小…

「微服务系列」统一网关Gateway

为什么需要网关 网关功能: 身份认证和权限校验服务路由、负载均衡请求限流在SpringCloud中网关的实现包括两种: Zuul:基于Servlet的实现,属于阻塞式编程。SpringCloudGateway:是基于Spring5中提供的WebFlux&#xf…