任何成功的自动化测试过程的关键组成部分都是测试自动化框架。降低维护成本,测试工作效率提升和提高质量保证团队的投资回报率ROI是优化敏捷流程时所提供的主要优势之一。

出于以下原因,自动化对于高效的测试过程至关重要:

提高测试效率
降低维护成本
尽可能少的人工干预
尽可能大测试范围
代码的可重用性
软件开发领域的管理人员对实现自动化框架如何使他们的业务受益有了广泛的了解,并且在这个领域的许多人已经开始经常使用框架一词,它是成为软件自动化项目成功的关键。

但是对于许多人来说,问题仍然存在:

测试自动化框架和自动化脚本到底是什么?
测试框架如何相互协助工作?
测试框架可以为测试带来哪些优势?
我的学习群:644956177 群里有技术大牛一起交流分享~

定义测试自动化

在任何行业中,自动化通常被解释为自动处理流程,而这些流程几乎不需要人工干预。在软件行业,测试自动化意味着使用许可版本或开源的自动化工具对软件应用程序执行各种测试。用技术术语来说,测试自动化框架是一组定制的交互式组件,它们有助于执行脚本化测试和全面报告测试的结果。

不同类型的框架

根据团队创建框架方式和目标自动化需求,可以分成不同的测试框架类型。

以工具为中心的框架

商业自动化工具和开源自动化工具都具有自己的系统基础结构,可帮助在其测试环境中生成报告,测试套件和分布式测试执行。一个示例是Selenium自动化框架,该框架具有主要组件WebDriver,该组件充当基于Web浏览器的插件,以在Web浏览器中控制和操作应用程序的DOM模型。Selenium测试自动化框架还另外具有有用的编码库和记录回放工具。

另一个特定于工具的重要框架示例是Serenity,它围绕Selenium Webdriver构建并且是加速器。在这种情况下,为了加快测试自动化实施过程的速度,社区将特定组件组合在一起。

当涉及到诸如QTP、RF之类的工具专用框架时,有时很难做出的决定,因为它们都是模拟用户操作、报告和脚本IDE的基础架构预先构建的,相互之间并没有明显的差异和相对优势,如何抉择还需要多考虑当下的实际情况。

面向项目的框架

定制了此类自动化框架,以实现特定应用程序项目的自动化。特定于项目的框架支持某些目标应用程序测试自动化要求,并由从开源库构建的组件驱动。它创建了一个测试友好的环境,以运行某些基本功能。这些包括部署开发的应用程序,运行该应用程序,执行测试用例,直接测试结果报告以及简化编码的包装程序控制。专注于特定项目的框架还应该具有一个组件,以支持在不同的OS和浏览器上的各种云环境中进行测试运行。此类测试框架常见于跨浏览器测试。

关键字驱动的框架

我的学习群:644956177 群里有技术大牛一起交流分享~
关键字驱动的框架是那些旨在以较少的编码量吸引开发人员和测试人员的框架。它们可能是特定于工具或针对项目的框架,使技能不足的员工可以编写和理解自动化脚本。用于编码的关键字集(例如Login,NavigateToPage,Click,TypeText)被安装为代码库中的关键字存储库。测试人员根据提供的关键字引用编写脚本的电子表格将传递到关键字解释器,并执行测试。

自动化框架的主要组件

大多数功能强大且性能卓越的测试自动化框架(无论是开源还是商业的),则必须考虑包括构成其核心的某些组件。

基于各种测试的理想测试自动化框架的主要组成部分是:

测试库

单元测试
单元测试库可用于塑造任何测试自动化框架的重要组成部分。需要它用于:

通过特定的形式注释(如@Test等)定义使用的测试方法
执行影响自动化测试最终结果的断言
运行简单明了的测试
无论您是从command、IDE、专用工具还是CI(连续集成)系统运行测试,以确保单元测试都以直观的方式运行,单元测试库可提供测试运行程序。

集成和端到端测试
在执行集成和端到端测试自动化时,通常建议保证现有测试库提供的功能是稳定健康的。由应用程序的UI驱动的API级别的测试需要使与被测应用程序进行交互变得更加容易的组件,因为它消除了不必要的编码负担。因此可以花更多精力专注于更多方面的工作,而不是一下内容的编码工作:

连接到应用
发送请求
接收响应

行为驱动开发
专用于BDD的库以行为规范为目标,以可执行代码的形式创建可执行规范。在这里,可以将不同的功能和预期行为场景转换为代码,尽管它们不能像测试工具直接与被测应用程序进行交互那样工作。它们可作为BDD流程的支持,以创建与自动化测试的范围和意图一致的实时文档。

测试数据管理
在软件测试自动化和测试创建过程中,最大的挑战是利用测试数据管理系统。随着自动化测试数量的增加,始终存在确保执行特定测试所需的某些测试数据可用或创建的问题。面临的挑战是,没有针对此问题的万无一失的解决方案,这需要一种可靠的测试数据管理方法来使自动化工作取得成功。

解决此问题的一种方法是拥有合适的moco工具,以使数据更加简化,清晰和易于消化。

虚拟化
软件测试中的虚拟化
在探索和研究自动化测试的许多想法时,可能会遇到以下情况:

想将模块与通常在单元测试中经历过的连接组件隔离开
需要处理应用程序的集成或端到端测试中常见的繁琐和关键的依赖关系
在这种情况下,测试人员会觉得创建反映所连接组件行为模式的mock和Stubs以及虚拟化至关重要。处理这些内容是一项艰巨的任务,在开发自动化测试框架的过程中选择有用的虚拟化工具至关重要。

实施模式的通用机制
除了上面讨论的自动化框架组件之外,还有一些有用的机制可帮助创建,使用和维护自动化测试,例如:

包装器方法:使用Selenium Webdriver组件时,创建自定义包装器可使错误处理更加容易,可以更好地处理超时,异常处理和故障报告。
抽象方法:抽象机制代表提高可读性和掩盖多余的实现细节。例如,在创建Selenium WebDriver测试时使用页面对象的目的是在网页上公开用户输入操作,包括输入凭据或单击页面上的某处。目标是通过超越或绕过探索页面特定元素的需求来实现高级测试方法。此方法适用于许多类似的应用程序和自动化测试。
测试结果报告
在选择用于将测试结果报告到自动化框架中的库或机制时,应该主要关注将要阅读或查看所生成报告的目标受众。在这方面,我们可以提出几个注意事项:

诸如JUnit和TestNG之类的单元测试框架生成的报告主要针对诸如CI(持续集成)服务器之类的接收系统,这些系统最终会对其进行解释并以其他软件可使用的XML格式进行呈现。
当我们寻求具有人类最易理解的语言的报告功能的工具时,需要考虑使用与单元测试框架兼容的商业工具,例如用于Junit的UFT Pro、NUnit和TestNG。
另一种选择是利用诸如ExtentReports之类的第三方库,该库以人类易于理解的格式创建测试结果报告,包括通过饼图,图形或图像进行的视觉解释。
CI平台
为了以更快,更统一进行应用程序测试,持续集成平台可以帮助团队构建软件并定期为新版本运行各种测试。当开发和部署新功能以及更新现有功能时,此方法使开发人员和利益相关者有机会就应用程序质量获得定期反馈和更快的响应。

源代码管理
与手动测试一样,自动化测试也涉及编写和存储源代码和测试用例版本。每个开发公司都有一个精选的源代码和版本控制系统来保存和保护源代码。自动化测试需要完善的源代码管理系统,该系统在处理生产代码时会派上用场。任何开发人员都会给出的一些典型的源代码管理示例是Git,Mercurial,Subversion和TFS。

创建依赖关系管理器
依赖关系管理器的主要目的是协助收集和管理在自动化软件解决方案的功能中使用的现有依赖关系和库的过程。某些工具(例如Maven和Gradle)同时充当依赖项管理器并帮助构建工具。构建工具旨在帮助您从源代码和支持库开发自动化软件,并运行测试。其他依赖工具包括Ant,NPM和NuGet。

建立和实施框架的过程
有几种方法可以计划实现自动化测试解决方案的方法。

从用户的角度探讨自动化的实际适用性。从各个角度检查它是否如PPT中所讲(避免PPT自动化的最佳实践),在使用中的技术上对其进行测试。
密切关注被测系统的技术,以找到能够完美模拟用户行为的最合适的测试自动化工具,这一点至关重要。
建议采用基于阶段的实现方法,其中每个阶段都具有交付自动化测试脚本的优先级,同时添加框架功能以实现预期的脚本执行。
在启动软件测试自动化之前,为确保正确执行自动化决策,必须首先计算和估算实施后的投资回报率,运行手动回归或冒烟测试的时间以及每个版本的运行周期。
对测试自动化框架的必然需求
描述和说明软件测试自动化框架和脚本如何完善测试过程,这并不总是意味着它可以成功地为所有致力于自动化的人工作。但是,无可否认的是,如果详细地计划和正确执行测试自动化框架,则会为软件开发和测试公司带来以下好处:

更少时间,更多收益:构建任何可行的测试自动化框架和自动化脚本都是为了最大程度地减少编写和运行测试所需的时间,从而在短时间内提供最大的输出。有了出色的自动化框架,您就可以摆脱通常的担忧,例如同步,错误管理,本地配置,报告生成,解释和许多其他挑战。
可重用和可读的自动化代码:使用现有组件库中提到的代码时,它会在未来一段时间保持可读性和可重用性,并且所有相关任务(如报告,同步和故障排除)将变得更易于访问。
资源优化:从创建自动化测试中获得的效率取决于其采用的灵活性。如果自动化系统是灵活的,并且与从事不同组件的不同团队兼容,则在资源优化和知识共享方面可以提供巨大的收益。
结论
在当今快节奏,残酷的软件开发生态系统中,自动化测试和脚本在维持软件测试周期的速度,效率和明晰度中起着不可或缺的作用。随着自动化测试技术被灌输到软件测试中,考虑采用测试自动化框架的组织必须深入研究最终框架的设计,然后才能涉足这一领域。精心设计的框架设计和要使用的组件策略将为最终测试自动化框架奠定基础。

塑造测试自动化框架成熟,成熟,灵活的体系结构的最佳方法是从小处着手,频繁进行测试和审查,然后逐步提高以构建扩展版本。在实现自动化测试框架时,一种推荐的方法是找到一种可以快速轻松地适应流程和工作流程的工具。寻找一种不仅灵活而且可以支持多种应用程序和语言的工具,因为这将使QA团队无论其背景或技能如何都能做出有效的贡献。

关注【程序媛木子】微信公众号里测试资源免费获取~

自动化测试框架的完整指南【译】相关推荐

  1. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  2. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  3. 火影推荐程序连载23-Robot Framework自动化测试框架核心指南-如何做好自动化测试平台框架的设计

    自动化测试如果需要能高效快速的支撑软件项目的测试,项目的快速迭代以及上线,除了以上我们介绍的需要许多的Lib来支持以及需要高效的去编写自动化测试案例外,还需要一个好的自动化测试框架平台来支撑我们的自动 ...

  4. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了

    金九银十,大家都铆足干劲想抓住机会涨薪进大厂.结合这几年的行业趋势,想要挑战大厂面试,首先必须吃透Selenium自动化测试框架设计. 这里说一下原因: 首先,一线互联网大厂无一例外,全都要求测试人掌 ...

  5. 接口自动化测试框架-完整测试用例模板

    动手写接口自动化测试框架前,首先要根据使用需求和使用环境设计合适的接口自动化测试框架,决定用什么格式进行数据驱动,设计测试用例模板的格式很重要,基本设计完就是围绕这个模板进行实现了,有的人用yaml, ...

  6. 自动化测试框架搭建指南-前言

    自动化测试在国外已经实施了很多年,很多软件公司都有自己的自动化测试系统,很多测试系统的建立都是在有自己的自动化测试框架的基础上.自动化测试在一个公司能不能实行下去,自动化测试框架的优劣是其中最重要一环 ...

  7. 自动化测试中级篇——LazyAndroid UI自动化测试框架使用指南

    原文地址https://blog.csdn.net/iamhuanggua/article/details/53104345 简介 一直以来,安卓UI自动化测试都存在以下两个障碍,一是测试工具Moke ...

  8. Robot Framework 自动化测试框架核心指南-初识Robot Framework(学习笔记2)

    初识Robot Framework 1.1如何创建一个自动化测试项目 1.1.2 创建测试套件 1.1.3 创建测试用例 1.2 Robot Framework基础关键字 1.2.1 如何搜索Robo ...

  9. 自动化测试框架 2019_2019年用于自动化的5个最佳Java测试框架

    自动化测试框架 2019 几十年来,Java一直是开发应用程序服务器端层的首选编程语言. 尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试,但随着时间的推移和测试的发展,当自动化测试不断 ...

最新文章

  1. DBGRIDEH 组件在Borland开发工具中应用全攻略
  2. mysql查询的题目_mysql查询语句练习题
  3. SpringBoot整合mybatis进行快速开发
  4. 禅道设置bug模板_禅道的自定义功能:表格切换和创建页面的自定义
  5. 软件工程(2019)第二次作业
  6. ad19电气规则检查_铁路机车操作规则(铁运2012281号)
  7. 转浅谈缓存击穿、缓存并发和缓存失效
  8. 使用Camera的几个步骤
  9. 渗透入门——术语概述
  10. Iometer存储测试工具参数说明-5 存储规格选项
  11. 四种常见演讲结构对比
  12. 老中医化妆品是品牌吗
  13. 36篇精品文章搞定所有TOEIC单词
  14. 达摩院年终预测出炉:AI for Science 高居榜首
  15. 蠕虫病毒Worm: VBS/Jenxcus!lnk 解决方案 Python脚本
  16. 什么是Cython?让Python有C语言的速度
  17. STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭
  18. 手机浏览器下载的m3u8格式的多个视频文件合并成一个视频(Java实现)
  19. java包的导入方法
  20. 2018-09-14 工作日报和第一周总结

热门文章

  1. Java数据结构之栈详解
  2. 诺基亚地图——谷歌,苹果地图的挑战者
  3. Adaptive AUTOSAR架构介绍(3)
  4. 2018网易未来科技峰会9月21日开启 走进新交互世界
  5. CSDN博客首行空两格
  6. Senparc 使用笔记
  7. MPI实现矩阵向量乘法
  8. 算数表达式的计算方法
  9. Java中valueOf()方法
  10. 逻辑回归中的离散变量