通用自动化脚本管理模式-并不只是看上去很美
Posted WXCOP无限靠谱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通用自动化脚本管理模式-并不只是看上去很美相关的知识,希望对你有一定的参考价值。
这是最开放的时代,这是最迷茫的时代,无论怎样,这是自动化推进最快速的时代,当我们静下心去构建属于我们的自动化脚本管理模式,你会发现以不变应万变的通用自动化脚本,并不只是看上去很美!
随着敏捷开发变得更加普遍,自动化测试的重要性日益为大家所重视,持续集成离不开测试自动化,自动化测试需要像敏捷开发中那样在出现变更时能做出快速响应,于是测试件架构便显得至关重要,自动化测试框架也被越来越多人研究。本文只针对自动化测试框架中自动化脚本的管理和维护进行一些探讨,其是针对项目本身的痛点进行的探索和尝试,相信对其他项目也会是一个启发。
在产生第一批自动化脚本的产品版本测试完成后,我们开始遇到两难的问题,新的产品版本对应的自动化脚本是否需要形成新的基线,与原有产品版本测试对应的自动化脚本完全分开?这是业界常用的自动化脚本基线管理方法,分版本基线来维护和管理自动化脚本。其优势是简单明了,便于控制和管理;而劣势也很明显,维护工作量大,因为新老产品版本可能存在共存的情况,多个自动化脚本基线都需要同时维护。
我们是否只能按业界常用的自动化脚本基线管理方法,分版本维护和管理不同的脚本?
项目的现状是同时存在多个产品和多版本,如果按照传统版本维护和管理脚本的传统思路,就会出现以下几个痛点:
Ø 维护工作量大,同一个脚本要在多个产品和版本分支和维护,人力上不允许;
Ø 无法简单直观地看到同一个脚本在各个版本运行的记录;
Ø 无法通过同一个脚本的变更对比分析出不同版本间功能的差异。
是否有新的方式来规避这些痛点呢?带着这个问题我们对项目自动化脚本在不同产品(指同一项目中功能近似的产品类型)和不同版本的差异性进行了分析。分析发现不同产品可能只是支撑硬件平台或是操作系统的差异,上层业务流程是一致的。只要解决环境、网管配置和脚本适用产品几方面的问题,脚本是可复用的;不同版本间仅仅是配置、消息流程顺序、定时器差异等几方面差异。
于是我们决定使用新的自动化脚本维护和管理框架—通用自动化脚本管理。通用自动化脚本管理的目标就是无论产品类型和版本类型是什么,只维护和使用同一套自动化脚本,看起来很令人神往啊。
基于上述分析,我们发现解决不同产品、不同版本的问题需要考虑自动化脚本的如下几个方面的适配:
其中配置对于不同产品和不同版本两个方面的要求又有所区别。比如对于不同产品类型,可能有个别网管配置命令是完全不同的,而对于同一产品的不同版本,可能大部分只是配置命令的参数差异,两者可能适配的方式也要分别考虑。
一个好的自动化测试架构,应该在降低自动化测试维护和自动化测试各方面成本的同时考虑其灵活性和适应性,其中最重要的一个因素就是自动化环境适配。
我们通过对产品体系结构的分析来确定环境适配的可行性和方法,不同产品类型的对外接口是否有差异?对应的组网有何不同?工具对不同产品类型的支持程度如何?
以某项目为例,其有独立的产品A和产品B,还有产品A和产品B基础上合成的产品C,对接网络如图示,通过分析,可以发现产品A和产品B是产品C的子集,在自动化环境规划上可以考虑先规划出产品C对应的自动化环境配置全集,在此基础上区分出产品A和产品B对应的环境数据。
基于上述结论,可以在数据配置规划上统一考虑产品C的合一配置,产品A和产品B的独立配置只需要从中自动抽取。在工具上,则采用产品A和产品B相关配置分别独立,合一产品C只需要将产品A和产品B配置组合在一起即可。
如前面的分析,产品C可以看成是产品A和产品B的合集,而脚本对于产品的适配却有所差异,整个脚本可以分为三个部分,适用产品A的脚本,适用产品B的脚本,和产品C特有的脚本三部分。
实施产品适配,就需要分析不同产品需要运行什么样的脚本,这些脚本有没有可以识别的特征?从前面的分析我们可以看出产品A和产品B对接的设备是不一样的,简单说就是对接接口不同,工具可以很简单根据对接接口来适配不同的产品。对于其他非接口差异的产品类型也可以以同样的思路考虑特征的抽取。
配置命令适配分为同产品类型不同版本间的配置差异以及不同产品类型下配置差异两类。
场景一:同产品不同版本间配置命令差异适配
该场景下对已有配置命令的变更主要有入参和出参的增删改,配置差异如何能做到用例脚本无需变更仍能正常执行呢?那就需要自动化用例执行终端能够获取到版本间的差异根据差异把自动调整后的命令送给网管服务器执行,为此我们实现了一个配置命令库子系统,该系统主要采集了各网管版本下的配置命令及各命令对应的入参,并支持编写各命令查询输出结果的正则匹配函数。
测试工具在启动时会把配置命令库生成的配置关键字库文件ftp下载到本地,测试工具执行脚本时会根据被测产品自动获取到的版本号,测试工具的网管命令适配层自动匹配配置关键字库文件中最邻近的版本。
场景二:不同产品类型下或不同平台下的网管命令差异适配
此类差异对于本项目而言数量比较少,因此采用了简单的实现方法,使用工具自动进行全局配置替换的方式,包含配置命令、入参以及正则函数的替换,在执行用例前翻译脚本时如果有匹配到全局配置替换中的命令就执行自动替换。
在遇到版本配置变更较大,网管命令适配无法实现以及业务逻辑实现有变更时,为了保证同一条用例能够在多个版本分支正常执行就需要使用到版本适配,该实现思路同样适用于以上所有场景,实现思路比较简单,就是在遇到变更时在用例脚本中增加变更版本分支,在用例执行时根据当前环境获取到的版本选择用例中邻近匹配的版本分支流程,如果用例中不区分版本分支,那就适用于任何版本。
自动化测试已经逐渐成为敏捷开发的必需品,好的自动化架构能够让测试自动化发挥真正的力量,在工作中多思考多改进,寻找和改进适合自己的自动化测试架构去更好地服务于产品。
以上是关于通用自动化脚本管理模式-并不只是看上去很美的主要内容,如果未能解决你的问题,请参考以下文章
支付宝红包口令自动复制到剪贴板脚本js,安卓,IOS通用版
微信小程序看上去很美
4399AT测试工具脚本,执行,报告功能概览
shell脚本
Shell脚本应用
Python语言web自动化通用脚本