接口自动化测试实践指导(中):接口测试场景有哪些

news2025/1/16 20:19:42

在第一篇文章中详细给小伙伴们讲解了接口自动化需要做哪些准备工作,准备工作中最后一步接口测试用例设计是非常重要的一个环节,用例设计的好不好,直接关系到我们的测试质量。那如何进行测试用例设计呢?这里呢我结合自身经验,帮助大家梳理一下接口测试用例设计思路,希望对大家后续接口测试工作有所帮助和提升。

1、接口测试场景梳理 

1.1 设计思路

在接口测试中,很大程度上,我们的测试质量依赖于接口测试场景的设计,而接口的测试场景和传统的功能测试场景又有所不同,不少测试同学一时无法很好的转换,一上来进行接口测试思路上会比较乱,这里给大家梳理一下接口的常用测试场景,并进行了分类,感兴趣的同学建议反复多看几遍,并多思考一下。

 

注:性能角度和安全角度的实际测试要比功能角度测试复杂的多,本篇重点讲解功能角度测试,后续再写专题文章来详细讲解接口的性能和安全测试如何进行。

1.2 功能角度讲解

接口测试的功能角度划分,依据侧重的角度不同,可以有多种划分方法,目前我实际测试工作中主要使用的测试场景可以划分为五类:基础检查、正常多角度、异常多角度、必录项检查、边界值检查。

大家注意这个顺序安排:基础检查->正常多角度->异常多角度->必录项检查->边界值检查;优先级是依次降低的。实际在进行接口测试时,建议按照这个优先级顺序进行测试用例设计,不一定所有接口的测试都要设计这么全面,需要综合考虑时间成本、接口的重要性等多重因素来决定。

下面分别解说一下功能角度下的每个场景分类,利于大家理解清楚:

  • 1. 基础检查

该角度主要目的是对接口进行通过性验证,通过输入有效入参,检查接口返回正常,可通过返回状态码或关键字段来进行判断。但内容是不是返回正确,不在该角度检查范围内。

  • 2. 正常多角度

该角度主要验证多种有效入参组合,检查接口均能返回符合预期的正确数据。类似于普通的功能测试,从黑盒角度考虑,利用等价类的思想,划分接口各个入参可能的正常场景组合值,并检查接口返回结果的正确性,是否符合我们入参设置的预期结果。

  • 3. 异常多角度

该角度主要验证多种无效入参组合,检查接口均返回符合预期的报错信息。需要注意的是,该角度更多的是考虑业务角度的异常场景,而非针对某个入参的异常数据测试。针对每个入参的异常数据测试将更多的放到边界值检查场景中。

  • 4. 必录项检查

该角度检查比较明确,就是依据接口文档,检查各个必录的入参是否真的被设为了必录项,在场景设计上,需要测试当只录入必录项入参时,接口应该能够返回处理成功的信息,否则要么是文档写的有问题,要么是接口代码逻辑有问题。

  • 5. 边界值检查

该角度主要从入参要素级角度进行检查,针对接口的每个入参进行特殊字符检查、长度边界值检查等。这个角度的检查优先级最低,原因是一般系统前端都会有控制,这种非法的数据一般是无法正常传递给后端,但如果为了接口更好的健壮性,前端虽然进行了控制,但后端接口也加一下校验控制,安全性和健壮性上会更高。当然实际项目中,后端开发人员往往因为这块处理比较费时,往往没有做到太全面的控制,针对这种情况,我们测试可以依据具体系统使用场景,综合评估一下风险,如果有比较大的风险,还是要具体要求开发人员完善一下后台校验。

2、用例设计实战演示

对于接口用例的维护,这里推荐两款工具,一款是单兵神器 Jmeter,一款是可以免费且非常好用的 API 接口协作平台 Eolink,该平台不仅支持 API 接口的协作开发,更有丰富的接口测试功能,支持对接口的测试。

我们看一下 Eolink 对接口的测试用例维护样:

下图为用 Jmeter 维护的一组对创建应用接口的接口测试用例,后续会以此为例子给大家解说一下上面章节所说的接口测试场景。

 

说明:上图展示的是对“创建应用接口”编写的测试用例,该接口的用例是完全按照 5 个场景分类来设计测试用例,并且在设计用例时,按照每个场景分类优先级依次进行用例设计,这样做的好处是整个设计思路比较清晰明了,最大限度避免遗漏某些场景用例编写。

2.1 基础检查类用例展示

 

说明:该用例入参随机设置一套可使接口返回正常的一套参数即可。

说明:断言的设置也比较简单,检查接口返回某个关键字段即认为成功

2.2 正常多角度用例展示

 

说明:该用例主要设置检查各种不同构建类型的应用能否创建成功。

2.3 异常多角度用例展示

说明:该用例是来检查当 language 字段设置了不存在的值,检查接口返回失败(这类错误数据,接口会返回非 200 错误码)

2.4 必输检查用例展示

 

说明:该用例是来检查当 language 字段设置为 null 后,检查接口返回预期失败信息,失败信息为:“必须为你的应用选择他的开发语言”

2.5 边界值检查用例展示

 

说明:该用例是来检查 tag 字段多种不合法入参,检查接口返回预期失败信息,失败信息为:“项目名称只能包含字母、数字、中划线,且不能以中划线为开头和结尾。长度 2-50 个字符”
 

最后,再给小伙伴们介绍一下 Eolink 在测试用例方面的神奇特性:支持自动生成测试用例的能力。该能力可以智能生成多种场景的测试用例,并实现快速生成各种正常类型,异常类型,边界值,必填值的用例。有兴趣的小伙伴建议去官网详细了解一下.

 

另外该平台还有着丰富易用的测试功能,帮助项目团队更好的对 API 接口进行管理和测试,这里简单介绍一下几个好用的功能:

  1. 支持在线、本地、客户端进行测试

eolink 除了常规支持服务器端发起测试,还支持客户端(本地)、插件(本地)发起测试,满足多种不同场景的测试需求。

客户端(本地):


 

服务器测试(在线):


 

插件(本地):

  1. 一键进行回归/冒烟测试

在以往的协作方式中,测试人员工作总是排在最后进行,无法参与项目讨论,无法进行快速大范围回归测试,甚至无法按时完成测试任务,导致项目延期或带着忐忑上线。在 API 研发管理平台 中,由于协作是基于 API 文档进行的,当后端开发人员将 API 文档写好之后,测试人员就可以马上介入,在 API 文档的基础上编写测试用例,让测试工作前移。当 API 开发完成之后,测试人员可以一键将 API 的测试用例全部测完,并且得到详细的测试报告。后端开发只需要看到测试结果就能够知道自己的 API 是否满足测试需求,如果有异常则可针对性改进。

  1. 丰富详细的测试报告

该平台也提供了丰富详细的测试报告,方便查看和分析测试结果。

预告一下,下篇文章将给大家介绍一下接口自动化测试断言设置思路,感兴趣的小伙伴,建议持续关注。

重点:学习资料  

600g的学习资料懂的都懂

 

 

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

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

相关文章

PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克NKE股价时间序列数据...

原文链接:http://tecdat.cn/?p27099 金融资产/证券已使用多种技术进行建模。该项目的主要目标是使用几何布朗运动模型和蒙特卡罗模拟来模拟股票价格。该模型基于受乘性噪声影响的随机(与确定性相反)变量(点击文末“阅读原文”获取…

【 医学影像| 数据预处理】

影像读取及预处理:预处理后的数据集建议保存在本地,可以减少训练时的部分资源消耗。里面提到了归一化的 对分割的一些理解:基于深度学习来做医学图像处理,主要的工作集中在了数据预处理部分:深入理解医学图像的格式和特…

GLAD:体全息

概述 自从伽伯1948年提出全息术后,光学全息术已经被广泛用于三维光学成像领域。体全息成像技术是采用体全息光栅作为成像元件对物体进行三维成像的技术。 1990年,由Barbastathis和Brady提出体全息成像技术,采用体全息光栅作为选择成像元件&#xf…

【微信小程序高频面试题——精选一】

微信小程序高频面试题小程序中如何进行接口请求?会不会跨域,为什么小程序的常用命令有哪些你认为微信小程序的优点是什么,缺点是什么微信小程序中的js和浏览器中的js以及node中的js的区别微信小程序中的数据渲染浏览器中有什么不同小程序中如…

全国所有地级市环境污染、企业、公路、固定资产、外商投资-最新面板数据

一、1990-2019年地级市面板数据 1、数据来源:中国城市统计年鉴、WIND数据库 2、时间跨度:2000-2019 3、区域范围:所有地级市 4、指标说明: 该份部分数据指标如下: 主营业务税金及附加(万元) 发明专利…

android-CHECK_xxx分析

android-CHECK_xxx 在android源码中有不少类似这样的用法,上图中就是检查获得的hal版本是否大于等于版本1_3,满足继续往下走,不满足则assert,并报错。 接下来就展开看看CHECK_xx家族: 用法 类型用法含义CHECK_EQ(val…

【SpringCloud】07 流量管理sentinel

sentinel Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 1. 微服务中的服务雪崩 服务雪崩效应是一种因“服务提供者的不可…

Springboot系列(二十二):如何纯文本转成.csv格式文件?|超级详细,建议收藏

一、前言🔥 不知道大家有咩有遇到这么个需求,给你一长串文本,要求你能导成excel格式展示数据,一时间我陷入了沉思,如果要常规转excel,最明显的一点就是固定表头名,然而并不是,这表头…

[附源码]计算机毕业设计springboot冬奥资讯系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【DL with Pytorch】第 2 章 : 神经网络的构建块

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

第一个Shader Graph

上篇我们用ShaderLab来实现了第一个Shader,但对于初学者也太复杂了,那有没有简单的方式来实现shader的操作呢? 现在我们来分享下ShaderGraph,可视化编程,如图所示 ShaderGraph介绍 ShaderGraph是2018年推出的,可以看下官网出的例子https://github.com/UnityTechnologi…

[Linux] 进程程序替换之实现一个简单的shell

进程程序替换替换原理替换函数实现一个简单的shell主要过程实现代码替换原理 用fork创建子进程后执行的是和父进程相同的程序,若要执行不同的代码分支,子进程往往要调用一种exec函数以执行另一个程序;当进程调用一种exec函数时,该…

信息论与编码:随参信道特性

文章目录随参信道数学模型的建立随参信道对信号传输的影响平坦性衰落及频率选择性衰落1.平坦性衰落Rayleigh 分布Rice 分布2.频率选择性衰落多径随参信道的时延扩展与相干带宽随参信道的多径时延特性多径信道的频域特性移动信道的多普勒扩展及相干时间1.多普勒扩展2.信道的相干…

nodejs大前端从入门到精通一

一、nodejs架构 nodejs核心组成Natives Modules 当前层内容由JS实现提供应用程序可直接调用库,例如fs、path、http等JS语文无法直接操作底层硬件设置 在和硬件交互的的桥梁,通过Builtin Modules(胶水层) 底层: V8:执行JS代码&…

Android——Theme和Style-由浅入深,全面讲解

1、官方详细解读 样式和主题背景 | Android 开发者 | Android Developers 2、应用场景 类似web设计中css样式。将应用设计的细节与界面的结构和行为分开。 样式style :应用于 单个 View 的外观。样式可以指定字体颜色、字号、背景颜色等属性 主题theme&…

【仿牛客网笔记】项目发布与总结——单元测试、项目监控

在项目上线之前需做好单元测试,平时开发的过程中,每个功能也需要进行单元测试。 验证注解的作用,注解是修饰方法的。 每次调方法都是静态的 对test1和test2分别进行运行 通过类进行运行,运行所有的方法 测试帖子的Service&#x…

【序列召回推荐】(task5)多兴趣召回Comirec-DR

note: 多兴趣召回建模。Comirec论文中的提出的第一个模型:Comirec-DR(DR就是dynamic routing),阿里将用户行为序列的item embeddings作为初始的capsule,然后提取出多个兴趣capsules,即为用户的…

【Java】博客系统——详细解释+代码+详细注释(课设必过)

目录 前言 博客系统简要分析 一、数据库的设计 1.1 分析 1.2 代码实现(创建数据库和表) 二、封装数据库(JDBC代码的编写) 2.1、首先通过创建Maven项目,基于Small Tomcat部署 servlet; 2.2、封装数据…

telnet配置设备远程管理—eNSP

案例:给路由器配置远程管理,使一台路由器远程管理另一台。 所需设备:两台路由器,一根网线 图示 一、给两台设备配置IP地址 AR1(以下命令) a. sy b. int g0/0/0 c. ip add 1.1.1.1 24AR2 a. sy b. int g0/0…

区间信息维护与查询【线段树 】 - 原理1 线段树的基本操作

区间信息维护与查询【线段树 】 - 原理1 线段树的基本操作 线段树(segment tree)是一种基于分治思想的二叉树,它的每个节点都对应一个[L , R ]区间,叶子节点对应的区间L R 。每一个非叶子节点[L , R ]其左子节点的区间都为[L , (…