自动化框架指南

内容贡献者戴安娜拉莫斯

2017年5月23日(2022年3月6日更新)

在当今的技术市场中,人们对产品和服务的便利、安全、舒适、创新、设计等要求越来越高。ob欧宝娱乐app手机下载在列表中加上对这些功能立即可用的偏好,您开始怀疑公司如何找到时间使任何产品具有吸引力。ob欧宝娱乐app手机下载技术巨头以快速的速度开发和测试软件,以在这个市场中茁壮成长——为此,他们利用自动化技术。

在之前的文章中,自动化软件测试不是自动的:基础介绍,我们探讨了自动化测试在现代软件开发中的重要性。在这里,目标是快速发布高效、有效和可靠的软件,实现自动化测试的好处需要适应性强的方法和创新的软件工具来优化数据。测试自动化框架指导这种方法和技术的融合。

本文探讨了测试自动化框架,并确定了使用中的各种类型,每种方法的优缺点,以及其功能背后流行的自动化工具的概述。一旦您理解了什么是测试自动化框架,您就可以探索为什么它们被用作指导自动化测试的解决方案,并听取专家关于如何选择正确的解决方案的意见。

什么是自动化框架?

测试自动化框架是一套全面的指导方针,用于产生自动化测试活动的有益结果。这些准则可能包括:

  • 常见的做法
  • 对预期结果的假设
  • 测试工具(软件)和接口
  • 测试库
  • 编码标准

用更专业的术语来说,作者Ashish Bhargava写道,框架“促进了修改、添加和删除[测试]脚本和功能的标准方式”,并提供了“更少工作量的可伸缩性和可靠性”。(使用QTP设计和实现测试自动化框架,2013)

用不那么专业的术语来说,以烹饪为例。你有创造力,直觉敏锐,并具备操作厨房工具的技能。按照食谱的步骤信息、烹饪方法和结果来衡量你的结果,你可以超越没有食谱的结果。结合烹饪的基本工具和食谱提供的指导方针,你可以最大化你的结果。

考虑测试自动化框架的方式与考虑烹饪食谱的方式相同。您可以在不遵守食谱中的任何指导原则的情况下准备食物,就像您可以在没有适当框架的情况下自动化测试活动一样。问题是,你的方法有多可靠?你能尽快重现你的烹饪成果吗?自动化框架,就像配方一样,为测试人员提供指导方针,以快速可靠地利用可重用的自动化测试来实现特定的测试目标。

自动化框架很重要

谷歌、亚马逊和微软等信息技术巨头正在快速开发软件,以满足对其产品和服务的需求。ob欧宝娱乐app手机下载对于这些公司——以及整个IT行业——为了获得测试自动化的好处,他们依赖于自动化框架来指导他们的工作。

来自测试社区的专家提到了有效的测试自动化框架的一些关键元素。这些框架应该:

  • 可扩展到未来的需求
  • 易于维护和重用
  • 可靠和一致
  • 最大化测试覆盖率
  • 提供自动化测试结果的报告
  • 提高自动化测试活动的效率

这些元素为理解为什么测试自动化框架对今天的现代软件开发方法至关重要提供了线索。测试自动化是一个基本的部分敏捷。敏捷的各种核心实践,如持续集成(CI)、持续交付、测试驱动开发(TDD)和行为驱动开发(BDD),都依赖于测试自动化的效率和可靠性。自动化框架提供了支持各种自动化软件测试的基础,包括:

  • 单元测试
  • 功能需求测试
  • 性能测试
  • GUI(图形用户界面)测试
  • 回归测试
  • 集成测试
  • 系统负载测试
  • 安全性测试

Bas迪杰斯特拉是独立的测试自动化专业人员和作者吗关于测试自动化主题的各种文章。他在设计和开发测试自动化和服务虚拟化解决方案方面有十多年的经验。Dijkstra更喜欢这个词解决方案框架在讨论这个话题时。

“我”“我指的是支持实际测试自动化脚本的所有代码、工具和库,”Dijkstra说。根据Dijkstra的说法,代码、工具和库有不同的任务,包括(但不限于):

  • 作为一个测试者
  • 报告
  • 测试数据的生成和管理
  • 同步和错误处理
  • 抽象

自动化框架的类型

下面是正在使用的测试自动化框架的标准类型的快速总结。如果您希望更详细地了解每个框架,本文后面的部分将提供更深入的内容,包括每个框架的优缺点。使用本文左侧栏上的导航跳转到每种类型框架的详细部分。

  • 线性脚本框架:以顺序(“线性”)的方式记录和重放测试脚本,很少或没有修改。
  • 数据驱动框架:测试标准的恒定来源(内部或外部数据)指定要运行的测试脚本。
  • 关键字驱动框架:电子表格上的表格根据指定关键字的函数库确定测试脚本的动作。
  • 模块化测试框架:被测试应用程序的模块被划分,并使用单个测试脚本进行测试,这些测试脚本可以组合成更大的测试脚本。
  • 混合测试框架:框架的组合,以利用每个框架的优势。

这些术语和描述对于您将哪个框架应用于测试自动化项目的决策并不一定是关键的。Dijkstra避免与客户和团队一起关注框架,以防止在设计和实现自动化解决方案时分散对重要事项的注意力。“我更喜欢谈论这些框架试图实现的目标,”Dijkstra说。

如何从自动化框架中获益

有适当的指导方针来实现自动化测试的好处是测试自动化框架的主要目标。

  • 可重用的测试:适当设计的测试自动化框架交付了日常稳定的自动化测试,这些测试更容易维护和重用。
  • 更低的维护成本:可重用的自动化测试具有较低的维护成本。更多可维护和可重用的自动化测试有助于满足预算需求,并实现现代软件开发的快速软件发布时间表。
  • 无人工干预:在一些例外情况下,临时人工干预是可以接受的,但是根据Dijkstra的说法,当您拥有适当的框架时,这不应该是常态。“总是朝着无人看管的方向努力。即使您每个月只运行一次自动化测试,它们也应该能够在无人值守的情况下运行。”“否则,当您稍后试图加快开发和交付过程(到持续交付)时,您将遇到困难,但您的自动化测试不支持持续测试。”
  • 透明的报告:Dijkstra使用了这个术语正确的报告他将其描述为针对正确受众的清晰、明确和有针对性的报道。他补充道:“这可以是经理、开发人员或自动构建工具。”“每一种情况都需要不同类型的报告,包含不同的信息和详细程度。”

根据Dijkstra的说法,经常被引用的更多测试覆盖率的好处是误导性的。

“这并不取决于框架,而是取决于使用框架来实现自动检查[测试]的人,”Dijkstra说。“他们决定测试什么。一个好的框架允许您有效地编写[测试],它甚至可能有助于显示代码或需求覆盖率,但它本身不会[自动]最大化覆盖率。”

合格的测试人员可以在内部开发自动化代码(测试),或者使用现有软件自动化工具的组合来形成适当的框架。致力于开发自动化代码的工作,或者利用补充内部代码开发需要的自动化工具,通过使用适当的测试自动化框架得到最大化。

写代码还是不写代码:涉及到谁

测试自动化框架是由能够编程自动化代码和定制自动化技术的合格专业人员从头开始设计的。这项工作需要经验丰富的技术测试人员,以及在实现自动化测试时可能出现的变更的专门计划。测试人员还利用和组合各种自动化工具来实现特定的测试目标。

Dijkstra指出,商业自动化软件公司目前正在营销“无代码测试自动化”解决方案。其主张是不需要额外的配置或开发来实现自动化测试。

“我不相信,”Dijkstra说。“我还没有看到一个测试自动化解决方案既可扩展又足够灵活,而不需要围绕它创建某种框架。”无论哪种方式,都必须使自动化工具和框架与测试目标保持一致。测试自动化决策的目标根植于为什么。

为什么要问为什么

与设计和实现测试自动化相关的最常见错误之一是未能提出正确的问题并设定现实的期望。

“有好的,也有好的不太好的引入测试自动化的原因,”Dijkstra说。“帮助组织……尤其是经理和c级高管……意识到测试自动化可以为他们的软件开发过程做什么——例如缩短反馈循环——以及它很可能不会做什么——提供即时满足,减少测试人员数量,从一开始就节省资金——这是实现现实目标的重要的第一步。”

Dijkstra建议在决定要设计或实现的测试自动化解决方案的类型之前询问以下问题:

  1. 自动化测试可以绑定到哪个应用层?这应该尽可能接近被验证的业务或应用程序逻辑。例如,当业务逻辑通过API公开时,就不需要使用用户界面驱动的测试。
  2. 最有效的测试数据管理策略是什么?例如,我们是依赖于现有的测试数据,还是在每次测试运行开始时创建我们的测试数据?
  3. 我们必须处理外部和第三方依赖关系吗?
  4. 依赖性是否随时可用,它们是否包含适当的测试数据?
  5. 如果没有,模拟(模拟、服务虚拟化)能帮助我们解决这个问题吗?
  6. 报告应该是什么样的?
  7. 在运行自动化测试期间和之后应该返回哪些信息?
  8. 报告的受众是谁(可以是人类,也可以是其他系统)?
  9. 最合适的编程语言是什么?这个问题的答案永远不应该是定义性的选择,但是当组织中有一些关于所选语言的专业知识时,它会有所帮助。例如,当有可行的c#替代方案时,就没有必要为。net商店用Python编写测试自动化框架。

在仔细分析了您想要的具体结果和自动化测试的目标之后,您可以决定自动化什么。然后你移动到如何。迪杰斯特拉

只有在回答了前面的所有问题之后,才能找到最适合你需求的工具。首先选择一个工具,然后试图将其融入现有的软件开发和测试过程,这有点像买了一匹马,然后意识到你住在曼哈顿摩天大楼二十层的公寓里:可能不是一个好主意。”

一旦你得到h的决定并且准备好利用自动化技术,您有很多选择。测试自动化的日益普及,结合了自动化软件测试是至关重要的这一事实敏捷开发为开放源码和商业自动化软件工具创建一个强大的市场。

流行的开源和商业自动化工具

有一个广泛的现有软件自动化工具列表,测试人员根据它们的功能组合它们来实现他们的测试自动化目标。从头开始构建定制框架并不总是必要的。根据开发环境和期望的结果,测试人员可以利用不同工具的最佳特性作为框架解决方案。以下是一些受欢迎的选择:

  • Selenium是一个可定制的、开源的测试自动化工具集,用于测试多种语言的web应用程序。Selenium很流行,它是其他开源浏览器自动化工具、api和框架“包裹”形成混合自动化框架的核心技术。
  • 机器人框架关键字驱动,基于python的框架,用于运行在Java (Jython)和。net (IronPython)上的验收测试。它是开源的,不依赖于特定的操作系统或应用程序,可以测试的不仅仅是网站。
  • 宁静Serenity是一个开源的、基于java的框架,旨在使编写自动化验收和回归测试变得更容易。Serenity能够生成带有叙述的插图报告,以记录应用程序的活动。
  • RedwoodHQRedwoodHQ是一个开源框架,可以与所有最常见的自动化工具(Selenium、Appium、Silk等)一起工作,它允许测试人员使用Java、Python或c#开发测试自动化代码,并创建通过web界面执行的关键字驱动测试用例。
  • SahiSahi是一个用于小需求(少于100个测试脚本)的开源框架。它使用记录和回放功能进行自动化测试,与所有顶级web浏览器(运行Javascript)一起工作,并且与Windows, Mac和Linux兼容。Sahi还有一个付费版本,专为web应用程序测试而设计
  • 盖伦框架Galen是一个开源测试框架,用于在浏览器中测试(JavaScript和Java测试)web应用程序的布局和用户体验设计。它是为测试响应式网站而设计的,并且基于Selenium框架。
  • SoapUISoapUI是一个数据驱动的自动化框架,用于测试api。开放源码和商业版本都是可用的。
  • 惠普UFT:惠普的统一功能测试器是用于功能和回归测试的测试自动化工具。以前称为QTP (Quick Test Professional),该软件结合了测试和关键字驱动的框架功能。UFT适用于跨主要平台的web应用程序,并提供移动测试自动化工具。
  • 黄瓜自动化代码集成工具,旨在支持行为驱动的开发方法。Cucumber是一个开源工具,它将测试规范和文档合并到单个源代码中。

线性自动化框架

线性自动化框架是自动化软件测试的第一代测试方法,也是最简单的框架方法。恰当地命名,这个框架以顺序的方式指导软件测试,几乎没有修改。这种方法也被称为“记录和回放”,用于测试web应用程序的用户界面(UI)。测试人员用UI记录他们的一步一步的动作,然后回放记录的测试,而不关注重用测试。

为了强调这种方法,巴尔加瓦在他的书(2013年)中提供了一个使用惠普流行的软件自动化工具在网站上预订旅行的一系列操作的例子UFT(统一功能测试),以前称为QTP)

  • 输入用户名
  • 输入密码
  • 单击OK按钮
  • 输入航班日期
  • 选择飞行来源(源代码)
  • 选择飞往(目的地)
  • 单击FLIGHT按钮
  • 单击OK按钮
  • 输入名称
  • 单击Insert Order按钮
  • 关闭航班预订窗口

即使没有Bhargava使用UFT示例附带的测试代码,您也可以看到测试用户与web应用程序交互的线性方法。

优势

  • 快速:使用线性测试是用最少的计划生成测试的最快方法。
  • 直观:不需要编程或设计专业知识来学习自动化软件的记录和回放功能。

缺点

  • 效率:测试缺乏可重用的功能,并且数据是测试的一部分,因此测试不能使用多个数据集运行。
  • 问题:修改应用程序会使维护变得复杂和容易出错(Bhargava2013).

数据驱动的自动化框架

数据驱动测试是软件测试中的一个重要实践。数据驱动的自动化框架的使用是从代表第一代自动化测试技术的记录和回放工具和方法的局限性发展而来的。作者Bruce Posey和Daniel Mosley在他们的书中将数据驱动框架描述为第三代自动化测试方法,足够的软件测试2002)

数据驱动的测试使用外部数据,例如Excel电子表格文件,作为控制和验证自动化测试操作的输入。这些数据是独立于测试代码开发的。数据驱动的测试脚本是高度可维护的,并且对于非程序员来说更容易使用。这种方法的好处是能够根据所使用的数据修改带有代码的测试场景。数据文件包含测试应用程序所需的信息,因此不需要修改测试脚本。

优势

  • 高效:减少了测试场景所需的测试代码数量,并且更容易修改数据。
  • 可靠:数据中的更改不会影响测试代码。
  • 可重用:使用可重用测试提高测试覆盖率。
  • 灵活:多个数据只能在需要时执行测试,并且只能更改数据输入。

缺点

  • 投资:更多的前期时间和资源投资用于设置数据源和功能(最终可能会更改)。
  • 专业知识:需要编程知识来开发功能适当的测试脚本。
  • 复杂性:外部数据源的组合可能会减慢或使软件工具崩溃,并使手动测试更加复杂。

关键字驱动的自动化框架

关键字驱动测试类似于数据驱动测试。然而,测试代码只交付数据。数据在实际测试中没有编码;相反,它位于外部数据文件中。代码是“关键字”(这个框架的名字由此而来)。Posey和Mosley在他们的书中描述了Keith Zambelich的自动化测试框架。Zambelich的自动化测试的“测试计划驱动”方法使用了包含来自电子表格的“关键字”的测试用例来控制处理。Zambelich指出,他的自动化框架的整个过程是数据驱动的(包括功能),关键字控制着处理。

优势

与数据驱动的自动化框架相同,加上以下内容:

  • 通用:实现后需要较少的技术知识和自动化专业知识。关键字可以在多个测试中重用。
  • 独立关键字驱动的框架不依赖于应用程序、自动化工具或编程语言,也可以执行手动测试活动。

缺点

  • 在工程:需要初始的时间和资源投资来开发框架(如果只是在有限的时间内使用最少数量的自动化测试)。欧宝体育app官方888
  • 实现:非技术测试人员的初始学习曲线很高,需要更多的专业知识来实现,而不是维持上市时间。

数据驱动和关键字驱动的自动化框架是指导软件应用程序自动化测试的“通用脚手架”。这些框架是从第一代测试自动化技术的局限性发展而来的。现代软件开发周期要求更快的软件发布。根据Posey和Mosley的说法,这些框架为使用最少的测试脚本自动化大量的功能测试提供了脚手架。

模块化自动化框架

模块化自动化框架(“基于模块的”或“模块化框架”)将自动化测试功能划分为逻辑的、可管理的部分或模块。这些模块被隔离以创建独立的测试,然后可以按照测试计划重新组合这些测试。测试代码的这些模块可以组合成更大的测试,以表示不同模块的功能。根据Bhargava的书,这个框架设计的关键部分是分解和重组。

Bhargava写道:“实现模块化的关键是分解功能并重新组合模块。”

模块化自动化框架也称为功能分解框架。它将用户与应用程序的交互分解为更小的、独立的测试,然后重新组合这些测试以实现特定的场景。

优势

  • 分而治之设计和实现自动化测试的复杂步骤被分割成更易于管理的部分,以获得结果。
  • 可调:对正在测试的应用程序的某一部分进行单独更改不会影响应用程序的所有测试,而只会影响单个测试。
  • 保养:对较小的测试数据模块进行可伸缩的维护划分。

缺点

  • 复杂性:每个模块的测试都包含嵌入式数据,因此如果需要不同的数据集,则必须对测试进行更改。
  • 资质:需要更多的技术熟练度来整合精确的模块,设计创意对于避免测试的不合格性能是非常有价值的。

混合自动化框架

大多数为现代软件开发周期开发的测试自动化框架都是混合的。这些框架结合了以前框架的优点,并尽量避免缺点。

例如,标准的混合框架设计将使用测试功能的分解和数据驱动的方法来组织和管理带有关键字的资源欧宝体育app官方888(Bhargava, 2013)。使用混合框架的优点是集成了其他自动化框架的优点。主要的缺点是由于不同的指导方针和无法跨测试中的其他应用程序扩展而增加的复杂性。

根据他的经验,Dijkstra认为数据和关键字驱动框架元素的混合方法是最常用的。

Dijkstra解释说:“当我从事用户界面驱动测试自动化(例如,使用Selenium)时,我会使用BDD工具(如Cucumber或SpecFlow)来处理数据驱动部分,并使用Page Object模式实现测试,这可以被认为是关键字驱动测试的一种形式。”“当我从事api级别的自动化测试时,我的解决方案主要是数据驱动的,因为这类测试的范围和覆盖范围是不同的。”

其他测试自动化框架

  • 业务流程测试(BPT)框架BPT框架是一种测试方法,它将业务流程划分为可用于不同测试的小组件。与模块化自动化框架类似,目标是为各种涉众测试的协作方法。
  • 测试库框架:这是一个“独立于应用程序”的框架。与模块化自动化框架类似,被测试的应用程序被划分为一个通用的功能测试库,而不是测试脚本(选择测试自动化框架,2003)这些库包含应用程序的模块、部分和功能,并用于操作测试。

哪个自动化框架适合您

为您的项目选择适当的测试自动化框架归结为决定哪些指导方针将产生期望的自动化测试结果。

Dijkstra说:“我看到的最多的情况是,人们使用开源工具(例如Selenium),并应用诸如Page Object模式、script模式、PageFactories、LoadableComponent模式等公认的模式,从头开始构建框架。”

“这很好,因为每个团队和每个项目都有自己关于测试行为规范、测试数据管理、报告、错误处理等方面的需求,”Dijkstra补充道。“没有最好的方法,但是有一些模式和抽象技术可以使测试自动化代码更具可读性和可维护性,从而使生活变得更容易。”

当自动化框架和工具与测试软件的通用实践和编码标准结合在一起时,您就有了一组标准指导方针,可以实现自动化测试的目标。设计和实现定制框架并不总是必要的,但是Dijkstra警告说,“以工具为中心”的方法可能会导致糟糕的结果,因为您没有考虑到适当框架设计的指导方针。

他遵循这些步骤来帮助他的客户决定在决定测试自动化解决方案时采取什么方法:

  1. 讨论原因:Dijkstra解释说,首先确定客户认为他们需要测试自动化的原因是很重要的。他也能感觉到这是出于对还是错的原因(根据他的说法,裁员或提前省钱就是错误原因的例子)。在此基础上,他努力设定适当的期望。
  2. 理想的方法:这是什么这是决策过程的一部分。什么需要自动化?api级自动化?用户界面驱动的自动化?使用的是什么编程语言?编程语言是一个限制吗?
  3. 工具:哪些工具最适合组织的需求,然后设计一个满足需求的方法。这是how的步骤。
  4. 技术水平:将要扩展和维护测试自动化的人员的技术专业水平是什么?
  5. 报告:自动化需要交付什么类型的报告,以及交付给谁或在哪里?
  6. 数据:处理测试数据最有效的方法是什么?我们要在每次测试之前创建它吗?是否有一个数据库备份,我们可以在每次测试运行之前恢复

测试自动化框架建立指导方针,以实现自动化测试的特定目标。自动化框架是一种解决方案,当使用为什么什么,如何在头脑中导致测试自动化的好处。自动化框架应该易于维护和重用。开源软件自动化工具可供使用,并且在某些情况下,可以作为开箱即用的解决方案来指导自动化测试。您可能更喜欢使用商业软件测试自动化工具套件来提供客户支持和专业知识。然而,对自动化解决方案使用严格的“以工具为中心”的方法是有问题的。相反,对自动化框架的设计和实现或软件工具的选择的仔细计划和考虑应该涉及到一个合格的测试自动化专业人员。设计糟糕、难以维护的自动化解决方案限制了测试自动化的好处。

使用Smartsheet管理自动化测试流程

既然您已经了解了所有关于测试自动化框架的知识,那么找到一个能够跟踪和管理测试结果的工具就很重要了。Smartsheet就是这样一个工具,它是一个协作工作管理平台,可以帮助企业和团队更好地工作。

使用Smartsheet跟踪计划的、当前的和已完成的测试的时间表和结果。与您的团队共享时间表,并在一个中心位置实时协作细节。无论您是运行手动测试还是自动测试,Smartsheet的广泛视图(日历、甘特图、卡片和传统网格)都允许您以您想要的方式管理进度。用层次结构组织测试结果,并使用注释来保持工作在上下文中。

此外,使用Smartsheet Sights,您可以创建自定义仪表板来监控测试,并为管理层提供进度和关键指标的高级视图。改进测试过程中的协作,增加对时间和资源的控制,并通过一个位置获得前所未有的结果可见性。欧宝体育app官方888

看看使用Smartsheet中的模板跟踪和管理自动化测试是多么容易。

跟踪Smartsheet中的自动化测试

顶级软件开发团队使用Smartsheet

通过设计一个灵活的平台来满足你的团队的需求,并随着需求的变化而适应,从而使你的员工能够超越自己。

Smartsheet平台可以轻松地从任何地方计划、捕获、管理和报告工作,帮助您的团队更有效地完成更多工作。报告关键指标,并通过汇总报告、仪表板和自动工作流实时了解工作情况,以保持团队的联系和信息。

当团队对要完成的工作有了清晰的认识时,就不知道他们在同样的时间内能完成多少工作。今天就免费试用Smartsheet吧。

了解为什么超过90%的财富100强公司信任Smartsheet来完成工作。

了解更多关于软件开发的Smartsheet