当前位置: 首页 > news >正文

一文2000字手把手教你自动化测试平台建设分享

上期为大家介绍了自动化测试的基本概念,方便大家对于自动化测试建立基础性的认识。随着今年自动化测试建设项目的落地,我行的自动化测试平台也应运而生,为我行在自动化测试领域的实践探索提供了工具支撑,下面我就为大家分享平台建设过程中的一些思考。

01、平台建设思路

目前自动化测试已经具备比较成熟的技术条件,市面上有大量的开源框架支持自动化测试的落地,但都需要一定的开发语言作为基础支撑。由于银行内部系统的多样性,以及行内测试团队当前的技术储备较为薄弱,所以直接选用某框架进行自动化实践显然不适合我行的实际情况。因此在2020年,我们邀请了6家专业厂商进行了多轮的交流,并在现场针对各家的产品进行了POC测试。通过测试,我们发现虽然厂商的现有产品可以在在技术层面上解决可行性的问题,但产品的技术架构较落后,功能规划较割裂,给用户带来了较差的使用体验。因此在部门领导支持下,我们选择与厂商合作,重新来定制化研发专属于我行的自动化测试平台。平台的设计将以“适用”和“效率”为主题,来实现我行自动化测试工作的落地和技术栈发展规划的统一。

02、平台功能规划

自动化测试的本质是将原先由手工验证的环节转化为机器执行验证,它的实现脱离不了基础的测试工作流。因此自动化测试平台需要承载由需求分析开始到问题反馈结束的各环节,并与研发管理流程有机结合,形成逻辑清晰完整的工作流。经过项目组的多方调研讨论,我们首先输出了自动化测试平台侧的操作流程:

我们将自动化测试的操作划分为3个阶段、8个环节,方便平台用户能以测试人员的视角来开展自动化测试。在此基础上,针对8个操作环节项目组进行了细致的需求分析,整理输出了平台需要实现的32个功能点,并根据功能点之间的业务关系进行逻辑整合,形成以自动化实施为核心的6大功能模块:

03、技术架构规划

在确定了平台功能层面的需求后,如何进行技术选型来实现平台的落地和迭代又成为了项目组需要解决的难题。由于厂商的原产品为“B/S+C/S”组合式应用,其开发框架和系统架构已经远远落后于业内的主流方案,因此在部门领导的鼓励下,项目组决定大胆尝试以行内的敏态开发平台技术框架为开发基座,使用前后端分离的工程模式来重构一款操作与执行一体化的B/S应用。

除了重新规划自动化测试平台侧的技术方案外,针对于执行机侧的引擎脚本,项目组也选用了基于JVM的敏捷开发语言Groovy来进行重构,取消了原来Java、Python和Vbs混用的脚本方案,为后续执行脚本的开发维护建立了统一标准。

考虑到未来随着自动化测试覆盖率的提高和DevOps建设的推进,自动化测试任务的执行的频率和容量也会大幅提高,对于平台服务端带来一定的性能要求。为了保证服务的持续可用,在设计部署架构时,项目组采用以一台主服务器和一台从服务器为基础来构建服务集群,并在前端通过接入F5的方式来实现负载均衡,以满足未来2-3年业务量提升带来的压力需求。

04、核心功能设计

在梳理清楚平台的功能架构和技术方案后,如何在使用环节保障平台用户的操作体验,提高自动化测试的工作效率是项目组需要重点解决的问题,下面就几个核心问题的解决方案为大家做简单分享:

1、如何让手工测试人员快速上手平台?

作为我行定制化开发的工具平台,其要解决的一个重要难题就是如何有效降低技术门槛,方便用户快速开展自动化测试实践。在项目设计初始就确定了在平台操作层面会实现业务测试为核心,所有技术层面的实现和对接将由平台开发人员通过封装关键字和执行引擎的方式供用户在展示层调用。操作页面将隐藏所有的执行脚本,以此降低用户对于技术的抵触和恐惧,通过拖拽关键字的方式来构建自动化用例模版,以此提高自动化用例的构建效率;

2、如何解决测试数据的获取和复用?

目前自动化测试的解决方案都是以数据驱动的思路进行设计的,所以在实践过程中测试数据带来的一些列问题成为了通病。怎么解决在有限的资源环境下,对于测试数据进行有效获取和重复利用成为了平台落地的关键问题。在项目组多次调研和实践后,在平台中独立设计了用于测试数据使用和管理的模块:

 3、怎么提高自动化任务在执行环节的效率?

自动化测试执行效率一方面在平台侧的服务调度,另一方面在执行机侧的执行反馈。在执行节点的部署方面,项目组采用统一管理执行机环境资源的模式,在平台侧统一整合形成基础资源包,通过一键部署的方式,可以在10分钟内完成新增执行节点的扩展:

另外,在项目建设过程中也在不断优化自动化任务的执行策略,将原有执行侧等待任务的模式调整为主动向平台侧拉取任务,通过此策略任务的执行策略提高了近10倍,为被测系统部署后的快速验证提供了可能;

今年是我行自动化测试的起步元年,在领导的支持和同事的帮助下,自动化测试工作得以实现从0到1的跨越,展望未来的工作任重道远,期望在今后的工作中积累更多为大家带来分享。


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

相关文章:

  • 国务院:电子印章跨地区跨部门互信互认,契约锁助力企业办事提效
  • 同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载
  • 【Hack The Box】windows练习-- devel
  • 山西大同大学技术会,大同大学的家!
  • verilog--用于电路设计--0
  • 完全二叉搜索树
  • 每天一个小细节:UDP协议特点与报文结构
  • Buff/Cache概念和清理方法
  • 【数据结构-树】二叉树的基本操作
  • 死磕JAVA10余年,呕心整理出了核心知识点已经做成PDF,无私奉献
  • javaweb之ajax异步交互
  • 生产实用Shell脚本合集
  • 力扣 1856. 子数组最小乘积的最大值
  • Qt实现控件的折叠收起和展开的功能
  • #传输# #传输数据判断#
  • SegmentFault for Android 3.0 发布
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android单元测试 - 几个重要问题
  • Android交互
  • Android框架之Volley
  • bootstrap创建登录注册页面
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • git 常用命令
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • ubuntu 下nginx安装 并支持https协议
  • 从setTimeout-setInterval看JS线程
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 来,膜拜下android roadmap,强大的执行力
  • 山寨一个 Promise
  • 事件委托的小应用
  • 学习使用ExpressJS 4.0中的新Router
  • mysql面试题分组并合并列
  • ​520就是要宠粉,你的心头书我买单
  • ​io --- 处理流的核心工具​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # C++之functional库用法整理
  • #微信小程序(布局、渲染层基础知识)
  • (1)(1.9) MSP (version 4.2)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (4)(4.6) Triducer
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (二)c52学习之旅-简单了解单片机
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (剑指Offer)面试题34:丑数
  • (四)模仿学习-完成后台管理页面查询
  • (一)Dubbo快速入门、介绍、使用
  • (译)计算距离、方位和更多经纬度之间的点
  • (原)Matlab的svmtrain和svmclassify
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .form文件_SSM框架文件上传篇
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复