测试金字塔理论和三明治结构,你更支持哪个?

2009年,Mike Cohn出版了《成功的敏捷:使用Scrum进行软件开发》一书,其中介绍了测试金字塔。Mike引入测试金字塔作为测试策略中各种测试类型的理想分布的图形表示。自此,敏捷开发方法和测试金字塔日趋流行并获得广泛使用。

什么是测试金字塔理论

测试金字塔分为三层。底层是单元测试,中间是集成测试,顶部是端到端测试或者用户界面测试。

把单元测试放在底层是强调坚实基础的重要性。单元测试通常是快速、独立的测试,可提供各个部分或代码单元的精细覆盖。单元测试确保各个单元正确,尽早从源头发现问题,并促进更简单的重构。

金字塔的中间层由集成测试占据,它确认各种组件或模块如何交互。这些测试可确保系统的集成组件一起正常运行,并有助于发现因集成各种模块而可能出现的任何问题。

端到端测试,也称为 UI 测试,位于金字塔的顶部,因为它们复制用户交互并验证整个系统。与单元测试和集成测试相比,UI测试通常速度较慢且更容易出错。其有助于测试关键的工作流程和面向用户的功能,但应很少使用,因为它们的维护成本较高。

测试金字塔理论:过去和现在

从测试金字塔理论提出至今,已经15年过去了。目前该理论还有着大批的拥簇,但也有相当一部分人谴责这是一种过时的做法,不再具有相关性。当然,技术格局在不断变化,新的趋势和发明也经常出现。为了跟上这些不断变化的趋势,测试工程和测试实践应该相应发展。为此,我们今天重新审视测试金字塔理论。

单元测试

单元测试依旧是基石,甚至变的更为重要。进行尽可能多的复杂单元测试比以往任何时候都更有意义,特别是随着越来越多的公司使用微服务设计。Mike的观点依旧正确,即从源头寻找错误并加强基础内容。

集成测试

二十年前,集成测试的范围只是验证不同软件组件或模块之间的交互。从测试的角度来看,挑战在于开发自定义测试工具和脚本来模拟组件之间的交互并验证它们的集成,依赖关系的模拟并不普遍。二十年后,由于软件系统的复杂性和分布式特性,集成测试涵盖了更广泛的范围。验证针对软件组件以及各种服务、API 和外部依赖项。

得益于Docker等容器化技术和虚拟机等虚拟化技术的发展,集成测试现在变得更加有效和可重复,这使得开发和管理隔离测试环境变得更加简单。随着微服务架构的兴起,API 测试和契约测试变得越来越重要。集成测试在当前的技术环境中同样重要,因为单元测试旨在根据其他几个参数测试应用程序。而集成测试涵盖应用程序的多个方面,而不仅仅是关注应用程序功能。

前端/用户界面

这二十年,前端测试(UI测试)已经发生了巨大的变化和技术进步。二十年前,前端的目的是为客户提供接触点,为他们创造与应用程序交互的机会。如今,互联网比以前更强大,提供多种应用程序优化选项。所有企业都更加倾向于以用户为中心的设计,无论用于交互的设备或位置如何,应用程序的每个接触点都需要有出色的体验。无论是 B2B 还是 B2C 应用程序,用户体验都将是开发的核心。

在当今的互联网游戏中,前端开发通过影响网站结构、性能、移动设备友好性、用户体验和内容优化来直接影响搜索引擎优化。前端需要容纳多层测试,而不再局限于功能检查。

金字塔理论的延伸------三明治结构

所以我们不妨得出最终结论,UI 测试与单元测试和集成测试一样重要。测试结构从金字塔结构演变成三明治结构,三者并驾齐驱,共同维护软件的质量需求。

相关推荐
Warren9818 小时前
Pytest Fixture 作用域详解:Function、Class、Module、Session 怎么选
面试·职场和发展·单元测试·pytest·pip·模块测试·jira
望未来无悔2 天前
网络驿站聊天室--测试报告
测试
一晌小贪欢2 天前
Python 测试利器:使用 pytest 高效编写和管理单元测试
python·单元测试·pytest·python3·python测试
汽车仪器仪表相关领域2 天前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试
Wang201220133 天前
芯片serdes phy vth下阈值过低,线缆干扰会识别成oob如何解决
集成测试
我送炭你添花3 天前
Pelco KBD300A 模拟器:20.搭建pytest集成测试基础框架 + 模拟器闭环测试
python·集成测试·pytest
wangsir.3 天前
测试之测试分类
测试
卓码软件测评3 天前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
猿来如此呀3 天前
集成测试自动化:用 Claude Skills 构建可靠的系统测试体系
java·集成测试
我送炭你添花3 天前
Pelco KBD300A 模拟器:19.pytest集成测试(serial + protocol + macro)
python·log4j·集成测试