关于自动化测试框架设计的几点思考

发表于:2019-5-29 10:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:徐彦卿    来源:博客园

  对于自动化测试的好处和重要性,相信大家都已经了解。自动化测试可以让我们在有限的时间内尽可能多的覆盖所涉及到的测试场景,减少测试人员的的重复性工作,提高测试效率以及覆盖率。
  其实很多测试同学都非常积极尝试自动化,但最终又选择放弃,很重要的原因是没有感受到自动化带来的收益。
  实际上,自动化的效率高低很大程度上取决于你的自动化框架设计得是否合理,下面就以如何设计高效的自动化框架来谈谈自己的理解。
  什么是自动化测试框架
  首先说说什么是自动化测试。自动化测试就是让被测试的软件自己可以运行起来,代替人去执行软件的功能;或者是让其他的工具自己运行起来,去检查软件的内部和外部。自动化测试可以看成是一个自动执行的过程。
  自动化测试框架则是可以让自动化测试实现的一系列组合封装的库或工具,来帮助我们进行自动化测试的配套设施。
  自动化测试框架的设计
  实际上,不管是手工测试还是自动化测试,最核心的工作不外乎编写测试用例、执行测试用例、处理运行结果、维护用例。因此,如何提高自动化测试的效率,也就拆解成了如何提高自动化「编写、执行、维护」测试用例上效率的问题。
  01 选择自动化测试方式
  目前比较常见的自动化测试方式主要分为「数据驱动框架」和「关键字驱动框架」两种。
  a. 数据驱动 (DDT)
  数据驱动指的是从某个数据文件(例如Excel文件、Xml文件、Json文件等)中读取输入测试数据,然后通过变量传入编写的测试脚本中。
  在这个过程中, 数据文件的读取、测试状态和所有测试步骤都被编写进测试脚本里;测试数据只包含在数据文件中,而不是脚本里,测试脚本只是一个“驱动”,或者说是一个传送数据的机制。
  一般用来存放数据的文件有:
  Excel 数据文件
  XML 数据文件
  JSON 数据文件
  Text 数据文件
  YAML 数据文件
  数据库
  数据驱动的方法主要用于需要通过不同数据来保证测试覆盖率的场景,比如被测系统业务逻辑固定不变或变动较小,即测试用例步骤是固定的,但是所需要的测试数据是变化的情况。通常来说,数据都是保存在外面文件或数据库中,运行时自动获取。即测试框架中要支持数据与脚本分离,一个测试脚本可以驱动执行多个相似测试场景。
  那么,数据与脚本分离是自动化的必要因素,如图所示:
  上图是将测试数据与脚本独立,页面元素与脚本独立,测试同学只需要独立维护测试数据与页面元素,且数据与页面元素是共享的,任何测试人员均可调用,减少了编写与维护的成本。
  b. 关键字驱动
  关键字驱动是将数据与关键字结合来描述如何执行测试。也就是将测试用例脚本中的步骤提取出来,放在独立的数据文件中,变成简单编写的方式。这种方法具备数据驱动的优势,同时非编程人员也能建立测试。
  关键字驱动的模式是建立在数据驱动手段之上,关键字驱动文件包含指令(关键词),而不只是数据。
  02 提高执行效率:分布式
  测试用例的执行效率也是自动化测试需要注意的重点。设想一下,一个早晨,你手捧一杯咖啡,在电脑旁开启了一天的工作,这时收到一封提测邮件,首先你开启了自动化冒烟或回归当前需求,当你在本地开启运行UI自动化测试用例的时候,当前执行的用例已经占据了你整个电脑,你啥也干不了。
  如果通过一种简单的机制可以让测试用例在其他机器或手机上运行,不需要你本机,也不需要复杂的操作,在你忙碌其他事情的时候,而多台远程机器也在同时为你执行测试用例,不仅提高了你的工作效率,节省人工成本,也同时提高了测试用例的执行效率。
  这里我们说的分布式执行是指将数条测试用例在多台远程机器上执行:
  03 常见的自动化测试框架
  不管是接口层也好,还是UI层也好,目前应用最多的工具或者语言如:
  ①Java+Selenium/Appium+TestNG/Junit+Maven/Ant+Git+Jenkins
  ②Python+Selenium/Appium+Unittest/Pytest+Git+Jenkins
  至于需要使用哪种选型,根据自己的团队需要而定,那种选型都可以搭建一个拥有好的设计模式的框架。目前在电商团队中的测试框架中支持的自动化主要有:
  小结
  一个好的自动化的框架一定是灵活易用的,因为测试对象的不确定性以及多变性对于框架来说是一个最大的挑战。
  在未来的测试发展趋势中,也许可以有更加简便的方式去包容丰富多变的测试场景,可以自动生成自动化测试用例,其实近来也有人尝试机器学习(AI+大数据的方式)来识别GUI的对象,不管是创新性的技术还是传统技术,我们的目的是为了高效率的保证测试质量。
  以上是个人关于自动化测试框架的一些见解,欢迎各位测试小伙伴们一起探讨。

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号