敏捷团队的最佳测试实践:自动化金字塔

敏捷开发
• 阅读 290

自动化测试和敏捷软件开发常常是成对出现,但敏捷中的自动化往往说起来容易做起来难。大多数开发人员都已经认识到测试自动化的好处:它加快了测试速度、降低了成本、增加了覆盖率等。但是,许多人从未超过开始所需的初始投资。就像这幅漫画中的穴居人一样,许多团队陷入了困境,他们采用着低效率的方式,因为自认为根本没有时间去做出改变。而实际上,他们是自己受到损害。不要养成这个坏习惯!

今天,我们将与你分享我们对于敏捷团队的最佳测试实践之一。

要如何开始?如何知道要关注哪些领域?哪些测试方案应该采用自动化?

在非敏捷软件开发中,很多人不经意地陷入了“冰淇淋蛋筒反模式”的测试中,因为该模式更加强调 UI 层面的自动化。 Abstracta团队更喜欢将冰淇淋蛋筒倒过来的模式——由Mike Cohn推广流行的方法,即敏捷测试自动化金字塔。它可以给自动化成本带来最大收益,提高自动化的投资回报率,保证你将从自动化中获得最大收益。

当我们的大部分工作都集中在 UI 级别的自动化上时,重点是发现错误;而对于敏捷金字塔,其重点为避免错误

在下图中,你可以看到两种方法的不同之处。 敏捷团队的最佳测试实践:自动化金字塔

基础层:单元测试 显然,在金字塔中(作为敏捷团队最佳测试实践的一部分),大部分测试应该在开发阶段进行,在每次构建后进行单元测试。这些测试是最容易、最低成本及最快完成的,并且是测试驱动开发的一个重要方面。在较低的级别运行更多的测试可以让我们在运行过程中即可检查相应的工作,立即获得反馈,并让团队在错误难以隐藏的时候准确地知道错误出现在哪里。

在这里,这些错误的寿命也会更短,可能在不到一分钟的时间内就被发生、被清除了。而在 UI 测试过程中,错误会存活更长时间,并产生更激烈的矛盾,因为它们已经舒适地生活了相对更长的时间。

中间层:API/集成/组件测试 运行所有单元测试并通过之后,就可以进入 API/集成/组件测试阶段。

运行集成测试是为了确保所有组件正常配合工作。这里无需通过 UI 即可测试大部分逻辑和业务流程,在此处最好尽可能地采用自动化。

如果纠结于在此处自动化还是UI级别自动化,选择这里问题将变少、维护会更容易、测试执行会更快(意味着能更快发现错误,缩短它们的寿命),而且可以测试系统的逻辑。这些测试比单元测试更慢、更复杂,但它们仍然比 UI 测试更快、且不那么脆弱。

顶层:UI 测试 最后讲的,也是运行最少的是 UI 测试。最好尽可能少地进行UI 测试,因为它们成本高、难准备、难维护,并且需要很长时间。在这一步,只是要确保用户界面本身正常工作,系统的所有其他方面都已经过测试。只测试端到端最重要的部分,流程从用户登录开始,以如交易成功消息这样的最终操作结束。

关注与浏览器或 UI 相关的事情也很有帮助。运行 UI 测试后,可以进行手动和探索性测试(如金字塔上方的球体形状所示)。

如上所述,与把重点放在自动化 GUI 测试上,并且无意中遵循“冰淇淋蛋筒反模式”比起来,金字塔方法是实现测试自动化的更强大、更有益和更具成本效益的方法。金字塔在单元测试阶段提供了一个强大的基础,可以在集成和 UI 阶段进行进一步的测试,而冰淇淋蛋筒方法更头重脚轻且稳定性较差。

为了在敏捷开发世界中脱颖而出,就须遵循自动化金字塔测试,以尽可能生产出质量最好的软件。但不需要只遵循一家之言,可多方参考资料并不断实践以获得最适合团队的测试方法。

点赞
收藏
评论区
推荐文章
企业级飞速低代码 | 这5个理由让软件架构师积极拥抱低代码
从避免技术债务到简化和整合业务流程到解锁单体系统,低代码提供了速度和灵活性。软件开发者和架构师曾经有理由对低代码技术持怀疑态度,但今天,许多成熟的低代码平台使敏捷开发团队能够提高生产力、增加质量、并频繁部署。开发人员使用低代码技术来构建应用程序、客户体验、门户网站、搜索体验、工作流集成、数据管道、数据流、仪表板、测试自动化、机器学习模型和其他解决方案。"低代
Stella981 Stella981
3年前
Katalon 学习笔记(一)
工具介绍:KatalonStudio是一个能提供一整套功能来实现Web,API和Mobile的全自动测试解决方案的自动化测试平台。KatalonStudio构建于开源Selenium和Appium框架之上,通过减少学习和集成这些框架以满足自动化测试需求所需的工作量和专业知识,使团队能够快速开始测试自动化。与其他流行工具
Stella981 Stella981
3年前
Parasoft cpptestcli 指令行参数配置
ParasoftCtest  是款功能非常强大的自动化测试工具,能有效提高软件开发效率和代码质量。功能特点如下:    静态代码分析和编码策略实施;  自动代码审查的图形界面和进度跟踪;  自动化的单元测试和回归测试;  代码覆盖率分析,集成通过应用层覆盖跟踪从单元级测试;  结合静态分析、单元测试、代码评审和其他
Stella981 Stella981
3年前
Docker与自动化测试及其测试实践
<h2Docker与自动化测试</h2<p对于重复枯燥的手动测试任务,可以考虑将其进行自动化改造。自动化的成本在于自动化程序的编写和维护,而收益在于节省了手动执行用例的时间。简而言之,如果收益大于成本,测试任务就有价值自动化,否则受益的只是测试人员的自动化技能得到了提升。利用Docker的快速部署、环境共享等特性,可以大大减少自动化的成本,使很
Wesley13 Wesley13
3年前
2020自动化测试岗位需求的7项必备技能(更新版)
随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型,测试需求在业界不断增长。测试人员现在正在与开发人员一起工作,自动化测试在许多方面极大地取代了手动测试。如果您是自动化测试领域的新手,刚雇用您的组织将期望您快速,开箱即用,并能够检测到错误或提供没人想到的解决方案。但是,仅凭测试的基础知识,您将如何成为一名成功的,不同于前任的测试自动化工程师?成为
陈哥聊测试 陈哥聊测试
9个月前
如何选择合适的自动化测试工具?
自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中,几乎任一软件开发过程都需要在开发阶段的某个时候进行自动化测试,以加速回归测试的工作。自动化测试工具可以帮助测试人员以及整个团队专注于自动化工具无法处理的各自任务,但困难的部分就是选择
陈哥聊测试 陈哥聊测试
8个月前
你在测试金字塔的哪一层(上)
在准备将软件上线到生产环境之前需要进行测试。随着软件测试方式日趋成熟,软件开发团队的测试也在取代大量手动测试,逐渐实现自动化测试。
京东云开发者 京东云开发者
8个月前
京东流水线——满足你对工作流编排的一切幻想
01流水线模型在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程
敏捷开发 敏捷开发
7个月前
敏捷开发模式下如何快速提升产品质量
在团队选择敏捷开发模式下,敏捷测试部分也同以往的软件测试流程有所不同。如何平衡敏捷的快速迭代开发和解决Bug的矛盾?