写点什么

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

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

关注

评论

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

真实案例解析缓存大热key的致命陷阱

京东零售技术

后端

天津市级人工智能通识课超10w人学习,和鲸Heywhale人工智能通识课解决方案重磅上线!

ModelWhale

Python 人工智能 大数据

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

阿里巴巴云原生

阿里云 云原生 可观测

EndNote 21大客户授权版 Mac(最强文献管理软件) 永久激活版

Rose

Microsoft Office 2019 免激活最新版-mac/win

Rose

六盘水正规等保测评机构有吗?在哪里?

行云管家

等保 等保测评 六盘水

Spring中的循环依赖是怎么个事?

伤感汤姆布利柏

区块链 RWA 系统开发的技术难点

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

智谱AI:引领国内开源大模型的创新与商业化

测试人

人工智能 软件测试

智能排产能解 决工厂什么问题?

万界星空科技

mes 万界星空科技mes 自动排产 智能排产

Permute 3:一键转换,媒体文件轻松驾驭

Rose

Redis Desktop Manager for Mac(Redis桌面管理工具) 中文激活版

Rose

WebGL 项目外包开发流程

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

区块链 RWA 系统的主要功能

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

如何理解符号引用和直接引用?

秃头小帅oi

Axure RP 11 for mac中文破解版 及安装教程

Rose

AI智能决策赋能服装零售 实现精准商品计划与供需平衡

第七在线

数字营销咨询,照亮企业营销数字化每一步

赛博威科技

营销数字化 数字营销 赛博威

生产管理用上自动排产,企业离智慧工厂又进了一步

万界星空科技

mes 万界星空科技 自动排产 生产计划 智能排产

AIAPI - 转向AI原生检索

百度Geek说

API 编排 结构化数据 系统优化 AGI rag

iStat Menus 6中文 for Mac 最强大的macOS系统监控软件

Rose

提供方耗时正常,调用方毛刺频频

京东零售技术

后端

电子商务怎么定义?电子商务公司哪些场景需要用到堡垒机?

行云管家

网络安全 IT 运维 电子商务

京东商品详情API接口的开发、应用与收益探索

科普小能手

数据 电商 京东 API 接口 API 测试

区块链RWA系统开发的技术框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

集成自然语言理解服务,让应用 “听得懂人话”

HarmonyOS SDK

harmoyos

广东加速人工智能人才培养,和鲸Heywhale发布人工智能通识课解决方案助力快速开课

ModelWhale

Python 人工智能 大数据 R语言 通识课

微信授权全链路打通指南

不在线第一只蜗牛

微信

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