自动化测试框架,你知道几种?

建立测试自动化框架以指导测试人员建立和设计测试用例。在本文中,咱们重点介绍了最经常使用的框架。了解每种框架的优缺点,以帮助您的团队更好地肯定最适合您的测试的框架。

什么是测试自动化框架?

自动化测试框架就是用于测试自动化的框架。具体来讲,它提供了自动化测试用例编写、自动化测试用例执行、自动化测试报告生成等基础功能。咱们只须要基于这个框架,完成和业务高度相关的测试用例设计和实现便可。另外,框架会为咱们处理好复杂度与扩展性的问题,咱们无需为此操心。
测试自动化框架是在建立和设计测试用例时使用的一组最佳实践或准则。测试准则集能够包括编码标准,对象存储库,测试数据处理方法,有关外部存储访问的信息等。
这些准则并不是强制,可是在自动化脚本过程当中,它们提升了测试的效率并产生了有益的结果。

使用测试自动化框架的好处

  • 更全的测试范围
  • 下降脚本维护成本
  • 节省人力成本
  • 提升测试速度和效率
  • 可重用的测试代码
  • 易于报告
根据需求使用适配的自动化测试框架有助于加快测试过程,并消除人为错误。它还使测试维护更加容易,加快测试进度,节省成本、时间和精力。此外,框架QA团队可以充分开发、执行和报告测试过程,同时还使代码可在多种状况下重用。

5种最流行的自动化测试框架类型

团队根据团队规模、经验水平、用户需求等因素来选择测试框架。如下是五种最流行的框架及其优缺点:
一、线性框架
这是最基本的框架类型。它一般被称为“记录和回放(record and playback)”框架。
在这个过程当中,测试代码的建立和执行是按线性或顺序编写的——测试人员手动记录每个步骤,并自动回放记录的脚本。这些步骤包括导航、用户输入和检查点。它最适合小型应用程序或团队。在此过程当中,测试代码的建立和执行以线性或顺序方式编写-测试人员手动记录每一个步骤并自动播放记录的脚本。这些步骤包括导航,用户输入和检查点。最适合小型应用程序或小团队。
优势:线性框架最大的好处是生成测试用例的速度快,直接录制;无须代码基础,无须手动编写测试代码,所以门槛较低、易于上手。
缺点:然而线性框架的不足之处也很明显:录制的脚本是固定的(hardcode),不可重用。这意味着,当应用发生微小变化时,上一次录制的脚本可能就没法使用了,须要从新录制(rework),从而产生大量的后期维护成本。
二、基于模块化的框架
顾名思义,此框架容许将被测应用程序划分为单独的模块,单元或部分。每一个模块都会为它们建立独立的测试脚本。所以,每一个模块及其测试脚本的组合能够构建表明各类测试案例的更大的测试。
优势:该框架在建立模块时使用抽象。所以,应用程序更改将只影响与它们相关联的测试脚本所涉及的模块,而不影响其余部分。高度的模块化,这使得维护更加容易且具备成本效益 建立测试用例所需的精力最少,由于能够重复使用不一样模块的测试脚本。
缺点:若是没有语言开发基础,则创建框架可能会很困难。因为将数据硬编码到测试脚本中,所以没法重复使用数据集——由于测试是单独执行的。
三、库结构框架
该库体系结构框架创建在模块化框架的基础上,但具备其余好处。这样作的好处是,它不只能够将被测应用程序划分为测试脚本,还能够将测试脚本中的类似任务划分为通用功能。
而后建立一个库,该库构成了AUT的经常使用功能,能够在须要时由测试脚本调用。
优势:高度的模块化,这使得测试维护简单且预算友好。它具备高度的可重用性,由于它的公共函数库能够被几个测试脚本使用。
缺点:框架中引入的库使其更加复杂。测试数据也被硬编码到测试脚本中。所以,数据中的更改必须适用于测试脚本。测试脚本的开发须要更多的时间和技术。
四、数据驱动框架
在数据驱动框架中,测试数据和测试脚本是分离的。在许多测试场景中,须要使用不一样的测试数据屡次测试同一功能或特性。若是测试数据是hardcode进测试脚本的,那么每更换一次测试数据都须要修改测试脚本。这是很大的工做量。此时,可使用数据驱动框架。具体来讲,测试脚本是固定的,而测试数据能够从外部的数据文件,以Excel、CSV、SQL等形式做为参数传入测试脚本。这样,咱们只须要维护一份脚本和一份数据文件便可。
优势:整体来讲,这种框架最大的好处就是易于维护。测试脚本中的任何更改都不会影响测试数据。所以,能够避免对数据进行硬编码。可使用多组数据进行测试。能够经过更改外部数据库中的测试数据来测试各类测试方案,从而减小所需的测试脚本数量。
缺点:准备和计划框架的通用测试脚本,识别与格式化测试数据须要花费时间。框架设计的使用须要经验丰富的测试人员,由于它的复杂性,须要具有多种编程语言知识。
五、关键字驱动框架
该框架是数据驱动框架的扩展。测试数据和测试脚本也被分离,不一样的是,该框架要更进一步地将测试脚本中的通用功能剥离出来,造成关键词(keyword)。测试脚本本质上就是对一系列通用的或者自定义的关键词的调用。这样作的好处是关键词能够在多个测试中复用,而且测试脚本更加易于维护。不过,实现这样一个框架并不是易事。
优势:与数据驱动不一样,运行此框架不须要脚本知识。能够独立于被测应用程序构建测试脚本。一个关键字能够在多个测试脚本中使用。所以该代码是可重用的。
缺点:设计框架和维护关键字对自动化的专业知识要求比较高。实现该框架的成本相对较高,并且设置起来也比较耗时和复杂。
综上所述,实现用于自动化测试的框架须要选择一种灵活的工具。该工具应支持普遍的应用程序,并知足测试要求。另外,应该有正确的策略来定义应该自动化哪些部分。
须要指出的是,业界已经有了实现上述各类测试自动化框架的工具。一般来讲,咱们并不须要从新发明一个新的框架,而是基于已有的框架去进行优化升级,使之适合本身的项目需求,来完成自动化测试工做。那么,面对一个新的自动化测试框架,如何着手工做呢?咱们应该聚焦在如下四个问题上。
一、如何生成测试用例?
不一样的框架,生成测试用例的方法不同。对于线性框架来讲,无须编写脚本,只须要点击预设的按钮就可以生成测试用例;
好比Katalon,直接录制生成测试用例。对于多数框架来讲,生成测试用例须要编程。固然,不一样框架使用的编程语言、编程风格有差别。
对于Selenium框架来讲,使用的是通用编程语言Java和Python,可能更多的是对Selenium进行二次封装,以便更好更快的生成用例;
对于Robot Framework来讲,使用的是其专用的Robot Framework编程语言
通常来讲,使用框架编程的过程不少时候就是调用库接口的过程。所以做为前提,在编写用例以前,咱们须要熟悉框架提供的库的种类和功能,以及这些库所提供的API的使用方法。
二、如何执行测试用例?
当测试用例完成以后,咱们须要运行测试用例。自动化测试是经过GUI图形界面来触发,仍是经过CLI命令触发,这因框架而异。
固然,仅仅知道如何触发测试是不够的。咱们一般有更多的需求。例如,如何选择性地执行知足特定条件的测试用例子集?如何设置全局的执行参数(超时时间、日志路径、报告形式等)?如何动态地给测试用例集传入参数?
通常来讲,一个完整的框架须要提供足够多的控制选项,从而让咱们根据需求定制执行测试的方式。
以Robot Framework为例,其执行用例的命令具备30多个不一样的选项。这提供了足够的自由度和一些很是棒的功能。例如其dryrun选项,可让咱们在不实际执行用例的状况下,快速检查出测试用例中参数不匹配、语法不正确、关键词找不到、库导入失败等错误,很是实用。
三、如何检查测试结果?
测试执行结束以后,咱们须要关注测试结果。不一样的框架会以不一样形式提供测试结果。例如,测试结果既能以控制台日志的形式体现、也可以以图表和报告的形式体现,并以邮件发送或者展现在网站上。
根据测试结果,咱们能够很容易地了解测试的执行状况,包括测试的成功/失败状况、测试的总体/局部用时等。当测试失败时,咱们尤为须要关注测试失败的具体状况。
一般,咱们关心失败是因为咱们使用框架的方法不当形成的,仍是因为被测软件的质量问题。这一点,只能经过检查和分析测试结果获得。
四、如何扩展测试框架?
通常来讲,框架只是提供了最基本的功能。不少时候,框架并不能直接知足自动化测试的需求。
这时咱们能够寻求第三方的、与框架自己兼容的库或者插件。若是第三方工具不能知足咱们的需求,咱们就须要开发本身的库和工具。例如,对于HTTP、SSH等公有协议,咱们很容易在网络上找到某个框架的第三方库;而对于只用于公司产品的私有协议,咱们一般没法找到第三方库,只能本身开发。本身开发时,须要注意的是要听从框架的规范,使得开发出的库可以与框架无缝兼容。
说在最后,选择了一个框架,在享受其好处时,也不得不承受其不足。若是咱们的关键需求受制于框架,而且框架也不容易扩展,那么咱们就可能须要开发本身的框架。这是一件投入较大的事情。在大多数状况下,仍是建议重用和有限扩展已有的框架。毕竟,不要从新发明轮子—— Don't reinvent the wheel !

Appium往期教程
  1. Appium移动端自动化测试--基础预热
  2. Appium移动端自动化测试--搭建测试环境
  3. Appium移动端自动化测试--录制测试用例并运行
  4. Appium移动端自动化测试--使用IDE编辑并强化脚本
  5. Appium移动端自动化测试--控件定位方法
  6. Appium移动端自动化测试--元素操做与触摸动做
  7. Appium移动端自动化测试--搭建模拟器和真机环境
  8. Appium移动端自动化测试--测试用例改造
  9. Appium移动端自动化测试--capability使用和经常使用设备交互命令
文章合集
Selenium  Appium  | Jenkins   |   Jmeter 
软件测试方法汇总 Postman接口参数化  |  测试用例设计  |  安卓APP抓包

视频教程
Selenium  |  Appium  |  Jenkins  |  Jmeter

微信群:
软件自动化测试交流群
已建立,公号回复入群便可获取入群二维码。

本文分享自微信公众号 - 软测小生(ruancexiaosheng)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。web

相关文章
相关标签/搜索