接口测试要测试什么?怎么测?

news2024/11/22 21:53:12
本文主要分为两个部分:

  第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系

  第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估相关内容。

第一部分:

首先,在做接口测试的过程中,经常有后端开发会问:

  1. 后端接口都测试什么?怎么测的?
  2. 后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?

于是,为了向开发解释上述问题,普及基本的测试常识,特意梳理了接口测试的相关内容以及其与前端测试的区别,使开发团队与测试团队在测试这件上达成基本的共识,提高团队协作效率,从而更好的保证产品质量。

 

然后,我们试着回答上面的问题:

问题1.1、后端接口都测试什么?

  --回答这个问题,我们可以从接口测试活动内容的角度下手,看一下面这张图,基本反应了当前我们项目后端接口测试的主要内容:

问题1.2、我们怎么做接口测试?

  --由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、Java+httpclient等。

问题2、后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?

  --回答这个问题,我们可以直接对比接口测试和app端测试活动的内容,如下图为app测试时需要覆盖或考虑内容:

 

 从上面这两张图对比可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各自特性或关注点不同需要进行特殊的测试,在此不做讨论。接下来我们针对以上三部分相同的内容再进行分析:

1、基本功能测试:

  由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块。

2、边界分析测试:

  在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限。

 3、性能测试:

  这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。

综论:

      1、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行有针对性的测试,才能确保整个产品的质量。

  2、接口测试可以关注于服务器逻辑验证,而UI测试可以关注于页面展示逻辑及界面前端与服务器集成验证

第二部分:
1、什么是接口测试?

      接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2、为什么要做接口测试?我个人认为有三个原因:

   1)、尽早暴露出接口问题,减少返工工作量 
   2)、自动化接口测试,减少冒烟、回归测试的重复工作

   3)、接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。

3、接口测试持续集成:

      对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

  a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

  b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等

  c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

  d) 结果校验:加强自动化校验能力,如数据库信息校验。

  e) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

4、接口测试质量评估标准:

  a) 业务功能覆盖是否完整

  b) 业务规则覆盖是否完整

  c) 参数验证是否达到要求(边界、业务规则)

  d) 接口异常场景覆盖是否完整

  e) 接口覆盖率是否达到要求

  f) 性能指标是否满足要求

  g) 安全指标是否满足要求

备注:
问题一:目前有开源的postman、apipost、Yapi、Jmeter等接口测试工具,为什么还要开发接口测试框架呢?

答:对于测试一般接口来说 工具是够用,但工具也有存在几点不足:

1.测试数据不可控制:比如接口返回数据不可控,就无法自动断言接口返回的数据,不能断定是接口程序引起,还是测试数据变化引起的错误,所以需要做一些初始化测试数据。接口工具没有具备初始化测试数据功能,无法做到真正的接口测试自动化。

2.依赖性的。比如定时任务、其他服务依赖、脚本依赖 (工具无法直接操作其他依赖服务)

3.无法测试加密接口。实际项目中,多数接口不是可以随便调用,一般情况无法摸拟和生成加密算法。如时间戳和MDB加密算法,一般接口工具无法摸拟。

4.扩展能力不足。开源的接口测试工具无法实现扩展功能。比如,我们想生成不同格式的测试报告,想将测试报告发送到指定邮箱,又想让接口测试集成到CI中,做持续集成定时任务、接通测试平台、接通飞书、公司内部定制化等。

问题二:接口测试流程

需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析->持续集成

流程分成以下九步:

  • 第一步:分析出测试需求,并请开发提供接口说明文档;
  • 第二步:从接口说明文档中整理出接口测试用例,里面要包括详细的入参(正常情况,异常情况包括输入参数个数,类型,可选/必选,考虑参数有互斥或关联的情况)和出参数据(符合接口文档需求)以及明确的格式和检查点;
  • 第三步:与开发一起对接口测试用例进行评审;
  • 第四步:准备接口测试用例中的入参数据和出参数据,
  • 第五步:结合整理的execl编写接口自动化测试的业务逻辑代码;
  • 第六步:开始执行接口自动化测试用例;
  • 第七步:执行如有bug,提交至缺陷管理平台;
  • 第八步:开发修改完成后,回归bug,跟踪状态;
  • 第九步:完成后进行自动化持续集成;

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

textarea 网页文本框在光标处添加内容

在前端研发中我们经常需要使用脚本在文本框中插入内容。如果产品要求不能直接插入开始或者尾部,而是要插入到光标位置,此时我们就需要获取光标/光标选中的位置。 很多时候,我在格式化文本处需要选择选项,将选择的信息输入到光标位…

Nginx【通俗易懂】《中篇》

目录 1.Url重写rewrite 2.防盗链 3.静态资源压缩 4.跨域问题 1.Url重写rewrite 🤩🤩🤩 1.1.rewrite书写格式 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到rep…

Jetpack Startup 优雅完成库的初始化和方法接口简化

目录 1.Startup组件是什么2.Startup组件能做啥2.1 startup组件可以简化用户使用我们提供的库的流程。2.2 简化库提供给使用者的API接口 3.如何使用Startup组件3.1 引入依赖3.2 创建一个初始化的类继承Initializer3.3 在我们库的AndroidManifest.xml中加入配置 4.使用Startup组件…

Windows mysql5.7 执行查询/开启/测试binlog---简易记录

前言:基于虚拟机mysql版本为5.7,增量备份测试那就要用到binlog… 简述:二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。 binlog是记录所有数据库表结构变更(例如CREATE、ALTER…

C++相关闲碎记录(9)

1、非修改型算法 for_each()对每个元素执行某种操作count()返回元素个数count_if()返回满足某一条件的元素的个数min_element()返回最小值元素max_element()返回最大值元素minmax_element()返回最小值和最大值元素find()查找某个数值find_if()查找满足条件的元素find_if_not()…

03 Temporal 详细介绍

前言 在后端开发中,大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中,可能更多的直接使用数据库、定时任务、消息队列等作为基础,来解决上面的问题。然…

【概率方法】MCMC 之 Gibbs 采样

上一篇文章讲到,MCMC 中的 HM 算法,它可以解决拒绝采样效率低的问题,但是实际上,当维度高的时候 HM 算法还是在同时处理多个维度,以两个变量 x [ x , y ] \mathbf{x} [x,y] x[x,y] 来说,也就是同时从联合…

Nyquist Theorem(取样定理)

取样定理,又称为奈奎斯特定理(Nyquist Theorem),是信号处理领域中一项至关重要的基本原理。它规定了对于连续时间信号,为了能够完全准确地还原出原始信号,即使是在离散时间下进行采样和再构建,都…

算法基础之树的重心

树的重心 无向图: 边没有方向 有向图:边有方向 只能单向询问 无向图建立双向的边 要求输出每种情况连通块个数最大值的最小值**(最小的最大值)** #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace s…

2023-12-13 VsCode + CMake + Qt环境搭建

点击 <C 语言编程核心突破> 快速C语言入门 VsCode CMake Qt环境搭建 前言一、前期准备二、具体设置总结 前言 要解决问题: 最近研究 Qt, 使用 qtcreator, 发现在搭建 UI 界面时候很方便, 但到编码和调试就比较有问题了. 想到的思路: 用 VSCode 进行编码及调试. 其它…

003 FeedForward前馈层

一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17torch 1.13.1cu117torchvision 0.14.1cu117 二、前馈层原理 Transformer模型中的前馈层&#xff08;Feed Forward Layer&#xff09;是其关键组件之一&#xff0c;对于模型的性能起着重要作用。下面将用900字对…

postman接口测试系列: 时间戳和加密

在使用postman进行接口测试的时候&#xff0c;对于有些接口字段需要时间戳加密&#xff0c;这个时候我们就遇到2个问题&#xff0c;其一是接口中的时间戳如何得到&#xff1f;其二就是对于现在常用的md5加密操作如何在postman中使用代码实现呢&#xff1f; 下面我们以一个具体的…

【EXCEL】数据透视实例

相关链接&#xff1a;Excel数据透视表全攻略 数据样例&#xff1a; 透视结果&#xff1a;

分析某款go端口扫描器之三

一、概述 前两篇主要分析些工具集&#xff0c;已经针对web服务的指纹和端口指纹信息进行识别&#xff0c;并没有真正开始扫描。本篇主要分析如何进行IP存活探测以及tcp扫描实现。 项目来源&#xff1a;https://github.com/XinRoom/go-portScan/blob/main/util/file.go 二、/…

云架构俭约之道七法则(The Frugal Architect)

文章目录 一、前言关于 Law 与 Rule 的区别 二、云架构俭约之道七法则Design&#xff08;设计方面&#xff09;Law 1&#xff1a;把成本作为非功能性需求Law 2&#xff1a;可持续性系统需要将成本与业务相匹配Law 3&#xff1a;架构设计是一系列权衡的取舍 Measure&#xff08;…

Unity | 渡鸦避难所-2 | 搭建场景并添加碰撞器

1 规范项目结构 上期中在导入一系列的商店资源包后&#xff0c;Assets 目录已经变的混乱不堪 开发过程中&#xff0c;随着资源不断更新&#xff0c;遵循一定的项目结构和设计规范是非常必要的。这可以增加项目的可读性、维护性、扩展性以及提高团队协作效率 这里先做下简单的…

vivado约束方法2

排序约束条件 因为XDC约束是按顺序应用的&#xff0c;并且是基于明确的优先级排列的规则&#xff0c;您必须仔细检查约束的顺序。 Vivado IDE为您的设计提供了全面的可视性。要逐步验证约束&#xff0c;请执行以下操作&#xff1a; 1.运行相应的报告命令。 2.查看Tcl控制台…

微信小程序自定义提示框组件并使用插槽 tooltip

创建tooltip组件引用 创建一个自定义组件&#xff0c;例如命名为 tooltip tooltip.wxml&#xff1a;用于定义组件的结构&#xff1b; <!--components/tooltip/tooltip.wxml--> <view class"tooltip-wrapper" hidden"{{hidden}}" style"lef…

spingboot项目实战之若依框架创建新模块

前言 目前的脚手架系统很多&#xff0c;比较早接触诺依框架&#xff0c;以若依框架为参考如何创建新模块 步骤 1. 下载诺依框架&#xff0c;依照参考说明一步步&#xff0c;能做到系统运行起来。 2. 准备好mysql文件&#xff0c;创建新数据库表 3. 数据库管理工具navicat…

如何退回chrome旧版ui界面?关闭Chrome浏览器新 UI 界面

之前启用新UI的方式 Chrome 已经很久没有进行过大的样式修改&#xff0c;但近期在稳定分支中添加了新的 flags 实验性标志&#xff0c;带来了全新的设计与外观&#xff0c;启用方式如下&#xff1a; 在 Chrome 浏览器的搜索栏中输入并访问 chrome://flags 搜索“refresh 2023…