【锁定直播】字节、华为云、阿里云等技术专家讨论如何将大模型接入 AIOps 解决实际问题,戳>>> 了解详情
写点什么

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

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

关注

评论

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

16张图带你吃透Redis架构演进

Kaito

redis 架构 高性能

2021全新iOS学习方向

ios 逆向

淘宝的商品中心和类目体系是怎么设计的

邴越

架构 阿里 模型 电商 业务

以终为始:28天打卡输出复盘

熊斌

个人成长 写作平台 28天写作

零基础实现Java直播(一):集成

ZEGO即构

架构师week10作业

Geek_xq

徒手撸一个Spring Boot中的starter

田维常

springboot

PM必备自我管理工具整理

做人没有梦想和咸鱼有什么区别

项目管理 PM

原来这就是大厂的MySQL主从复制、读写分离及高可用方案!

MySQL 数据库 架构

开放下载!解锁 Serverless 从入门到实战大“橙”就

阿里巴巴云原生

云计算 Linux Serverless 开发者 云原生

短信验证码被刷怎么办?java 短信验证码防刷策略分析

香芋味的猫丶

黑客 短信防刷 短信验证码 短信防轰炸 短信防火墙

GrowingIO SaaS 产品 CI/CD 实践 (一)

GrowingIO技术专栏

ci SaaS CD

今年我读了四个开源项目的源码,来分享下心得

yes

源码 面试 后端

面试加分项!我在美团Android研发岗工作的那5年,系列篇

欢喜学安卓

android 程序员 面试 移动开发

面试加分项!零基础如何成为高级Android开发,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

基于SpringBoot的微服务架构与K8S容器部署实践

Java 架构 微服务

互助系统软件开发,互助app开发

luluhulian

《iOS面试简历技巧解析》

ios 面试

🌏 超详细 DNS 协议解析

飞天小牛肉

Java 程序员 面试 计算机网络 2月春节不断更

28天总结

张老蔫

28天写作

滴滴夜莺二次开发全搞定

滴滴云

开源 监控 滴滴夜莺 夜莺监控 运维平台

一周信创舆情观察(1.25~1.31)

统小信uos

一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群

刘悦的技术博客

flask k8s kubectl Docker Desktop gunicorn

【春节不远行,云上过大年】来华为云社区,接任务领新年红包啦···

华为云开发者联盟

华为云

民进昆明市委:建议利用区块链技术优势在昆明打造金融应用平台

CECBC

金融 金融区块链

2021年 区块链最火的app爱打卡

v16629866266

OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践

阿里巴巴云原生

人工智能 容器 运维 云原生 k8s

LeetCode题解:529. 扫雷游戏,DFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师week10总结

Geek_xq

“新内容 新交互” 阿里云全球视频云创新挑战赛正式开启!

阿里云视频云

阿里云 音视频 应用

您的《操作系统线程模型总结》请查收。

后台技术汇

28天写作 2月春节不断更

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