自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享
一、前言
对于传统的实现接口自动化的方案往往是搭建自动化框架,通过excel编写用例来驱动执行,例如常见的万金油技术栈组合:openpyxl、pytest、allure等。
很多公司往往是通过自动化框架而非测试平台来实现接口自动化,主要是自动化框架相对于测试平台的建设成本会低很多。 但对于自动化用例的维护、及编写用例的上手难度来讲同样会更难不少。建设架构的成本和用例维护成本是一个成反比的关系,所以我们需要根据实际情况来选择是建设自动化框架还是测试平台。当业务处于迭代快,项目多、场景复杂的情况下,用例成本维护的低效会让自动化变得越来越困难和复杂,这时选择建设测试平台是更优于自动化框架的。反之,则更应该选择自动化框架。
为何会说自动化框架难维护呢?举一个简单的问题:当接口参数发生变更时,如何找出其影响的测试用例?
这个问题对于传统的自动化框架测试方案来讲绝对是棘手的,我经手过最大的单项目有2000多个接口,基于此建立的用例有10000条+,如果通过excel驱动接口自动化测试的方式很难有合适高效的方案来解决这个问题。如果通过平台来做,由于有数据库的概念,维护了接口id与用例之前的关系,只需要查询用例中关联了该变更接口的数据就可以直接找出影响范围了。
这只是一个小例子,实际还有很多地方阻碍传统接口自动化测试的开展。所以很多体量较大的公司会建设自动化测试平台,来提高自动化开展的效率 ,提高用例的可维护性等。
该专栏完整教程地址:《从0搭建自动化测试平台》
项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码:123456)
文章目录
- 一、前言
- 二、痛点分析
- 三、接口自动化测试平台设计思路分析
- 1. 抛弃单独维护接口的功能
- 2. 通过引用用例的方式代替前后置用例
- 3. 变量全局化及值记忆
- 4. 接入Swagger,及时发现变更
- 5. 任务中心(定时、组合)
- 6. 控制器(重试、条件判断等)
- 7. 断点(实时)调试
- 8. 请求域名/变量/SQL等区分环境
- 9. 支持自定义函数
- 10. 支持SQL
- 三、总结
二、痛点分析
对于传统搭建接口自动化框架方案的痛点一张图可概括:
这也是为什么大厂都要建设自动化测试平台的原因了。但也不是谁都需要建设平台,如果你们公司属于迭代慢、项目少的情况,那传统的自动化方案才是最适合的。毕竟相对来说,平台的建设需要的人力、时间成本是巨大的。
三、接口自动化测试平台设计思路分析
为了解决上述列举的痛点,我们在建设测试平台时需要着重的考虑如何设计才能更优的解决并适配实际业务需求和测试场景,下面是我的一些思路和见解,这里分享给大家:
1. 抛弃单独维护接口的功能
往往,不少接口自动化平台的进行接口自动化建设时,第一步是需要在接口库中按照项目-模块-接口的层级维护接口数据,然后才是在编写自动化流程(测试用例/计划)时使用这些接口。但这一步在我看来完全是没必要的。
所以我直接抛弃了该步骤,直接进行测试计划的编写,用户在编写测试计划的过程中定会填写使用到的接口参数和测试数据等,这个时候我只需要在保存数据时将填写的接口参数和测试数据写入到对应的接口库中即可(下图是编写接口用例的页面):
2. 通过引用用例的方式代替前后置用例
在自动化测试中经常存在前置或后置的重复操作(即需要在测试正式开始前先执行的操作)例如:
- 在执行前进行登录
- 准备测试数据
- 清除测试过程中产生的数据
上述的操作我们能够很容易定义为前置还是后置用例,但在我们实际编写用例的过程中会发现,有很多能够作为前后置的用例我们写成了普通用例,或者某些用例依赖多个普通用例而非特定情况下的前置用例等情况。但我们编写的用例耦合性太强了,很难再拆分出前后置用例。所以实际情况往往需要更加灵活,用例之间的关系并非只有前后置两种,应该能够随意引用才行。所以我选择用引用的方式来代表前后置,用例之间可以随意引用,也可以引用多个等。以此来降低耦合性,增加可维护性。
3. 变量全局化及值记忆
在我们编写自动化用例的过程中,有动态参数变量的情况会让调试用例变得复杂,很多时候一个尾部用例需要前面的数据生成了数据,该用例才能跑下去,这样我们在调试尾部用例时就都需要跑一次前面的用例。这个过程是枯燥且繁琐的。
因此,在每次执行/调试用例的过程中,我都会将产生变量及变量来源(按照“计划-模块-步骤”的组合展示)加入到全局参数中,用户进行下一次请求或实时调试时,都能够直接使用这些变量,不需要重新执行依赖的用例:
这样设计最大的一个好处就是在调试时,也能直接使用变量,减少了我们很多操作,提高了不少效率:
4. 接入Swagger,及时发现变更
如果你们的Swagger比较规范,可以直接通过解析Swagger的方式,来将其导入到接口库中,这样完全不用用户来维护接口的参数及模块信息等数据了:
在执行或Jenkins构建后请求测试平台开放的Swagger比对接口,当接口出现变更的也可以直接对比出接口差异,这样结合接口和计划步骤的关联设计能够非常快速的找出影响的用例,以此减少维护成本。
5. 任务中心(定时、组合)
测试平台的定时执行是尤为重要的,所以也需要设计能够配置定时执行任务的功能:
另外,一个完备的测试平台不会只有接口自动化这一种功能,还会有性能、UI自动化等。所以任务中心还需要提供的功能则是不同类型的自动化之前的组合:
6. 控制器(重试、条件判断等)
1)重试
在实际业务中,接口本身的不稳定 (非100%成功的接口) 或一些异步接口 (响应结果为成功,但数据并未真正的导入进去,需要等几秒才会进数据) 的使用会导致自动化测试的不稳定性,很多小伙伴处理这类场景的时候,是使用强制等待来做的,在这类步骤之间增加一个sleep多少秒的操作。其实有更好的方案来代替它,在我平台的设计中,使用重试的方式来做:
用户可以配置步骤的重试次数,当出现与设立的期望不匹配或接口异常的情况后,系统会根据设置的重试次数进行重试,如果重试成功则继续执行,若超过设置的重试次数还未成功,则抛出失败。这样不仅能减少等待的时间也更能增加稳定性:
2)条件控制
有些时候,步骤能否执行依赖之前的数据是否成功,或自定义的变量状态。这时我们也可以在控制器中增加条件控制来满足这个需求。
当我们配置了控制后,对应步骤会增加一个标签,来区分那些没有配置控制器的步骤:
7. 断点(实时)调试
通过传统方案建设自动化有一个好处,就是能够Debug,打断点进行跟踪调试,更快捷精确的发现出问题的地方。
其实平台也能够做断点调试,实现方案也不难
传统方案的断点是代码层级的,一行行代码间的断点,而平台可以做步骤级的断点,每个步骤的断点,至于实时性,完全可以通过前端与后端建立webSocket就能够轻松搞定。所以也不是啥解决不了的问题。
8. 请求域名/变量/SQL等区分环境
很多情况下,自动化的应用不是在单一的一个环境中。我们的自动化就需要在四个环境中使用:测试、预发、性能、线上环境。
如果因为切换环境,就需要我们更改测试、用例数据这效率是非常低的。所以我们可以将这部分数据做环境区分,当执行环境不同时,自动选择不同的数据进行执行:
预先配置好各环境的基础数据:
在使用时,按项目维度选择:
这样在执行时,就能够达到我们想要的效果,不需要手动更改数据了:
9. 支持自定义函数
在我们开展自动化的过程中会发现存在不少特殊的情况无法范式化或着通用的解决,比如在参数解析和期望判断上,需要自定义的情况非常多。这个时候就需要函数来支撑,平台应该能够提供编写函数及选择使用函数的功能:
10. 支持SQL
原则上讲接口自动化不应该操作SQL,但实际情况却经常需要使用SQL才能继续进行自动化,所以平台对SQL的支撑也是必不可少的,我们的SQL连接信息也可以按环境来划分。在编写SQL时应该提供更直观方便的调试:
三、总结
这一章节基于自身理解为大家介绍了自动化测试平台和传统自动化框架的应用区别和适用场景等,另外分享了一些个人觉得高效的自动化测试平台应该具备的特点和功能。
后面的章节会对这些功能点进行分析并给出具体的实现方案(用哪些技术,组件,框架等)和思路,欢迎关注!
自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享相关推荐
- Java接口自动化框架系列07:Web接口自动化测试框架设计思路
1.Java web接口自动化框架 框架名称:Java+Maven+httpClients+TestNg+Allure (因本次只讲解java部分,未包括git和jenkins,如果是包括git和je ...
- Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
目录 前言 实现功能 目录结构 依赖库 安装教程 接口文档 如何创建用例 创建用例步骤 用例中相关字段的介绍 如何发送get请求 如何发送post请求 如何测试上传文件接口 上传文件接口,即需要上传文 ...
- python api开发用什么框架_python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)
python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...
- pytest文档73-pytest+yaml实现接口自动化框架之用例参数关联
前言 使用 yaml 文件写测试用例的时候,如何在 yaml 文件的测试用例里面实现参数关联? 这是很多做自动化测试的小伙伴经常思考的一个问题. 接着前面的pytest+yaml 文件实现接口自动化框 ...
- python+requests+pytest 接口自动化框架(一)
目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...
- pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程
pytest+yaml设计接口自动化框架过程记录 第三代框架使用教程,该框架比现在这个完善了很多 框架简介 框架运行演示和功能介绍视频 pytest+yaml框架环境配置和使用教程 0.去年也写了一个 ...
- python 自动化框架打包_python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
- 接口自动化 ------ 快速搭建接口自动化框架
接口自动化框架要搭成什么,里面的内容究竟应该有多少? 这个问题没有标准答案,因为这要取决于你的项目,以及你想要用框架来解决什么问题等多种因素. 当然了,这里也就不展开讨论了,还是回到接口自动化这个点, ...
- 浅谈python+requests接口自动化框架
为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...
最新文章
- 面向回家编程!GitHub标星两万的Python抢票教程”,我们先帮你跑了一遍
- 移动端设置点击屏幕闪烁的问题
- 关于梦想--------听说标题够长才有人看
- mysql++3307,mysql多实例配置方法
- PHP 日期时间类 Carbon 的常见用法
- uniapp公共跳转(uni.navigateTo)封装
- 微信小程序源码分享合集-1
- 【问题】myeclipse启动时Tocmat错误:cound not create the view :An unexpencted expetion was thrown
- 一个非常好的学习方法总结
- 基于单片机指纹考勤机仿真系统-毕设资料
- P3369普通平衡树
- 内网环境下如何配置CentOS网络源(阿里云)----nginx代理实现
- winform控件之MonthCalendar
- Java的triangle方法_java三角形类Triangle用法代码解析
- extern与static
- 计算机定时播放音乐,智能音乐定时播放系统 MP3音乐定时播放工具
- uniapp开发微信小程序使用painter绘制海报
- 教育部人工智能科技创新专家组2名单(公号回复“教育部AI工作组”下载PDF资料,欢迎转发、赞赏支持科普)
- linux 下 java环境安装
- java魔塔游戏_基于JavaSwing的游戏 --魔塔(MagicTower)
热门文章
- uni-app开发模式中的选择图片(uni.chooseImage)、上传图片(uni.uploadFile)、图片预览(uni.previewImage)
- 测试体质的软件有哪些,有哪些APP可以测体脂?测体脂率APP分享
- 软件行业英雄们的离世
- BZOJ4484 JSOI2015最小表示(拓扑排序+bitset)
- 智能电视聚好看连接服务器失败,智能电视为什么登录失败? 试试这样做
- 软件设计 抽象_调试抽象给软件工程师带来正念的好处
- 【Matlab】三维绘图总结
- 流量之战:阿里150亿入股分众,到底为哪般?
- 透彻理解神经网络剪枝算法
- 数字图像处理实验四对比度增强