写点什么

Steve Smith 谈端到端测试是有害的

  • 2015-12-28
  • 本文字数:2054 字

    阅读完需:约 7 分钟

最近 InfoQ 采访了 Steve Smith ,坐下与其讨论了他最近的博客文章“端到端测试是有害的”背后的观点。Smith 谈到发布测试是一种‘风险管理剧院(risk management theatre)’形式,讨论了环境下单元测试和验收测试的优势,强调了运行时监控相对典型脆弱的、运行缓慢的端到端测试实现的价值。

InfoQ:你好 Steven,谢谢你接受 InfoQ**** 的采访。你能介绍一下你自己,同时简单解释一下你最新博客文章“端到端测试是害的”的前提吗?

Smith:我在伦敦工作,职业是持续交付顾问,作为一名开发者,多年来我做过大量的单元测试,验收测试,冒烟测试和监控,而没有采用端到端测试。我从来不是端到端测试的爱好者,因为他们既慢又脆弱,并且数年来,每当有客户说“在产品发布之前,我们需要执行端到端测试 1 天 /2 周 /1 个月”时,总是会让我感到很难过。

2014 年的时候,我写过一篇端到端测试的文章,因为称发布测试是一种风险管理剧院形式而为人熟知,今年我的研究向前迈进了一步。今年春天,当有个客户说“在产品发布前我们需要端到端的性能测试”,我问他们,为什么他们为了第三方的利益愿意花自己的钱测试第三方系统呢,并且他们动心了。

今年夏天,当这个话题再被提出的时候,我和我的同事再次指出这是一个多么糟糕的想法,并且我们建议使用第三方产品监控替代端到端测试。自那之后我非常的恼怒,接下来我花了 4 个月,每晚阅读和思考端到端的测试,现在你可以在我的博客上阅读我的最终(长)版本。并且希望你能够提供初始反馈信息,明年我打算就此发表一场演讲。

InfoQ:你在文章中提到端到端测试不会检查被测系统的“行为”。你能更具体地解释一下吗,以及这种说法背后的原因?

Smith:为了简洁起见,我简化了单元测试,验收测试和端到端测试的构建时自动检查,并且根据 Jerry Weinberg 的 Perfect Software and Other Illusion_”_ 书中的术语进行了分类。Jerry 描述了针对实现检查目的,比如开发者是否做了他们认为应该做的(单元测试),和针对需求检查实现,比如开发者是否做了需要做的之间的差异。验收测试或者端到端测试将会检查被测系统内通过遵循特定路径满足要求的需求,但是它不会检查路径内所有不同行为的可能性。这就是为什么单元测试流行起来的原因。

InfoQ**:你讨论了相对平均恢复前时间(MTTR)优先低平均故障间隔时间(MTBF)构建出来的系统会受到有关黑天鹅事件波及的风险。开发者和运维者如何说服管理人员相信这个问题的现状(和固有风险)?**

Smith:这个问题很好。Nassim Nicholas Taleb 在著作 Black Swan Antifragile中表明让人们理性对待可能性和“小概率事件会发生”的想法是多么的困难。我通常是这样处理客户的:

  1. 计算每个事件每单位时间的成本,比如“如果第三方支付系统失灵,我们每分钟花费的成本是多少”
  2. 计算每个事件的持续时间,比如“如果第三方支付系统失灵,失灵的时间是多久”
  3. 计算每个事件发生的概率,比如“第三方支付系统失灵的可能性是多少”
  4. 风险 = 1 * 2 * 3

人们通常能够很容易评估 1 和 2,因为他们了解自己的业务,并知道第三方的生产周期。3 相对比较困难,但是即使是粗略的估计也可以给出明确的指示——再加上可以向人们展示致力于缩短生产周期有多么的重要。

InfoQ:随着“可编程的基础设施”的迅速流行,你觉得在构建管道中集成基础设施变化有多重要?对此你有什么建议(比如是否应该有独立的应用/基础设施管道)?

Smith:自动化的基础设施显然是件好事,并且有助于实现较低的平均恢复前时间,因为它能够促进基础设施错误的快速回滚。我有看到捆绑了应用程序版本(使用类似聚合工件(Aggregate Artifact))的自动化基础设施版本或者拥有特有变化率的完全独立的管道。这取决于该应用程序依赖基础设施的程度。

InfoQ:你能为那些负责提高遗留应用程序测试质量,并且该测试拥有大量端到端测试的人员一些建议吗?对于一个脆弱的测试套件,是否有等效的流行的微服务可以取代遗留应用程序 strangler模式’

Smith:这个问题很好。最近我在 Netherlands 举办的 2015 年持续交付会议上发表了 主旨演讲,在 Q&A 中我被问到了完全相同的问题,我成功抵制了 “看情况而定”的正常回答。替换单元测试和验收测试中大量的自动化端到端测试需要很长时间,并且很难说服产品负责人,因此我赞成你使用 Strangler 应用程序的建议。

我将会围绕遗留应用程序构建新的应用,包含单元测试和验收测试,并在新应用逐步取代遗留应用的时候从遗留应用中逐步移除端到端测试。这需要大量的投资,但是随着新应用取代遗留应用,并且端到端测试的移除,人们会注意到生产周期缩短了,并且质量更高。

InfoQ:谢谢你百忙之中接受 InfoQ**** 的采访。你还有什么希望跟读者分享的吗?

Smith:在构建时请不要使用端到端测试。如果你想要测试你的代码,在构建时使用单元测试或者验收测试。如果你想要测试你代码依赖的第三方,使用运行时监控。

Steve Smith 有关端到端测试想法的其它信息可以参考他最近的博客文章端到端测试是有害的

查看英文原文: End-to-End Testing Considered Harmful:A Q&A with Steve Smith

2015-12-28 18:001479
用户头像

发布了 92 篇内容, 共 26.4 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

CrossOver for Mac 怎么用?

懒得勤快

江西组织部干部人事综合管理平台建设,干部管理系统

uni-app rtc插件集成指南及常见问题--iOS

anyRTC开发者

uni-app ios 音视频 WebRTC RTC

行业洞察 | 风口上的互联网医疗,如何赢得下半场?

澳鹏Appen

人工智能 大数据 医疗方案 智能医疗 医疗AI

Rust从0到1-集合-Vector

rust 集合 Collections vecotr

复习一周 成功拿到字节Offer 我也惊呆了

学Java关注我

Java 面试 程序人生 编程语言 计算机

Kubernetes入门——Kubernetes实现应用的高可用

百度开发者中心

Kubernetes k8s入门 #技术课程#

跨湖跨仓场景下如何实现海量数据分钟级分析

华为云开发者联盟

大数据 数据湖 数据分析 华为云FusionInsight MRS HetuEngine

5.1特辑|为何显示有票你却抢不到?技术揭秘12306如何保证车票不超卖

华为云开发者联盟

数据库 GaussDB(for Redis) 五一 12306 数据强一致性

站在车顶才能维权?中汽协基于区块链放“大招”!

CECBC

特斯拉

从字节跳动到火山引擎(一) | Redis 云原生实践

redis 字节跳动 Kubernetes 云原生 火山引擎

系统服务-技术专题-并发模型粗浅分析探讨

洛神灬殇

并发编程

音频技术及行业的发展

Emotion

音频技术

基于 HLS 创建 Golang 视频流服务器

天黑黑

音视频 HLS 声网 Go 语言

anyRTC 音视频 uni 插件集成步骤

anyRTC开发者

uni-app android 音视频 WebRTC sdk

云图说|数据可视化管理,搭载数据安全黑科技!华为数据安全中心,助你保障云上数据安全!

华为云开发者联盟

数据安全 华为云 云图说 DSC 数据安全中心 云上数据

华为云云原生数据库GaussDB加速创新,企业核心数据上云信赖之选

华为云开发者联盟

数据库 云原生 华为云 GaussDB(for openGauss) 全密态安全

海南新场景!数字人民币在三亚完成首单离岛免税购物

CECBC

海口免税

干了八年的阿里面试官,给大家分享我面试时最爱问的Java面试题

Java架构师迁哥

区块链赋能的Web 3.0时代将是一番怎样的景象?

CECBC

区块链

Android 设备音视频兼容性适配

网易云信

WebRTC

编曲混音必备法宝——FL三大效果器简介

奈奈的杂社

领域驱动设计(DDD)在百度爱番番的实践

百度Geek说

中台 微服务 领域驱动设计DDD

区块链技术赋能不动产登记,让群众办事更便利

CECBC

区块链

本科学历,杭州工作4年,三个月学习入职阿里,薪资涨幅达到50%

比伯

Java 编程 程序员 架构 计算机

一周信创舆情观察(4.19~4.25)

统小信uos

阿里云 ARMS 3.0 重磅发布云拨测,Gartner APM 魔力象限产品解读

阿里巴巴中间件

阿里云 Gartner 可观测

高并发系列:架构优化之细说负载均衡

Coder的技术之路

负载均衡 高并发 高并发优化 负载均衡架构

击破行业痛点,区块链赋能智慧物流高速发展

CECBC

区块链

【Java面试】30个 Java 集合面试必备的问题和答案 ​

Java架构师迁哥

000 ES suggest-英文

小林-1025

es7

Steve Smith谈端到端测试是有害的_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章