详细讲解接口自动化攻略

news2024/11/16 15:54:13

目录

前言:

为什么要做接口自动化

问题在哪里

全靠参数化

接口间参数传递

测试数据参数化

测试断言

测试管理

导入测试用例

接口执行顺序

使用测试数据集

测试参数配置

运行结果&测试报告

测试套件


前言:

接口自动化是提高测试效率和质量的重要手段之一。

为什么要做接口自动化

相对于UI自动化而言,接口自动化具有更大的价值。

为了优化转化路径或者提升用户体验,APP/web界面的按钮控件和布局几乎每个版本都会发生一次变化,导致自动化的代码频繁变更,没有起到减少工作量的效果。

而接口一旦研发完成,后期重构/大幅度修改的频率则比较低.因而做接口自动化性价比还是很高的,对于迭代版本旧有功能的回归,beta测试,线上回归都能起到事半功倍的作用。

本文不详细谈单个接口的测试,我们来主要来分析一下基于业务场景的接口自动化怎么做。

问题在哪里

一个业务场景通常需要多个接口才能走完一个完整的业务流程,其中每个接口完成一个特定的功能步骤。例如微信的添加好友流程:

每个操作步骤里都至少有一条接口请求。那么我们把这个流程以接口请求的方式表现出来,如下:

仅作示意,并非实际

我们想要完成这条接口用例,需要的操作有哪些?

1)输入微信id,发出查询请求
2)将获取到的用户信息传递给“添加好友接口”,发起添加好友请求
3)将申请好友的用户信息传给下发好友申请接口
4)将同意信息传给成为好友消息接口
5)将拒绝信息传给拒绝消息接口
概括起来有几个需要解决的问题:测试数据传入,接口依赖,接口间参数传递。这也是接口测试自动化中会遇到的普遍问题,解决方案可以迁移到各类业务中去。接下来笔者将针对上述问题提出一些具体的解决方案

工具介绍  本文所用接口测试工具: Apifox  Windows版
Postman作为接口测试工具,在业界的地位毋庸置疑,但Apifox作为一款本土的接口调试、接口测试&测试管理软件,优势在于符合国内互联网的测试模式和工作流程,用起来更顺手些。
大部分功能均能由可视化界面+控件操作完成,对于不懂代码、不会写脚本的测试人员,基本也可以无痛顺利地完成接口自动化的任务。
因此本文讲解自动化的时候会直接使用Apifox,大家如果需要跟着文章讲解学习的,可以先去官网(www.apifox.cn )下载注册一个,软件免费。

全靠参数化

手工测试的优点在于灵活可控,自动化则依赖我们预先设置好的步骤完成功能

接口间参数传递

像上述微信好友请求的例子,涉及到多个接口间的参数传递,下一个接口对依赖于上一个接口响应中的某个字段,需要将它能准确提取并传递过来。

解决方案:提取上一个接口响应数据--参数化--下一个接口调用该参数。
这样无论接口运行多少次,传递的参数怎么变化,下个接口都能动态提取并调用。
Apifox上操作步骤如下:
1) 在要提取参数的接口的后置步骤里,使用json path表达式提取目标响应字段并命名,设置变量类型

2)该字段会保存到项目设置中,同一环境,同一项目里的其他接口具有调用权限。 运行一下上图中的接口,可以看到该字段已经被提取到变量设置中了。

3)在需要调用该变量作为参数的接口请求参数里,以参数形式填入到对应空格中

看一下结果:发送该post请求,在接口>运行>实际请求tab>请求URL中可以看到,该参数已被成功调用

测试数据参数化

  • 使用变量某些测试数据(如登陆账号密码,用户信息等)会在不同的接口被反复调用,这个时候可以将该测试数据参数化,与接口响应参数不同的是,响应参数是获取自上一个接口的,而测试参数是我们直接写进变量设置里的。

  • 在Apifox里的操作步骤如下:

  • 1)在全局变量中设置好测试数据变量名和值

  • 2) 直接在接口请求参数中调用该测试数据

  • 使用测试数据集当我们需要上传不同的测试数据以校验响应返回数据是否存在异常时,一个接口参数需要多个测试数据。这个我们放到后面测试管理的部分谈。

测试断言

既然是自动化测试,我们无法一一人工去校验返回的response是否符合我们的要求,因此需要用脚本/功能设置替人力完成这些工作。 我们主要校验:
1)接口请求是否成功,即返回的code是否符合预期
2)返回的接口数据里的关键字段、关键值是否符合预期

在Apifox上,可以直接通过界面操作设置基本的断言操作:

  • 在接口管理-后置操作 里选择断言
  • 请求发出之后,如果返回值符合预期,则在返回处会提示断言成功,失败则给予错误提示。

如果需要灵活设置断言,可以使用apifox里的后置操作中的自定义脚本功能,它也提供了代码模板功能,测试人员只需修改期待值即可。

对于单个接口,自动化的预备工作即将输入数据和接口间的参数传递都参数化、不要写死,方面后期数据修改和维护,以及使用测试断言来代替人工检查接口测试结果。

完成了这部分工作之后,我们接下来就可以把不同的接口组织到一条接口自动化用例里,完成一个业务场景的测试。

接下来的工作我们在Apifox的测试管理tab完成。

测试管理

导入测试用例

接口用例需要在测试单个接口的时候生成,这是在导入测试用例之前需要完成的准备工作。在单个接口测试的时候选择保存为用例即可生成测试用例。

在测试管理tab,新建测试用例>导入接口用例>选择该测试场景所需用例>默认选择绑定>确定导入

导入完毕后的用例如下,一个接口请求就是一个操作步骤,若干个步骤共同完成一个场景的测试。

接口执行顺序

在上述用例中,接口请求的步骤是从上而下的,如果想要调整接口的运行顺序,直接拖动接口到目标位置即可。 如果需要增加其他接口请求,则选择添加步骤。

使用测试数据集

上文测试数据参数化那一节有提到过一个接口需要多条测试数据的事情,拿到这里讲主要是功能模块刚好在这边,方便些。 在测试管理>用例的右侧,可以看到测试数据这个功能

点击管理数据,可以进入测试数据tab管理添加外部测试数据。

接着在测试步骤>设置 页面,将测试数据修改为测试数据集的变量名称

点击下方的运行按钮时,会弹出界面让测试人员选择要用的测试数据集,每个测试数据集都会当成一条测试用例来运行。

对应的会生成多个测试结果:

除了能够直接填外,也可以导入外部的CSV文件,更加适合大数据量的测试场景。

测试参数配置

在用例的右侧,有运行环境和保存变量变化值等配置,可以根据项目的实际需要选用。 其中[间隔停顿]和[使用全局cookie]在接口测试中应用频率较高。

运行结果&测试报告

点击[运行]按钮,运行成功会跳转到运行结果页面。还可以导出测试报告。

测试套件

同一个模块的接口用例可以合并为一个测试套件来运行,在测试套件页面,把单个接口用例直接添加进来,其他操作步骤和上文一致。 点击运行可以依次运行添加的用例。

作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即
【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N5K3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=GlobQko2NS5bQu3wyjjJHcr4B9Vib3pp&authKey=2wt3S40B0Wtk%2BmHrtsk9Nj1MLWr7ipmS7cjW3fAszz%2F11J8wOREcgAJDvHBM6TYa&noverify=0&group_code=574737577

 

 

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

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

相关文章

ThreadX在gcc下的移植

本文介绍ThreadX在arm-none-eabi-gcc编译器下的移植方法。 1、ThreadX介绍和源码获取 threadx的介绍和源码获取请参考之前的博文:ThreadX在mdk(AC5)中的移植。 2、准备工作 本篇主要介绍threadx在corex-m7上的移植,编译器使用arm-none-eabi-gcc。 在…

智能井盖传感器:以科技破解城市顽疾

在城市的道路网络中,井盖扮演着重要的角色,用于覆盖下方的管道和设施,然而,由于井盖的老化、损坏或被盗,常常会导致安全问题的发生,如路面塌陷、行人受伤等。井盖的状态监测和维护一直是城市管理者面临的挑…

2023年8月PMP考试,考生需要关注这些!

经PMI和中国国际人才交流基金会研究决定,中国大陆地区2023年第三期PMP认证考试定于8月19日举办。考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。 考生须认真阅读下文,知悉考试安排及注意事项,并遵守…

阿里推出了一个集成AI的数据库客户端,霸榜GitHub

背景 📖 简介    Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语…

基于vue的可拖拽设计的报表看板设计器

gitee上的不错项目,基于vue实现的可拖拽的看板设计器可以自由搭配颜色和图标,开发者可以只关注业务数据接口,前端不擅长的人员可以直接轻松上手。 1.可支持的元素 文字,边框,常见图表,柱形图,…

pgsql查询分页不对和属性转json的mapper映射

pgsql查询分页不对和属性转json的mapper映射 第一种: select * from xxx left join (selectarray_agg(jsonb_build_object(labelId,dl.label_id,labelName,dl.label_name)) as labelList,array_agg(dl.label_name) as labelNames,array_agg(dl.label_id) labelIdLi…

使用Python和Selenium自动化爬取 #【端午特别征文】 探索技术极致,未来因你出“粽” # 的投稿文章

文章目录 介绍:界面展示知识点详解导入相关模块设置Chrome驱动程序的路径创建ChromeDriver服务和启动Chrome浏览器发送GET请求获取网页内容模拟向下滚动加载更多内容获取完整的HTML内容关闭浏览器使用正则表达式提取文章信息构建数据表格和导出到Excel 扩展知识点代…

HTTP中的API是什么?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是API&#xf…

活动选择问题|贪婪算法-1

贪婪是一种算法范式,它一点一点地构建解决方案,总是选择下一个提供最明显和最直接好处的部分。贪婪算法用于优化问题。 如果优化问题具有以下属性,则可以使用贪婪解决该问题: 在每一步中,我们都可以做出一个目前看起来…

scrapy学习(scrapy项目学习)

创建scrapy项目 创建爬虫项目 scrapy startproject ss1_miove创建爬虫文件&#xff08;&#xff09; 命令格式&#xff1a;scrapy genspider <爬虫名称> <网站域名> scrapy genspider ss1_scrapy ssr1.scrape.centerscrapy框架的组成 spider文件夹&#xff1a…

ELK之Elasticsearch7.17.4安装(yum方式)和三节点集群配置

一、下载Elasticsearch7.17.4 的rpm包 下载地址&#xff1a; https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-4 二、建立elasticsearch的yum源 vim /etc/yum.repos.d/es.repo [elasticsearch] nameElasticsearch repository for 7.x packages bas…

IO多路复用之poll

文章目录 一&#xff1a;poll函数接口参数说明&#xff1a;返回结果&#xff1a; 二&#xff1a;poll的优缺点优点&#xff1a;缺点&#xff1a; 三&#xff1a;poll代码示例 一&#xff1a;poll函数接口 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, i…

Java设计模式之行为型-模板方法模式(UML类图+案例分析)

目录 一、概念 二、角色设计 三、代码实现 案例一 案例二 四、总结 一、概念 定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类当中&#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的特定步骤&#xff0c;即在一个抽象类中公开定义了执…

信驰达科技携手TI将CC2340推向更广市场领域

根据蓝牙技术联盟&#xff08;Bluetooth SIG&#xff09;2023年最新发布《2023年蓝牙市场最新资讯》&#xff0c;市调机构ABI Research预测数据显示&#xff0c;蓝牙市场在未来五年将会实现高增长&#xff0c;蓝牙设备年出货量将保持强劲增长势头&#xff0c;预计到2027年将达7…

python高频函数—CSV() 读写

Part.1 csv.reader()函数 csv.reader(csvfile, dialectexcel, **fmtparams) 返回一个 reader 对象&#xff0c;该对象将逐行遍历 csvfile。 一个简短的用法示例: >>> import csv>>> with open(eggs.csv, newline) as csvfile:... spamreader csv.r…

ctrl键的作用

crtl是control的英文缩写&#xff0c;是控制的意思&#xff0c;长和其他键组合起来使用&#xff0c;达到快捷操作的功能。 例如&#xff1a;ctrlX是剪切的功能&#xff0c;ctrlP是打印设置&#xff0c;ctrlZ是撤销&#xff0c;ctrlF是查找&#xff0c;ctrlY是恢复的功能等。 …

在野外使用无线电台的必知事项

电台属于无线通信设备的一种&#xff0c;主要用于发送和接收无线电信号&#xff0c;实现语音、数据和图像等信息的传输。它一般是由发射机和接收机两部分组成&#xff0c;能够在不同的频段和频率上进行通信。通过无线电波传输信息&#xff0c;为人们在不同场景中提供可靠的远距…

11.Rocket解决分布式事务

highlight: arduino-light 两阶段提交协议 原文链接&#xff1a;https://blog.csdn.net/fenglibing/article/details/92417739 两阶段提交协议(Two-phase Commit&#xff0c;2PC)经常被用来实现分布式事务。一般分为协调器TC和若干事务执行者两种角色&#xff0c;这里的事务执行…

【Vue3】学习笔记-ref函数、reactive函数

ref函数、reactive函数 Ref函数reactive函数 Ref函数 作用&#xff1a;定义一个响应式的数据语法&#xff1a;const xxxref(initValue) 创建一个包含响应式数据的引用对象(reference对象&#xff0c;简称ref对象)。JS中操作数据:xxx.value模板中读取数据&#xff1a;不需要.va…

地理数据处理-地理空间表的导入与查询

前言 现在大部分数据库都支持地理空间的数据存储&#xff0c;可以方便的与GIS平台调用&#xff0c;比如Geoserver、ArcGis, 但是如果使用不规范的空间表去发布图层预览可能会出现各种问题&#xff0c;比如坐标系错误&#xff0c;无法聚焦。 本文将举例最常见的SQLServer和Post…