写点什么

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

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

关注

评论

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

【直播预告】优化器及 Flink CDC + OceanBase 全增量一体化数据集成方案

OceanBase 数据库

OceanBase 社区版

[Day13]-[动态规划]爬楼梯

方勇(gopher)

LeetCode 数据结构和算法

4. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识wrk、wrk2

MASA技术团队

C# .net 微软 测试 压测

Cisco Nexus L2 Switch 进行 vPC 和 L3 改造以支持 K8S 部署

Qunar技术沙龙

#运维

2022观测云产品发布会前瞻:这是一份给IT工程师们的礼物

观测云

论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

白鲸开源

智能风控中台设计与落地

第四范式开发者社区

人工智能 自动化 金融 中台架构 风险控制

Android C++系列:JNI开发准则

轻口味

c++ android 4月月更

《对话ACE》第二期:新数据库时代,DBA发展之路该如何选择

OceanBase 数据库

dba oceanbase

P5直升P7!“阿里爸爸”最新出品年薪30W~120WJava架构师学习路线

Java全栈架构师

程序人生 IT java程序员 java面试 java架构

分布式shiro权限验证

Rubble

4月日更

什么是中国企业信息化

秋去冬来春未远

数字化信息化中国文化

渗透测试系列之靶机渗透

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

知名固件供应商百敖软件加入龙蜥社区

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 百敖软件

Web3 和区块链技术:数字资产所有权如何颠覆当前的商业模式

CECBC

逐向双碳:绿色计算的误区与正确打开方式

脑极体

netty系列之:netty中的frame解码器

程序那些事

Netty 程序那些事 java 4月月更

详解动静态缓存各种方式

穿过生命散发芬芳

4月月更

在线CSV转TSV工具

入门小站

工具

探索内存原理的内存映射文件(图文详解)

简说Linux内核

内存管理 Linux内核 进程管理 驱动开发 嵌入式开发

基于云效Flow配置 Jenkins 源

阿里云云效

云计算 阿里云 运维 jenkins、 jenkins高级用法

Kernel SIG直播:让人头疼的“内核内存被改”和“内存泄露”怎么解?|第13期

OpenAnolis小助手

直播 内核 龙蜥社区 sig 龙蜥大讲堂

不解决好这 3 大矛盾,就别搞 DevOps 了

SoFlu软件机器人

linux之chsh命令

入门小站

Linux

动态压测模型让工作更轻松

FunTester

开启 JSON 和多模,让生态更多可能 | OceanBase 社区版 3.1.3 发版

OceanBase 数据库

OceanBase 社区版

架构实战营模块九毕业项目

刘洋

#架构实战营 架构师实战营 「架构实战营」

阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态

阿里云数据库开源

数据库 阿里云 polarDB PolarDB-X

带你了解什么是DHCP,为什么要用DHCP?

乌龟哥哥

DHCP 4月月更

在线标准程序员计算器

入门小站

工具

SeekTiger迎来新征程,STI即将登录Gate.io

BlockChain先知

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