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

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

什么是测试金字塔理论

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

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

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

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

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

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

单元测试

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

集成测试

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

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

前端/用户界面

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

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

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

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

相关推荐
flash俊杰9 小时前
pdf.js detach 血案:structuredClone transfer 如何吃掉你的 ArrayBuffer
测试
Wang2012201313 小时前
93k-Sequencer-Controlled Utility Lines
集成测试
狂师13 小时前
GitHub上开源真机测试工具mobile-mcp,说句话就能让AI在手机上跑用例!
人工智能·开源·测试
三翼鸟数字化技术团队1 天前
测试人员代码阅读实战指南
测试
龙智DevSecOps解决方案1 天前
TESSY基于需求的单元测试教程:需求关联、覆盖率与可疑测试处理
单元测试·视频教程·tessy
得物技术1 天前
Jev 实战:为AI工作流引入轻量决策层 x10倍提速|得物技术
python·llm·测试
努力努力再努力wz1 天前
【Lua 入门系列】从顺序执行到分支与循环:一文理解 Lua 控制结构、作用域与跳转规则
junit·单元测试·lua
挖掘狂人2 天前
AI 代码上线前,真正的瓶颈不在 "写",而在 "验"
ai编程·测试·代码规范
hpoenixf2 天前
测试比实现还多之后:怎样让文档、代码和测试一起向前
测试