敏捷测试自动化框架

⚡ 智能摘要

敏捷测试自动化在短迭代周期内应用自动化检查,因为需求每周都会变化,而为稳定的瀑布式发布而构建的测试套件很快就会变成维护负担,而不是安全网。

  • 🔘 核心肌群张力: 自动化奖励稳定性,而敏捷奖励变化,因此测试选择比测试覆盖率更重要。
  • ☑️ 瀑布对比: 传统自动化需要稳定的应用程序、专业的脚本编写人员和较高的设置成本。
  • Sprint 现实: 一到四周的冲刺周期很少能满足大型脚本的设计、编码和验证需求。
  • 🧪 并非探索性的: 自动化测试验证的是已知的行为;它们无法发现新的、创新的缺陷。
  • 🛠️ 工具选择: 限制性许可工具与敏捷团队所依赖的开放协作相冲突。
  • 📈 最合适: 重复性强、数据量大的回归检查,且结果明确为通过或失败,可以很好地实现自动化。

敏捷测试自动化框架

敏捷自动化测试

敏捷自动化测试 测试自动化是指在敏捷交付流程中使用测试自动化。其目的是在保证质量的同时,提高软件开发的效率和效能,并控制版本发布所需的时间和资源。由于测试用例与功能开发同步编写,因此测试自动化高度依赖于开发人员和测试人员之间的协作。

自从敏捷方法论旨在摒弃瀑布模型繁琐的现实问题以来,它的影响就已显现出来。 自动化测试 也一样。这两个学科必须有意识地结合起来:

敏捷开发与自动化相结合,形成了敏捷自动化。

瀑布式自动化与敏捷式自动化

在传统的软件测试生命周期中,一旦应用程序……,自动化测试就变得可行。 稳定,要求已确定它假设 相当长的时间这需要高技能的自动化专家,以及相当可观的初始投入成本。其基本目的是从长远角度降低成本,并确认现有测试用例周围没有引入新的缺陷。

自动化测试本质上并非探索性的。因为它的主要作用是节省时间和降低成本。它并非旨在发现新的、具有创新性的缺陷。自动化测试大多只是验证已存在的行为。

因此,这两种设置对测试套件的要求截然不同:

因素 瀑布式自动化 敏捷开发中的自动化
应用状态 脚本开始运行前,程序已稳定并经过确认。 每个迭代周期都会发生变化,而且经常是在编写脚本的过程中。
可用时间 专门的自动化阶段 任何能在1到4周冲刺期内完成的事情
谁来编写脚本 一支独立的自动化专家团队 交付团队、测试人员和开发人员共同协作。
首要目标 大型回归套件的长期成本降低 对刚刚构建的增量快速反馈
维护风险 低,因为需求变化缓慢 高,因为需求不断变化

如何在敏捷方法论中实现自动化

敏捷方法论本身就摒弃了繁琐的文档工作,以便快速实施新想法,并促进人员自由互动。它更倾向于探索性工作而非文书工作:

敏捷开发摒弃繁琐的文档编写,提倡探索性测试。

敏捷方法论的基本理念与自动​​化测试之间存在着真正的矛盾。敏捷团队通过缩小自动化范围而非减少自动化程度来解决这个问题:测试用例与功能在同一迭代周期内编写,下推到单元测试和 API 测试层级(这些层级维护成本最低),并在每次构建时运行。

敏捷测试自动化的基本要点

在将冲刺资源投入自动化之前,请权衡以下几点,以决定脚本是否能够完成:

  • 设计和编码时间: 每个剧本都必须像生产代码一样进行设计、编码和审查。
  • 与测试数据进行验证: 最终脚本必须先用现有的测试数据进行验证,才能被任何人信任。
  • 测试目的: 功能测试和回归测试的维护成本和有效期各不相同。
  • Sprint 长度: 一个迭代周期为一到四周,最常见的是两周,这很少会给大规模的脚本编写工作留下空间。

第二个因素是需求变更。敏捷开发从定义上来说就是一种应对客户驱动型变更的技术,因此它适合在整个开发过程中频繁调整。

相比之下,自动化测试最适用于需求稳定的情况。它并不适合敏捷方法论中不断变化的需求,因此,选择自动化哪些内容比自动化多少内容更为重要。

敏捷自动化工具

选择相关 自动化工具 这是在敏捷方法论中采用自动化测试的另一个重要因素。例如,授权的自动化工具会对不同类型和级别的用户施加严格的安全访问标准,从而限制了哪些用户可以访问属于该测试自动化框架的资源。

授权的自动化工具会占用大量资源,而敏捷方法论的限制则相对较少。

相比之下,敏捷方法论强调团队成员之间的开放式协作和自由互动。限制性的访问策略会破坏这种凝聚力,并可能导致对项目成功既无益也无利可图的结果。

首要任务是在敏捷流程允许的时间内交付高质量的自动化脚本。仔细选择候选测试用例,以便生成的脚本可以重复使用,并且仍然能够在规定的时间内完成。

即使在敏捷开发环境中,仍然需要进行一些测试——尤其是回归测试。下一节将探讨自动化测试的适用场景,以及它们如何与敏捷测试相对应。

自动化测试 Concepts 应用于敏捷开发

下表列出了七个经典的自动化测试理由,并给出了每个理由的敏捷解决方案。其中只有三个理由可以清晰地转化为敏捷迭代,而且这三个理由都属于回归测试的范畴:

# 自动化测试概念 敏捷方法论答案
1 这项测试必须反复进行。 这就需要用到回归测试的概念了。
2 测试的工作流程及其验证会随着时间的推移而缓慢发展和变化。 不适用于敏捷测试,因为敏捷测试意味着需求会频繁变更。
3 该测试验证的是业务流程或工作流,而不是外观、颜色或表格布局。 这种情况可以认为涉及人工测试。
4 该测试会生成结果,供监管机构使用,监管机构要求将这些结果以电子方式记录并存档,作为合规性的正式证据。 不适用于敏捷方法论,因为详尽的文档编制并非敏捷方法论的一部分。
5 该测试非常重复,或者有很多步骤必须每次都完全按照相同的方式执行,因此必须避免人工测试人员疲劳。 不适用于敏捷开发方法。
6 使用选定的自动化工具,测试的通过或失败结果很容易确定和捕获。 适用于敏捷测试中需要重复性和劳动强度较大的回归测试。
7 测试需要向应用程序中输入大量数据。 可以作为回归测试的一部分。

七个自动化测试概念及其对应的敏捷方法论答案

常见问题

分层原则:底层是大量的快速单元测试,中间层是较少的集成测试和 API 测试,最上层是一层精简的端到端 UI 测试。这样可以保证一个迭代周期内的测试套件运行快速且维护成本低。

用户故事的自动化检查与用户故事在同一迭代周期内编写完成。团队通常在第一个迭代周期就开始编写单元测试,因为等到产品足够稳定后再进行单元测试会导致大量手动测试积压。

按照金字塔结构排列各个阶段。单元测试最先运行,因为它们速度最快;其次是集成测试和 API 测试;最后是规模较小的端到端测试。故障会首先在成本最低的层级显现出来。 Guru99涵盖了机制 持续整合.

最常见的原因是金字塔结构倒置——大量投资于速度慢、脆弱的UI测试,而几乎没有进行单元测试。其他原因包括:自动化测试被排除在用户故事估算之外,以及测试套件缺乏足够的信任度,以至于无法阻止版本发布。

整个交付团队负责所有环节。开发人员负责单元测试,测试人员负责 API 和端到端测试层,双方都会互相审查对方的工作。而下游自动化团队的单独存在,又重新引入了 Scrum 旨在消除的交接延迟。

将其从阻塞流水线中隔离出来,提交缺陷报告,并在迭代周期内修复或删除。将不稳定的测试留在主运行中会让团队养成忽视红色构建结果的习惯,而这造成的损失远大于测试覆盖率的缺失。

自愈定位器能够根据上下文重新识别已移动的元素,而不是直接报错,从而减少维护触发的故障。模型还能生成测试数据,确定针对差异运行的测试优先级,并将重复故障进行聚类,以便冲刺团队只需进行一次故障分类。

它能快速生成草稿。 GitHub 副驾驶 它利用现有代码搭建页面对象、固定装置和断言,从而减少大量重复劳动。ping. Rev查看每个草稿,因为生成的测试可能会断言当前行为而不是所需行为。

总结一下这篇文章: