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

2023-10-30 15:15

本文主要是介绍测试金字塔理论和三明治结构,你更支持哪个?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

什么是测试金字塔理论

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

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

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

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

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

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

单元测试

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

集成测试

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

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

前端/用户界面

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

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

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

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

这篇关于测试金字塔理论和三明治结构,你更支持哪个?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308791

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多