当前位置:   article > 正文

关于测试金字塔的一些思考_材料测试金字塔

材料测试金字塔

以下为作者观点:

这是关于自动化测试金字塔的指南–一个经常被误用的常见概念。

在我从事软件测试和测试自动化工作的近十年中,我遇到测试金字塔这个词的次数可能多到数不清。

如果你觉得你的团队花了太多的时间来等待测试运行的完成,那可能是你实施测试自动化金字塔的方法不对。

什么是测试金字塔?

测试金字塔(Testing Pyramid)是一个模型,它将自动化测试分成三个主要类别:单元、集成和UI(或e2e测试)。这个模型允许开发更有效的测试套件,并帮助开发人员和QA实现更高质量的工作。

图片

测试金字塔(Testing Pyramid)

这些测试类型像金字塔一样分层,单元测试在金字塔的底部,集成测试在中间,而在顶部是UI测试。

我的建议是,金字塔的底部应该有最高数量的测试,而顶部应该有最低数量的测试,这是因为测试执行时间会随着每一级测试的增加而增加。

自动测试级别

为了更好地理解金字塔,让我们来探讨它的每一个层次。

单元测试

单元测试,有时被称为组件测试,是测试金字塔的基础,这意味着它们应该是最多的。 它们通常是在开发过程中由开发人员或有时由测试人员创建。单元测试的主要目标是将代码隔离开来进行测试,以验证其是否按预期工作。

单元测试是软件开发过程中的一个关键阶段,因为它可以帮助发现早期的代码问题,这些问题在后续的测试阶段可能更难发现。尽早发现缺陷,使其在其他组件受到影响之前更容易修复。

因为它们非常细化,只测试应用程序的部分(组件),所以单元测试通常非常快。

集成测试

集成测试代表测试金字塔的第二层。与单元测试相比,它们通常需要更长的时间来执行,而且其频率应该更低。

在集成测试中,我们测试各个单元或软件组件之间的交互,或内部组件和外部组件之间的交互 - 如数据库或API。

图片

QA中的单元测试与集成测试图示

集成测试通常比单元测试更慢、更复杂,因为它们与外部资源互动,这就需要一个与生产环境类似稳定的、预生产的环境来进行这些测试。

端到端的UI测试

端到端测试处于金字塔的顶端,目的是测试整个应用程序。这些测试使用模拟真实场景的环境和数据。

端到端测试最好从终端用户的角度来进行。QA工程师可以考虑一些信息,如:用户可能与应用程序互动的各种方式、他们用这个应用程序想要干什么、以及什么可能出错等等,目标是根据这些行为来创建一个测试。

根据测试金字塔,我们应该在这个层次上有更少的测试–因为 e2e测试往往不仅需要更长的时间来执行,而且也是最脆弱的,难以维护的。 它们也是在开发的后期阶段执行的。

手动测试和探索性测试有时也包括在这个层次,因为它们通常侧重于UI测试,并包括测试整个系统的更复杂的场景。

为什么使用测试金字塔?

测试金字塔提供了一个逻辑的、迭代的结构,以确定哪些级别的测试需要重点进行,以及何时进行。这是通过先运行较小、较简单的测试,而将较大、较复杂的测试留到测试过程的后期阶段来完成。

当你考虑到你在金字塔的每一层所需的测试数量时,金字塔结构就更有意义了。

测试金字塔还为测试人员提供了一种方法,通过考虑在软件开发的早期和后期阶段都应该运行的测试,使其更快地收到关于应用程序性能的反馈。

团队可以更迅速地发现和修复缺陷,如果有一个内置的提醒,在单元测试级别就可以获得反馈,从长远来看,这是令人难以置信的成本效益。

通过在所有这些不同层次的测试,测试金字塔提供了一个很好的方法来提高测试覆盖率。

敏捷中的测试金字塔

敏捷团队从使用测试自动化金字塔中获益最大,因为:

1.敏捷方法论优先考虑的是有效性和速度。这是由测试金字塔提供的,它简化了测试程序。当测试过程中加入明确的进度和逻辑时,工作会更快完成。

2.由于金字塔的设计是先运行最简单的测试,测试人员可以更有效地管理他们的时间,产生更好的结果,并使每个人的生活更轻松。

3.测试金字塔帮助测试人员正确安排任务的优先次序。

如果开发测试脚本时更强调用户界面(UI),那么核心业务逻辑和后端功能就更有可能得不到彻底测试。这对产品质量有影响,并增加了团队的工作量。此外,由于UI测试有一个大的周转时间,所以总体上测试覆盖率较低。所以,测试自动化金字塔有助于避免这种情况。

使用测试金字塔的缺点

没有考虑到测试的价值。 一个困难的测试,经过较长时间(10倍)的开发,可能是100%的准确。如果是这样,为什么要要求大量的单元测试?

可能有点过时了。 在提出测试金字塔概念的10年里,开发和测试过程已经发生了重大变化。现代自动化测试有助于精简测试套件,因为现在的测试更倾向于关注UI测试。

手动测试怎么了? 不是所有的情况都需要自动化,许多开发人员认为手动测试在某种程度上总是必要的,但在测试金字塔中通常没有提到。

使用测试金字塔的最佳实践

当应用自动化测试金字塔时,请记住以下做法:

1.选择想自动化的测试用例,然后决定自动化测试应该有多广泛。

2.根据用例和测试水平,选择合适的工具。对于单元测试,使用JUnit和TestNG等工具。对于集成测试,有Protractor或Citrus等工具。对于UI自动化,最流行的是Web应用程序的Selenium和移动应用程序的Appium,但也有其他测试框架。

3.设置测试优先级。

4.测试案例和场景的基础应该是高水准的测试数据。

5.避免在多个层面上重复测试。

6.在部署的管道中包括测试。

7.为了确保没有不可预见的问题,可以考虑在测试策略中包括探索性测试。

总结

如果应用得当,测试金字塔可以成为测试过程中的一个重要辅助工具,并使测试工具的价值最大化。通过选择每个测试用例应该被自动化的级别,团队可以提高测试效率,更明智地安排时间。

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/253601
推荐阅读
相关标签
  

闽ICP备14008679号