扫码阅读
手机扫码阅读

从手动测试到自动化测试(下)

41 2024-04-03

前文说道从手动测试到自动化测试(上),接下来分享后面的内容。

自动化什么

对于初学者来说,重要的是要记住自动化测试并不是适用于所有测试场景的灵丹妙药。但是,通过注意下面描述的以下几点,可以选择要自动化和不自动化的内容:

成本

假设你有频繁的发布进入。在这种情况下,首先自动化冒烟测试和回归测试更为重要,因为这将有助于加快测试周期,缩短上市时间,减少人工干预。

优先级

这很重要,因为测试人员可以根据业务需求和复杂性将首先需要自动化支持的功能与其他功能分开。业务优先级较低的区域可以从自动化范围中删除。

什么可以自动化

这个因素取决于许多领域,比如可用性方面,这些领域不能自动化,其他方面,比如工具依赖性,也会限制自动化领域。此外,应优先考虑支持多浏览器的应用程序等其他方面的自动化测试,以节省跨浏览器测试的时间。

什么不能自动化

虽然自动化好处多多,但是正如我之前所言,自动化并不是解决一切问题的灵丹妙药,自动化的好处不应该被神话到处宣扬。目前,手动测试仍然在一些关键领域领先自动化:

  • 探索性测试:在现实世界中,用户打算探索应用程序,而不是在我们打算自动化的标准流线型工作流程中遵循它们。探索性测试不能自动化,因为它们可能倾向于遵循只能通过人类思维过程才能实现的草率过程。
  • 用户体验测试:自动化工具无法完全捕捉用户倾向于使用的应用程序的情绪、使用可能性、眼睛舒缓体验等。
  • 可访问性测试:此测试有助于评估应用程序对最终用户的可访问性。工具很难衡量可访问率。这只能通过手动测试来实现,方法是通过工作流或应用程序使用分析体验。

如何自动化

团队或任何组织忽略的一个基本原则是并非所有测试都可以自动化。因此,与其为被测应用程序设定 100% 自动化的不切实际目标,不如根据实际情况希望自动化的测试部分设定一个目标。以下是有关如何进行自动化测试的一些注意事项:

  • 如果熟悉自动化测试,可以先将一小部分测试从手动转移到自动化。关键目标是从小处着手。编写较小的测试用例将帮助希望自动化的应用程序的未来领域中维护和重用它们。用每个方法或函数映射你的测试用例将有助于提供更好的覆盖率。此外,标记测试用例有助于更轻松地识别,因此团队可以确定哪些要自动化,哪些不自动化!这也有助于更好地报告错误。
  • 正如我之前所说,不要以 100% 自动化为目标。相反,当你从手动测试开始转向自动化测试时,最好通过手动方式探索应用程序的新领域,并根据业务优先级创建关于哪些需要自动化和哪些不需要自动化的风险计划。
  • 此外,在从手动测试开始自动化测试时,借助 Web 分析创建一个浏览器和设备列表,以了解最终用户偏好。这有助于确保跨浏览器兼容性的角度覆盖应用程序。

明确区分哪些领域应该保持手动与决定哪些领域应该自动化同样重要。保持这些标准来决定自动化的范围有助于从长远来看评估自动化,并在计划从手动测试转向自动化测试时提供更好的投资回报率。

先决条件

为了降低迁移和测试自动化期间的风险,了解目标应用程序的技术和业务环境至关重要。换句话说,组织应该在两个团队中都有领域专家,他们知道如何开发和测试应用程序。如果没有足够的领域专业知识,你可以将其外包给第三方自动化测试公司。

编码技巧

学习如何编程是一项宝贵的技能,可以帮助测试人员有效地测试软件。编码知识是测试自动化的内在组成部分。没有它就不可能,因此学习编码将是自动化测试的一项基本技能。

工具和框架

转向自动化将节省大量时间并帮助您提高效率。例如,如果有什么东西坏了,你不会花几天时间手工修理它。相反,使用框架、开源工具和第三方工具的组合来自动化测试。

从小处着手

你的测试用例有多小将直接关系到它们的工作情况,这意味着它们越容易调试和维护,它们的性能就越好。确保将它们分开并打上标签,以便轻松找管理测试用例。

坚持基础

当你开始构建和使用自动化测试时,可能会感到不知所措。确实,凡事不可一蹴而就。但你需要加班加点地学习知识来磨练自己的技能。成为专家级自动化测试人员的技能需要时间、耐心和持续学习。此外,专业的自动化测试人员一直在寻找改进的方法。

自动化测试入门

从手动测试转向自动化的决定应该基于测试应用程序时面临的当前问题,而不仅仅是因为对自动化这个词着迷。在正确的时间做出正确的决定对于更好的质量成就和投资回报率更为重要。

从手动测试转向自动化可以帮助您完成以下测试类型:

  • 回归测试:一个不断增加的回归套件,需要在每次发布后执行,以确保没有新的或旧的功能被篡改。
  • 复杂功能:容易导致人为错误的复杂计算领域。
  • 冒烟测试:为主要功能运行自动化套件将有助于评估构建的质量。通过分析构建是否需要深入测试或不发布自动化套件结果,这有助于为团队节省时间。
  • 数据驱动测试:需要使用多组数据进行测试的功能。
  • 跨浏览器测试:这是在多个浏览器和版本上支持应用程序时出现的更大问题之一,或者是指用于验证网站的 RWD(响应式 Web 设计)的响应式测试。在多个浏览器上重复运行手动测试需要大量的精力、时间和投资。
  • 重复测试:从一个测试周期到另一个测试周期相对重复且不变的测试。
  • 性能测试:性能测试的手动替代方案不存在,需要工具支持的干预。

从手动测试开始自动化测试的一个非常重要的关键领域是确保被测应用程序在所有方面都是稳定的。不稳定的应用,变更过于频繁,会导致维护工作量大,投资大,投资回报率低。自动化测试可能看起来很吸引人,但找出应该鼓励组织自动化的痛点很重要。处于初始阶段的项目可能不需要自动化来关注并且完全依赖手动测试。

网格基础设施

一个关键的测试领域是为被测应用程序提供一个多功能和支持性的测试网格基础设施。测试网格是包含多个设备、浏览器、版本和操作系统的集合的环境。这有助于在所有这些多种组合上运行应用程序,以获得更好的应用程序兼容性。构建测试网格基础设施非常重要,因为它直接影响维护和总体成本。

本地测试网格基础设施

这有助于访问一组真实设备,这有助于控制数据,但维护成本可能会变得昂贵,而且随着新推出的设备增加而增加。

基于云的测试网格基础设施

它提供随时随地的可访问性,并有机会随心所欲地扩展。基于云的测试基础架构网格将有助于提供对软件和硬件环境组合的访问,这比大多数组织在其内部本地网格中管理和维护的能力要大得多。它有助于通过基于云的工具支持,不时地通过基于云的工具支持,为市场上所有新推出的设备扩展跨不同版本和设备运行应用程序的可能性。与本地网格基础架构相比,云基础架构有助于提供更大的可扩展性,并且不需要太多维护。

自动化测试工具

自动化测试高度依赖工具。决定使用哪种工具对您的应用程序进行自动化测试取决于多个因素,例如:

应用程序的领域

工具选择主要取决于应用程序的领域,无论应用程序是针对基于 Web 的应用程序还是基于移动设备的应用程序。例如,如果是基于 web-UI 的应用程序,可以使用 Selenium、QTP 等工具;如果是基于移动设备的应用程序,则可以使用 Appium、Robotium 等工具。

编程经验

可以从对任何测试人员或资源有帮助的顶级编程语言中进行选择。例如,Java、Python、JavaScript、C# 等等。

开源或商业

在从手动测试转向自动化测试时,从组织的角度来看,这是一个更多的因素,而不仅仅是个人的选择,因为这有预算限制。一些开源工具的示例有 Selenium、Appium 等,以及 LoadRunner、QTP 等商业工具。

开始自动化测试

这一步可以通过计划、估计和确定交货日期来实现。培训团队成员以提供最大的生产力和效率非常重要。

通常来讲,前期都是投入大,见效慢。从长远来看,自动化测试提供了巨大的前景。创建一个测试自动化框架,以便于维护和更好地使用更长时间。更轻松的报告和更顺畅的执行是成功实现自动化之旅的关键。

当你开始从手动测试转向自动化时,它不仅可以节省时间,还可以提供更好的覆盖率、效率、质量以及应对敏捷、看板等开发方法的方法。此外,随着软件行业的不断发展,测试自动化在开发生命周期中寻求重要的组成部分。

测试自动化金字塔

测试自动化金字塔是基于风险的测试的一部分,它依赖于我们应该自动化测试的想法,它最有可能失败而不是到处失败,因为这样做意味着无缘无故地编写大量代码。根据有多少其他组件依赖于它们,测试被插入到金字塔中。

单元测试

好的单元测试是好的软件的基础。要构建一个真正优秀的软件,需要有一个坚实的基础,而这伴随着良好的单元测试。

服务/API 层测试

测试人员可以利用 API 来识别入口点并验证功能。API 用于验证业务逻辑、数据库交互、用户体验等。

用户界面测试

测试人员使用 UI 提供的界面测试产品;但是,在所有功能/业务规则都经过验证并正常工作之前,不应执行此操作。

结论

测试过程对于项目的成功至关重要。总体讲手动运行测试可能既耗时又昂贵。因此,许多组织正在转向自动化测试,以最大限度地提高效率并最大限度地利用稀缺资源。此外,精心计划和实施的测试自动化策略允许团队专注于项目的新功能,而不是管理当前的功能。毕竟,任何软件项目的主要目标都是及时和经济高效地交付高质量的产品,而自动化测试可以帮助团队实现这一目标。

原文链接: http://mp.weixin.qq.com/s?__biz=MzU4MTE2NDEyMQ==&mid=2247498291&idx=1&sn=124d180e294e29a7825efc8f5f212090&chksm=fd497705ca3efe136f5fa55b6260ff84eb496071b3d7453ad191cd8eacf9e466cf440c84e1b1#rd