写点什么

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

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

关注

评论

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

车载语音识别数据的社会影响与未来展望

来自四九城儿

Lightroom Classic for mac(Lrc2021照片编辑软件) 10.3中文版

mac

照片编辑软件 苹果mac Windows软件 Lightroom Classic 2021 lrc2021

SketchUp Pro 2023中文 for Mac(草图大师) v23.0.418

mac大玩家j

建模软件 三维建模软件 Mac软件推荐

Mac电脑fcpx视频剪辑推荐Final Cut Pro 最新中文激活版

mac大玩家j

视频剪辑 Mac软件 视频编辑处理工具 视频处理软件

微信多开 WechatTweak for Mac(微信多开、消息防撤回工具)v3.8.2中文版

mac

微信 苹果mac Windows软件 WeChatTweak 微信多开助手

ARTS 打卡 第二周

一期一会

pandas ARTS 打卡计划 职业发展 LLMs

技术思维和产品思维

老张

产品思维 技术思维 解决问题

【INFINI Workshop 深圳站】8 月 31 日一起动手实验玩转 Easysearch

极限实验室

深圳 INFINI Labs Workshop 极限科技

车载语音识别数据的技术进展与前景

来自四九城儿

蓝易云:什么是 sudo,为什么它如此重要?

百度搜索:蓝易云

云计算 Linux 运维 root sudo

代码随想录Day59 - 单调栈(二)

jjn0703

基于RUM高效治理网站用户体验入门-价值篇

Yestodorrow

可观测性

蓝易云:如何使用 Fail2ban 防止对 Linux 的暴力攻击?

百度搜索:蓝易云

云计算 Linux 运维 SSH Fail2ban

代码随想录Day60 - 单调栈(三)

jjn0703

Premiere Pro 2021功能 视频编辑软件pr2021中文版下载

mac

苹果mac Windows软件 视频编辑软件 Premiere Pro Premiere Pro 2021

Zebec在Nautilus Chain 开启质押,ZBC 将极致通缩

西柚子

车载语音识别数据的应用与挑战

来自四九城儿

Go 输出函数

小万哥

Go 编程 程序员 后端 开发

磁盘管理工具推荐DiskCatalogMaker 最新激活中文

胖墩儿不胖y

磁盘清理 磁盘管理 Mac软件 清理磁盘软件

3D渲染动画制作 KeyShot 2023.2 Pro 补丁安装教程

胖墩儿不胖y

3D渲染 动画制作 Mac软件 渲染工具

打字练习软件Master of Typing 3 mac激活版下载

mac

苹果mac Windows软件 ​Master of Typing 3 打字练习软件

Presto 设计与实现(九):SQL 词法分析

冰心的小屋

数据湖 词法分析器 presto 设计与实现

代码随想录Day61 - 完篇总结

jjn0703

5分钟搞懂K8S Pod Terminating/Unknown故障排查

俞凡

Kubernetes 最佳实践 云原生

寻找注册配置中心最佳评测官,赢取丰厚奖品 | 测评开启,开发者请速速集结

阿里巴巴云原生

阿里云 微服务 云原生

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