什么样的测试框架更合适呢?

2021-05-16   出处:土司阿哈  作/译者:土司阿哈  

        做自动化测试有十余年,一直想写自动化相关的文章但没敢写,怕自己道行不深,误人子弟。前段时间公众账号没有文章可发,开始写了几遍自动化相关的文章,详见《UI自动化到底该如何实施?》《UI自动化应该实施哪些内容?》《高效自动化测试框架的5个特征》阅读量还可以,更有朋友鼓励多写几篇关于自动化相关的文章。接下来几篇文章将和大家讨论自动化框架构建,从自动化测试基本原理、测试框架的三驾马车,自动化测试框架六要素等文章,深入自动化框架背后的原理思考如何构建一个自动化测试框架。

        本文主要和大家聊聊自动化测试框架的发展历史及其各个自动化框架在实践中的应用。希望大家多多讨论,多提意见。

1.自动化测试框架

        自动化测试框架是一组自动化测试规范、组织能力、技术能力以及测试思想、惯例等集合。

        框架的好处在于减少代码冗余,提高代码生产率,提高代码重用性和可维护性,提高开发速度,提升代码执行效率;提高代码质量,同时引入重用重构,让代码更干净和富有弹性;提升系统的可依赖度,作为回归测试的一种实现方法制成修复后再“测试”,确保代码的正确性。

2.自动化测试框架的发展过程

        再聊自动化框架的应用前先简单的聊下自动化框架发展的历史过程,自动化发展的过程有好几种说法,但我更认同从录制回放、脚本技术,再到新一代自动化测试技术。

        2.1 录制/回放测试框架

        录制/回放自动化测试框架其核心是解决测试过程中的重复或循环执行的问题,而来的一种自动化测试框架,录制/回放测试框架所采用的原理是通过录制应用程序产生的线性脚本进行回放从而达到自动化测试的目的。


录制/回放自动化测试框架优点是简单,通过录制就可以得到所需脚本。但也有很大的缺点,因为录制的线性脚本,不具有逻辑判断的能力,一旦界面发生变化可维护性差,效率低下。

        2.2 基于脚本技术的测试框架

        基于脚本技术的自动化测试框架,其核心就是未解决线性脚本不够灵活的问题,引入变量、控制语句使得脚本更加结构化和程序化,同时增加各种检查点,可以对软件做验证。真正以上实现了自动化测试基本能力。

        脚本技术的测试框架主要问题是测试脚本也是一种程序语言,所以测试人员也需 要懂程序语言,换句话说就是要会写程序。而且当软件有变动时,测试脚本也需要同步更新,这对测试人员来说是一大挑战。

        2.3 新一代自动化测试框架

        新一代自动化测试框架,其核心是解决自动化测试脚本的巨大的维护工作量的问题,核心思想是分层分类,实现对象、操作、数据的分离分类分层,使得对象,操作,数据相互独立管理,从而实现了业务、脚本、数据之间的相互独立,最大程度地减少相互之间的影响,大大减少了维护的工作量。新一代测试框架不仅实现了将数据和脚本相分离,而且实现了测试逻辑和数据的分离,大大提高了脚本的复用度和维护性,从而更大限度地实现了测试工具的自动化。


        基于新一代技术,又生长出基于数据驱动的自动化测试框架和基于业务驱动的关键字技术自动化测试框架

        基于数据驱动的自动化测试框架,其原理是采用了数据驱动脚本进行测试,数据驱动脚本是将数据输入存储在独立的数据文件中,脚本只存放控制信息,测试时输入直接从文件中读取,这样同一脚本可以运行于不同的测试用例中,实现了脚本与数据的分离。其优点是可以快速增加相似测试,测试者增加新的测试不必掌握测试工具语言,对此后的类似测试无额外维护开销;缺点是初始建立测试脚本的开销较大,进行数据扩展的脚本需要针对相同的测试内容并具有相同的测试逻辑。


        基于业务驱动的关键字技术自动化测试框架,通过对对象的进一步封装,通过对业务的封装,实现了业务与技术人员的角色分离,业务同学专心通过业务组建构造业务场景和测试数据,技术同学不需要深入了解业务,只要维护好业务对象,构造业务关键组件

        2.4 面向未来的自动化测试框架

        面向未来的自动测试框架是什么呢?可能是基于大数据和人工智能,甚至物联网的一种技术,本人脑洞不够大,请网友补充……

3.不同阶段的自动化测试框架的应用

        这三代技术到底那个好呢?一般从发展的角度来说,后一代比前一代或者前几代更好,但并不是说前一代就不好,具体使用时需要根据业务特性和被测对象综合考虑。

        3.1基于录制回复技术的应用

        录制回放技术是最早出现的自动化测试技术之一。在不断的演进过程中不断的融入了第二代第三代技术,让其更具有可维护性和更有效率。在此简单的聊下录制回放在App测试时的应用。

App兼容性测试是App测试中最为困难的一块,不是说其技术有多难,而是要适配的机型众多,每次和设计原型的对比是一个技术量低而且又费时间的事情。如果能用自动化测试技术实现对测试和设计同学来说无疑是件幸福的事。

具体方案:以设计的原型图为标准检查点,通过录制回放技术实现对具体业务的录制,然后再在不同的机型上回放,通过图片分层,切图,采用各种图片对比技术实现设计图在各个机型上的适配测试,从而大大节约测试时间。

        3.2基于数据驱动的自动化测试框架的应用

        基于数据驱动的自动化框架常见于接口自动化测试中。在接口测试中因为其接口本身是固定不变的对象,而变化的恰恰是接口是实例化的数据。特别适用于数据驱动的自动化测试技术。详细不在赘述,可以参考原来写的一个接口测试框架相关的文章《接口测试经验与实践》。

        3.3基于关键字驱动的自动化测试技术的应用

        基于关键字驱动的技术方案,在网上随处可见。那些说UI自动化无用论者也是基于这种技术框架实践后得出的结论。其实我更喜欢叫这些人是伪自动化测试者。因为其实他们忘了一件事情,基于关键字驱动的自动化框架技术本身的背后假设就是默认对象是变化的,所以才有在对对象和对象的基础上不断封装和抽象的关键字测试框架技术。所以说对于关键字驱动的本事需要解决的是怎样减少变化。怎样让变化对测试的影响最小。这样就衍生出各种框架,比如po模式等等。基于关键字驱动的技术方案,是UI自动化测试目前最流行的测试方案,后面继续从自动化的原理和设计背后的逻辑和大家交流。本文不再赘述。


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
145°|1457 人阅读|0 条评论

登录 后发表评论