最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:001294
用户头像

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

关注

评论

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

react源码解析17.context

buchila11

React React Hooks

Go语言学习查缺补漏ing Day4

恒生LIGHT云社区

编程语言 Go 语言

使用 javap 分析 Java 的字符串操作

Jerry Wang

Java jdk 28天写作 12月日更 javac

网络协议之:基于UDP的高速数据传输协议UDT

程序那些事

TCP 网络协议 udp 程序那些事 12月日更

喜报 | 旺链科技获批张江国家自主创新示范区专项发展资金!

旺链科技

区块链 数字经济 产业区块链

字节码引用检测原理与实战

vivo互联网技术

编程语言 字节码编程 引用

Flutter开发:TextField常用属性的使用

三掌柜

28天写作 12月日更

大厂算法面试之leetcode精讲23.并查集

全栈潇晨

算法 LeetCode

【HarmonyOS 专题】01 基础 Mac 环境安装配置

阿策小和尚

HarmonyOS 28天写作 Android 小菜鸟 12月日更

从微服务架构的现状和未来看学习路径

博文视点Broadview

使用javap深入理解Java整型常量和整型变量的区别

Jerry Wang

Java jdk 28天写作 12月日更 javap

团队基建系列 - 组织知识传承 1

搬砖的周狮傅

团队成长

Linux云计算架构师:Linux全套实战学习资料

侠盗安全

Linux linux运维 运维工程师 云计算架构师 linux电子书

对话中国人寿:DevOps实践经验分享

龙智—DevSecOps解决方案

DevOps 中国人寿

鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

Prometheus Exporter (十九)Collectd Exporter

耳东@Erdong

Prometheus 28天写作 exporter 12月日更 Collectd

react源码解析18事件系统

buchila11

React React Hooks

模块1作业

miliving

全网最全-混合精度训练原理

科技热闻

华云大咖说 | 华云校园信创云解决方案

华云数据

华云数据

大厂算法面试之leetcode精讲24.其他类型题

全栈潇晨

算法 LeetCode

【LeetCode】截断句子Java题解

Albert

算法 LeetCode 12月日更

Git进阶(十一):Git 常用操作汇总

No Silver Bullet

git 12月日更

Android C++系列:Linux线程(四)线程同步

轻口味

android 28天写作 12月日更

Flutter 动画【Flutter专题16】

坚果

flutter 28天写作 签约计划第二季 12月日更

学python,怎么能不学习scrapy呢,这篇博客带你学会它

梦想橡皮擦

12月日更

【量化】资产组合理论:鸡蛋不能放在一个篮子里

恒生LIGHT云社区

量化投资 量化

给弟弟的信第5封|从高中到大学的体会

大菠萝

28天写作

12 张图 | 深入理解 Eureka三层缓存架构

悟空聊架构

缓存 Eureka 28天写作 悟空聊架构 12月日更

Java开发框架Struts相关知识分享

@零度

struts JAVA开发

元气部落盲盒芒趣一番赏盲盒app开发搭建

风行无疆

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