文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

真正的测试自动化框架全接触

2024-12-24 17:34

关注

【51CTO.com快译】现如今,无论是软件测试人员,还是利益相关者,都已经认识到:实现测试自动化框架对于软件项目的成功是至关重要的。它不但能够提高测试的效率,而且可以减少人工干预的工作量。

在本文中,我们将深入探讨什么是真正的测试自动化框架,自动化脚本是如何工作的,以及此类框架是如何在测试过程中给团队提供竞争优势的。

定义测试自动化

在任何行业中,自动化通常被解释为通过智能算法,来自动处理各种流程,而且几乎不需要人工的干预。在软件行业中,测试自动化意味着:使用受许可版本或开源版本的自动化工具,对软件应用程序执行各项测试。从技术角度来说,测试自动化框架是一组定制的交互式组件,它可以协助执行脚本化的测试,并全面地报告测试结果。

为了成功地构建自动化框架,软件质量保证专家必须通过全面考虑与设计,来控制和监视整个测试过程,并提高结果的准确性。与此同时,那些经过精心设计的自动化框架也能够让测试人员以实用、简化的方式,来执行各项自动化的测试。

通常,根据自动化需求目标的不同,我们可以选择并创建如下不同的框架:

以工具为中心的框架

无论是商业版工具还是开源的自动化工具,它们都拥有自己的系统框架,可以在各种测试环境中提供测试套件,实施分布式测试,并最终生成报告。最典型的示例当属Selenium自动化框架。该框架的主要组件是WebDriver。作为基于Web的浏览器插件,该组件可被用于控制和操作Web浏览器中应用程序的DOM模型。此外,Selenium自动化框架还带有各种实用的编码库,以及支持记录回放的工具。

Serenity是另一个自动化工具的框架。它围绕着Selenium Web驱动构建了一个加速器。为加快测试自动化实施过程的速度,Serenity还能够将特定的组件与社区内的其他工具相组合。

除了上述两种工具,业界还有TestComplete、以及Ranorex HP QTP等工具。作为已部署的预构建框架,它们都带有用户行为模拟器、报告和脚本IDE等功能。

面向项目的框架

定制此类框架主要是用于实现特定应用项目的自动化。特定项目的框架既可以支持某些目标应用的测试自动化需求,又能够被开源库构建的组件所驱动。此类框架围绕着被测系统(System Under Test,SUT)创建了一个友好的测试环境,以运行和覆盖各种基本功能。其中包括:对已开发的应用进行部署,运行,并且通过包装器(Wrapper)的控制以简化编码,执行测试用例,以及输出测试结果报告。面向特定项目的框架还应该通过组件,以支持在不同的操作系统和浏览器上,进行跨多种云端环境的测试。

关键字驱动的框架

这是一些旨在给开发人员和测试人员带来较少代码体验的框架。那些被应用于代码之中的关键字集(如:Login、NavigateToPage、Click、以及TypeText)会被安装到代码库中,作为一个关键字的存储库。根据给定的关键字,测试人员可以参考编写处对应的脚本,并以电子表格的形式,传递到关键字解释器中,予以执行和测试。因此,对于技能不足的人员来说,他们能够据此轻松地编写和理解各种自动化脚本。

理想的测试自动化框架的主要组件

如果您想实现功能强大、且性能卓越的测试自动化框架,那么无论采用开源的、还是商用的框架,都必须包括一些核心的构成组件。它们分别是:

1.测试库

a)单元测试

您需要将单元测试库用于:

无论您是通过命令行、IDE、专用工具、还是CI(持续集成)系统,来运行测试,都需要确保单元测试能够以直观的方式得到运行,并能够提供相应的单元测试库。

通常,单元测试库可以支持几乎每一种编程语言。其中包括:

b)集成和端到端测试

在执行集成和端到端测试自动化时,我们往往需要检验现有测试库所提供的各项功能。为了消除不必要的编码负担,那些由应用UI驱动的API级别的测试,需要通过组件,轻松地与被测应用进行交互。因此,我们不能仅专注于如下方面的编码工作:

此环节涉及到的重要测试库有:

c)行为驱动开发(Behavior-Driven Development,BDD)

专门针对BDD的测试库往往以行为规范为目标,以可执行代码的形式创建各种可执行的规范。尽管它们不能像测试工具那样直接与被测应用进行交互,但是我们可以将不同的功能和预期的行为场景转换为代码。通过对BDD流程的支持,我们可以创建与自动测试范围和意图相一致的实时文档。如下是典型的BDD库:

2.测试数据管理

在软件测试自动化、以及测试的创建过程中,我们面临的最大挑战是如何利用好测试数据的管理系统。因此,随着自动化测试数量的增加,我们需要能够为特定测试的开展,提供可用的测试数据。而且,我们的自动化框架需要提供必要的措施,来输入、创建、以及最终按需清除测试数据。通常的做法是:采用一套合适的仿真工具,以使数据更加简化、清晰且易于处置。

3.模拟、存根(Stub)和虚拟化

在研究自动化测试的方案时,您可能会遇到如下情况:

无论上述哪种情况,在开发自动化测试框架的过程中,您都需要创建模拟已连接的组件行为模式、存根(请参见:https://www.infoq.com/articles/stubbing-mocking-service-virtualization-differences),以及选择实用的虚拟化工具。

实施模型的通用机制

除了上面讨论的自动化框架组件之外,还有一些实用的机制可以帮助我们创建,使用和维护各种自动化的测试,其中包括:

测试结果报告

在为“如何将测试结果报告到自动化框架中”,这一问题选择相应的库或机制时,您应该着眼于阅读与查看此类报告的目标受众。在此,您需要注意如下方面:

CI平台

为了以更快、更一致的方式进行应用程序的测试,持续集成(CI)平台可以帮助您定期构建软件,并为新的版本运行各项测试。当开发和部署新的功能,以及更新现有功能的时候,CI方法可以让开发人员和利益相关者有机会就应用程序的质量,获得定期的反馈和更快的响应。目前,TeamCity、CircleCI、Jenkins、Atlassian Bamboo等都属于高品质的CI平台。

源代码管理

与手动测试相似,自动化测试也涉及到编写和存储源代码的版本。各个开发公司都会运用一套源代码和版本控制系统,来保存与保护自己的源代码。目前,以Git、Mercurial、Subversion和TFS为代表的源代码管理系统,不但能够便捷地管理系统在生产环境中的代码,而且能够进一步完善自动化测试。

创建依赖项管理器

依赖项管理器的主要目的是:协助收集和管理在自动化软件方案的功能中,所使用的现有依赖性和库的过程。其中Maven和Gradle之类的工具,能够起到依赖项管理,协助从源代码和支持库中开发自动化软件,以及运行测试等作用。此外,业界其他常见的依赖项管理工具还有:Ant、npm和NuGet。

建立和实施框架的过程

我们通常可以通过如下方法,来计划与实现自动化测试的方案。

如果我们能够认真地规划和执行上述测试自动化框架的过程,那么整个软件的开发和测试环境会得到如下方面的收益:

总结

在如今快节奏的软件开发生态系统中,自动化的测试和脚本在软件测试周期的效率和覆盖面上都起着不可或缺的作用。当然,这些都离不开精心设计的框架和基础性的组件策略。我们可以从最小处入手,通过反复测试和改进,来避免在测试自动化的后期阶段产生冲突或被迫妥协的状况。希望上述有关测试自动化框架的讨论,能够让软件测试人员在执行测试项目中有所受益。

原文The ABC of Test Automation Frameworks,作者:Mitul Makadia

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯