自动化测试的最佳实践

19-03-21 banq
         

无论您是否已决定转向自动化测试,或者您仍在考虑进行自动化测试,了解实现转换的最佳实践以及哪种策略最适合您的组织非常重要。任何复杂性的每个应用程序都可能有自己的测试要求组合,没有两个开发团队完全相同。

在本文中,我们将讨论规划测试自动化策略的最佳实践,并提出确定哪种策略最适合您的应用程序和团队的方法。

让我们从最基本的问题开始:什么是自动化测试,什么使它变得重要?

管理重复

手动软件测试是重复的。事实上,它是与软件开发或使用相关的最重复且最耗时的任务类型之一。对于大多数类型的软件,只有手动数据输入需要更多时间或更多重复 - 大规模,大容量数据输入通常是首先要实现自动化的任务之一。

当然,自动化测试并不像自动化数据输入那么简单,但基本原理是相同的:识别重复操作,创建一个框架,允许以高效率执行这些操作,然后自动化两者重复和低重复动作,以便手动干预完全消除或减少到最低限度。

一切脚本化

对于测试,大部分重复包括在不同平台(操作系统,浏览器,移动设备等)和不同条件(压力,负载,资源可用性等)上执行相同的基本测试操作。测试也可以重复多次,以捕获逐渐发展或暂时的问题。

自动化测试系统由脚本驱动,具有自动测试数据输入和自动记录结果。脚本可用于控制每个测试的重复次数,并应用测试过程和数据收集的变体以适应不同的平台和条件。

虚拟化

在大多数情况下,自动化测试也是虚拟化测试。通常,除非您需要专门测试应用程序与硬件平台的交互,否则您可以在虚拟机上运行大部分或全部测试。

在虚拟机上进行测试可以更加轻松地自动化测试系统设置以及输入和输出,并且可以节省等待基于硬件的测试系统可用的时间。它还加快了测试过程,通常是一到两个数量级。这样可以缩短整体测试时间,并允许您包含难以适应手动测试计划的测试类型。

要求和基础设施

在对自动化测试设计和基础设施做出任何基本选择之前,了解可用的内容以及一流自动化测试机制所需的内容非常重要。

脚本和框架

不用说,自动化测试是脚本驱动的。测试脚本可以用通用编程语言编写,也可以用域特定的测试脚本语言编写。测试脚本语言通常是自动化测试框架的一部分(例如Appium或Selenium,两者都是开源的)。此类框架通常包括测试基础结构的主要元素以及它们自己的API。它们还可以允许您记录测试步骤,然后使用内置脚本语言对其进行编辑,从而简化构建测试脚本库的过程。

基于云的测试

使用虚拟机进行测试时,它们通常不需要在本地(除非特定的安全性或配置要求使内部部署测试成为必需)。基于云的虚拟测试系统也可以完成这项工作,通过在云中进行测试,您可以避免有限的本地资源所带来的限制。

测试平台

一个好的基于云的测试平台通常会提供全面的服务基础架构,用于在云中部署和测试虚拟机,以及分析,仪表板,安全性以及将这些服务与现有项目管理基础架构集成所需的所有API。

此外,基于云的测试服务(如Sauce Labs)实际上可以让您更轻松地自动化关键移动平台或其他设备的硬件测试。通过实际设备云测试,您可以使用基于云的测试基础架构在由测试服务维护的一组真实设备上运行自动化测试。

最终,您整合的测试自动化策略应该是最适合您的组织和产品线的策略。为此,您的计划流程应包括以下要素:

包括正确的人

让关键的利益相关者参与进来,至少达到他们有发言权的程度,即使不是最终的决策权。对于测试,这将包括您的测试人员,开发人员,设计人员以及服务台人员。开发人员和测试人员需要积极参与流程,所有利益相关方都应提供意见(例如,未满足的测试需求),并保持最新状态。

问问自己和关键利益相关者以下问题:

你想测试什么?

如果您没有遇到基于物理或计划的约束,您会测试什么?您的测试优先级是什么?您希望测试哪些功能区域,以及您希望测试哪些潜在的性能问题?您希望在测试制度中包含哪些平台和哪些条件组合?您预留哪些类型的测试是不切实际的,因为没有足够的时间或设备来包含它们?

此时,不要担心在自动测试环境中哪些测试可能或可能不实用。现在,您需要做的就是根据机会编译您想要测试的事项列表。

你有什么可测试?

您目前的测试制度实际上包含哪些内容?您正在测试什么,以及您设计了哪些测试,但是由于缺乏资源而推迟,或者在“有时间”的情况下进行“运行”列表?你收集什么测试结果,你用它们做什么?

然后,再问两个问题:鉴于您的手动测试制度的限制,您是否普遍满意它以正确的方式测试正确的东西?您是否对当前测试的设计 - 各个步骤和整个测试过程感到满意?

考虑设计

如果这两个问题的答案是“是”,那么您可能能够使用当前测试制度的核心要素(测试要求和个别步骤,如果不是整体程序)作为设计大部分的基础。你的自动化制度。如果您对目前的大多数或所有测试方案都不满意,那么最好从头开始设计自动化测试方案。

然而,在任何一种情况下,您的自动化制度设计可能(并且在许多方面应该)至少基于您在当前测试实践中编译的“愿望清单”的关键元素。

内部还是外部?您希望在内部处理自动化测试制度的哪些元素,以及您希望使用哪些元素来处理外部服务或资源?

  • 您的开发人员应该编写测试脚本吗?或者相反,您的QA团队能否处理脚本和自动化工程?如果您使用有限域测试脚本语言并从记录测试开始,这些任务可能会更容易学习。
  • 在本地或云中管理虚拟机和自动化测试框架会更容易,更实用吗?在许多方面,这个问题的答案取决于规模。如果合适,您可以从一个小的本地自动化测试机制开始,可以选择稍后迁移到云。
  • 您想使用基于云的测试平台吗?这将减轻您的内部员工管理测试自动化基础架构的任务。如上所述,这种类型的服务对于管理大量测试以及在虚拟和真实设备上进行自动测试也非常有用。
  • 将所有测试外包给第三方测试服务更好吗?这样做可以释放内部员工和资源,用于非测试任务。然而,它可能涉及显着的前期成本,并且对测试过程提供较少的控制。

这些问题都涉及测试需求,可用人员和资源,预算和时间之间的权衡。您团队的最佳答案取决于组织内的条件。

在规划测试自动化策略时,这可能是最重要的。最基本的最佳实践是清楚地了解您的测试需求,资源和约束,以及可用的资源和服务,并根据这种理解采取行动。