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