zoukankan      html  css  js  c++  java
  • 自动化测试框架的完整指南【译】

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

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

    • 提高测试效率
    • 降低维护成本
    • 尽可能少的人工干预
    • 尽可能大测试范围
    • 代码的可重用性

    软件开发领域的管理人员对实现自动化框架如何使他们的业务受益有了广泛的了解,并且在这个领域的许多人已经开始经常使用框架一词,它是成为软件自动化项目成功的关键。

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

    • 测试自动化框架和自动化脚本到底是什么?
    • 测试框架如何相互协助工作?
    • 测试框架可以为测试带来哪些优势?

    定义测试自动化

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

    不同类型的框架

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

    以工具为中心的框架

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

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

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

    面向项目的框架

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

    关键字驱动的框架

    关键字驱动的框架是那些旨在以较少的编码量吸引开发人员和测试人员的框架。它们可能是特定于工具或针对项目的框架,使技能不足的员工可以编写和理解自动化脚本。用于编码的关键字集(例如LoginNavigateToPageClickTypeText)被安装为代码库中的关键字存储库。测试人员根据提供的关键字引用编写脚本的电子表格将传递到关键字解释器,并执行测试。

    自动化框架的主要组件

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

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

    测试库

    单元测试

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

    • 通过特定的形式注释(如@Test等)定义使用的测试方法
    • 执行影响自动化测试最终结果的断言
    • 运行简单明了的测试

    无论您是从commandIDE专用工具还是CI(连续集成)系统运行测试,以确保单元测试都以直观的方式运行,单元测试库可提供测试运行程序。

    集成和端到端测试

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

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

    参考文章:

    行为驱动开发

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

    测试数据管理

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

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

    虚拟化

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

    • 想将模块与通常在单元测试中经历过的连接组件隔离开
    • 需要处理应用程序的集成或端到端测试中常见的繁琐和关键的依赖关系

    在这种情况下,测试人员会觉得创建反映所连接组件行为模式的mockStubs以及虚拟化至关重要。处理这些内容是一项艰巨的任务,在开发自动化测试框架的过程中选择有用的虚拟化工具至关重要。

    实施模式的通用机制

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

    • 包装器方法:使用Selenium Webdriver组件时,创建自定义包装器可使错误处理更加容易,可以更好地处理超时,异常处理和故障报告。
    • 抽象方法:抽象机制代表提高可读性和掩盖多余的实现细节。例如,在创建Selenium WebDriver测试时使用页面对象的目的是在网页上公开用户输入操作,包括输入凭据或单击页面上的某处。目标是通过超越或绕过探索页面特定元素的需求来实现高级测试方法。此方法适用于许多类似的应用程序和自动化测试。

    测试结果报告

    在选择用于将测试结果报告到自动化框架中的库或机制时,应该主要关注将要阅读或查看所生成报告的目标受众。在这方面,我们可以提出几个注意事项:

    • 诸如JUnitTestNG之类的单元测试框架生成的报告主要针对诸如CI(持续集成)服务器之类的接收系统,这些系统最终会对其进行解释并以其他软件可使用的XML格式进行呈现。
    • 当我们寻求具有人类最易理解的语言的报告功能的工具时,需要考虑使用与单元测试框架兼容的商业工具,例如用于JunitUFT ProNUnitTestNG
    • 另一种选择是利用诸如ExtentReports之类的第三方库,该库以人类易于理解的格式创建测试结果报告,包括通过饼图,图形或图像进行的视觉解释。

    CI平台

    为了以更快,更统一进行应用程序测试,持续集成平台可以帮助团队构建软件并定期为新版本运行各种测试。当开发和部署新功能以及更新现有功能时,此方法使开发人员和利益相关者有机会就应用程序质量获得定期反馈和更快的响应。

    源代码管理

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

    创建依赖关系管理器

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

    建立和实施框架的过程

    有几种方法可以计划实现自动化测试解决方案的方法。

    • 从用户的角度探讨自动化的实际适用性。从各个角度检查它是否如PPT中所讲(避免PPT自动化的最佳实践),在使用中的技术上对其进行测试。
    • 密切关注被测系统的技术,以找到能够完美模拟用户行为的最合适的测试自动化工具,这一点至关重要。
    • 建议采用基于阶段的实现方法,其中每个阶段都具有交付自动化测试脚本的优先级,同时添加框架功能以实现预期的脚本执行。
    • 在启动软件测试自动化之前,为确保正确执行自动化决策,必须首先计算和估算实施后的投资回报率,运行手动回归或冒烟测试的时间以及每个版本的运行周期。

    对测试自动化框架的必然需求

    描述和说明软件测试自动化框架和脚本如何完善测试过程,这并不总是意味着它可以成功地为所有致力于自动化的人工作。但是,无可否认的是,如果详细地计划和正确执行测试自动化框架,则会为软件开发和测试公司带来以下好处:

    • 更少时间,更多收益:构建任何可行的测试自动化框架和自动化脚本都是为了最大程度地减少编写和运行测试所需的时间,从而在短时间内提供最大的输出。有了出色的自动化框架,您就可以摆脱通常的担忧,例如同步,错误管理,本地配置,报告生成,解释和许多其他挑战。
    • 可重用和可读的自动化代码:使用现有组件库中提到的代码时,它会在未来一段时间保持可读性和可重用性,并且所有相关任务(如报告,同步和故障排除)将变得更易于访问。
    • 资源优化:从创建自动化测试中获得的效率取决于其采用的灵活性。如果自动化系统是灵活的,并且与从事不同组件的不同团队兼容,则在资源优化和知识共享方面可以提供巨大的收益。

    结论

    在当今快节奏,残酷的软件开发生态系统中,自动化测试和脚本在维持软件测试周期的速度,效率和明晰度中起着不可或缺的作用。随着自动化测试技术被灌输到软件测试中,考虑采用测试自动化框架的组织必须深入研究最终框架的设计,然后才能涉足这一领域。精心设计的框架设计和要使用的组件策略将为最终测试自动化框架奠定基础。

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


    FunTester腾讯云年度作者Boss直聘签约作者GDevOps官方合作媒体,非著名测试开发。

  • 相关阅读:
    论文笔记:SRCNN
    4.2 CNN实例探究
    4.1 卷积神经网络
    3 ML策略
    2.3 超参数调试,batch正则化和程序框架
    2.2 优化算法
    2.1 深度学习的实用层面
    Lecture4 反向传播算法
    Lecture3 神经网络学习
    java基础部分
  • 原文地址:https://www.cnblogs.com/FunTester/p/14785547.html
Copyright © 2011-2022 走看看