ArchSummit全球架构师峰会门票9折倒计时中~ 了解详情
写点什么

Jim Shore 提出自动化验收测试得不偿失

  • 2010 年 4 月 30 日
  • 本文字数:2160 字

    阅读完需:约 7 分钟

你才刚刚步入这个炫酷、崭新的敏捷世界。学校里的课本、那些传统课程都已经被你抛于脑后,你游走于那些饱受欢迎、经久不衰的博客资源,说不定也从 InfoQ 上吸取了一点知识和建议。此外,还有些指南告诉你:你必须让测试自动化——尤其是面向业务的“验收测试”,以确保需求被正确理解和满足。哦,你猜怎么着,现在有些相同背景的专家正在提出相反的意见:千万别把那些测试自动化了。
主导最近这次相反建议的讨论的,是被尊为敏捷思想领袖的 James Shore,够讽刺的(不是吗?),他曾一度担任 Fit(Ward Cunningham 的自动化验收测试框架,该项目也开启了自动化验收测试的先河)项目的协调员。
受到与 Gojko Adzic 一次谈话的触动,Shore 发表了他关于“(自动化)验收测试存在的问题”的观点,总结为以下两点:

  1. 自动化测试工具的初衷,比如 Fit,是想让业务人员(“客户”)自己写出可执行的例子来。过去的经验证明这非常难实现。少数情况下是由测试人员编写的,但多数情况下是开发人员在编写这些测试。
  2. 由于这些测试既慢又脆弱,还常常难于重构,它们通常会成为名副其实的维护负担。就这一点,端到端的“集成测试”显然事半功倍,JB Rainsberger 写了一系列的文章来阐述他这一观点的合理性。

总之一句话,Shore(间接地还有 Rainsberger)认为,由于不存在预期价值(客户编写测试),就没有理由投入高成本(维护)了。
哇,不写自动化验收测试?看起来真是 180 度大转弯的极端想法。虽然这并不奇怪,但 Brian Marick 大谈类似的观点已经有一段时间了。又是一次讽刺(不是么?),1998 年 Marick 发表的关于自动化“面向业务测试”潜在好处的论文,成为了当时自动化验收测试运动的先驱。然而十年后,整整两年前, Marick 却这样说

TDD 方式、白板风格、面向业务且注重实例的设计方法、可视化运作的探索性测试、以及一些少量的自动化系统整体健全性测试,程序员使用方法构建的应用软件,开发起来将更加经济,而且质量方面并不会比一个通过 GUI 做最低限度的探索性测试、以及由注重实例设计方法指导的、完全用面向业务的 TDD 测试所开发的应用软件差。

Adzic 是 Shore 观点的最初接受者,他认同第一个观点,但并不完全信服“不要自动化”的所有观点:

我从未真正期望客户自己能写点什么,但是我在相当程度上成功说服了他们参与需求研讨会,会上提出的例子随后会被转化成验收测试……清晰的例子和改善的沟通是这一过程的最大好处,而使用工具也会带来额外的收益。工具使得我们对进展有个公正的度量。Ian Cooper 在对我的新书做访谈时说过“工具使开发人员保持诚实”,我很认同。用一个公正的工具来做评测,比如“完成”是真地完成了“大家一致同意的事情”,而不是“大部分都做好了剩下几件小事明天补”。我不确定现场回顾(Shore 的评论里所提到的)是否就能足以完全够避免这些问题。

George Dinwiddie 也认为:让业务人员写测试或者在这类工作中投入很多测试人员收效甚微,但他坚持认为自动化对降低回归缺陷成本依然是很有意义的

正如 Elisabeth Hendrickson 所说,“如果客户有一个期望,并表达清楚了这个期望,那么他们就有充足的理由相信你已经满足了这个期望,他们可不想非得去手动再次验证事实上你之前就已经做好的事。” 要求太过分了吗?


考虑到我所确信的东西还要拿去重测,而且迭代越短,他们就需要更频繁地重测,我可不想放弃自动化测试。

如果我们和客户一起着手用例开发,用客户的话说,我们就已经完成了最难的部分。投入额外的精力让这些用例可以运行(通过把它们自动化)从而预防缺陷是值得的,而不要在有了缺陷后再去想办法找出它们。

Shore 很快用一个例子继续印证了他的观点,那就是他和他的团队在不使用自动化验收测试的情况下来“消除缺陷”。在这里,Shore 澄清到,他并不是建议抛弃自动化验收测试,而是要用某些东西取代它,继而他描述了他眼中的“某些东西”。实质上,Shore 勾勒出的方法正是当下极限编程实践的一个很棒的、严谨的应用(尽管如此,这篇文章还是非常值得一读,值得收藏)。

在对Jim 两篇文章的回应中, Ron Jeffries 参与了整个讨论过程。在诸多其它观点中,Jeffries 始终像 Adzic 和 Dinwiddie 一样,认为不该遗忘自动化:

Jim 一直坚持说他觉得测试不自动化没什么问题,而且即使客户不理解也没事。我觉得客户不理解没关系——尽管我倾向于客户能理解,如果成本很低的话。测试不要自动化的理念我却不能苟同。我担忧的是,如果测试不能自动化,回归就变得门户大开、不可控制了。 此时,测试什么时候该自动化,什么时候不用,如果没自动化,其它测试通常要怎样才算做到位,就成了要关心的问题。当然,没必要把每个用例都跑一遍来确保代码工作正常。但可能还是要跑一些。


我的结论是,显然 Jim 的团队所做的事情是可行的,而且他们做的所有 XP 的实践都很不错。如果其它团队也能将这些实践运用得那么好,他们可能得到类似的结果。 而我认为:自动化那些故事的测试用例,是预防缺陷在后续故事中出现的最简单、最有效的方法。

所以,每个人都重新强调了让业务人员和开发人员一起讨论用例依然是必不可少的一项。但至于自动化那些用例,Shore、Rainsberger 和 Marick 认为也许不需要。其它人却说需要。

确实是一个有趣的讨论。你说呢?

查看英文原文: Jim Shore Suggests Automated Acceptance Tests Are Not The Right Move

2010 年 4 月 30 日 00:531901
用户头像

发布了 114 篇内容, 共 27.9 次阅读, 收获喜欢 1 次。

关注

评论

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

专访阿里巴巴研究员吴翰清 | 安全的持续运营之道

架构精进之路

4月日更 调查采访能力考核 人物访谈

JVM 读书笔记(一) 内存划分

U+2647

JVM 4月日更

话题讨论|To B & To G,互联网公司的下一主战场

程序员架构进阶

话题讨论 28天写作 4月日更 To B业务 领域思考

如何批评下属?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

Redis - 跳表以及其内部结构

insight

redis 4月日更

轻松搞定XML和对象之间的互转,就它了!

爱写Bug的麦洛

xml XStream

随机而转 当机而动|靠谱点评

无量靠谱

数字化转型:打破孤岛以提高数据安全性

龙归科技

数字化

独家对话阿里云函数计算负责人不瞋:你所不知道的 Serverless

阿里巴巴云原生

Serverless 容器 微服务 开发者 云原生

Go Channel

escray

学习 极客时间 Go 语言 4月日更

Guide to UUID in Java

OutOfMemory1024

Java

如何打造更为精准的个性化推荐?Amazon Personalize 有独门技术秘籍!

亚马逊云科技 (Amazon Web Services)

Linux nslookup 命令

一个大红包

Linux linux命令 4月日更

乘“云”加速疾病诊断研发,亚马逊云科技新阶段“诊断开发计划”已开启!

亚马逊云科技 (Amazon Web Services)

云洲链硬核支撑!济南标识解析二级节点解析量全国第一

浪潮云

云计算

Zip和7-zip谁更强,如何选择?

爱写Bug的麦洛

ZIP格式 ZIP zip4j

Linux OOM Killer

OutOfMemory1024

Linux

手机淘宝轻店业务 Serverless 研发模式升级实践

Serverless Devs

阿里云 Serverless 云原生 淘宝

专访前美篇首席架构师张超|从工程师到CTO的蜕变

Aldeo

程序员 采访 调查采访能力考核

百度南渡,护航泉州水务的产业智能化征程

脑极体

Open Source Load Testing Tool Review 2020

OutOfMemory1024

Load Testing Open Source

产业级项目实战配合技术讲解,百度零门槛AI开发实训营重磅开营

百度大脑

百度 AI

YouTube如何下载1080P的高清视频带声音?5种方法可以搞定

右手牵

下载 视频 youtube

基于mysqldump聊一聊MySQL的备份和恢复

爱写Bug的麦洛

MySQL MySQL 运维 数据备份

微服务架构核心基础讲解

爱写Bug的麦洛

微服务

Ubuntu 20.04 启用休眠(Hibernate)配置过程

OutOfMemory1024

Ubuntu20.04

低代码真能做到“让人人都能做开发者”吗?

优秀

低代码

如何缓解低代码开发的安全风险

APICloud

小程序云开发 开发者 低代码 APP开发 APICloud

TO B产品从0到1:从项目中走出来

菜根老谭

产品孵化

架构师实战营 模块一总结

代廉洁

架构实战营

采访彩食鲜 CTO乔新亮:程序员如何持续的登上新台阶

六维

4月日更 采访提纲

AI在游戏反外挂中的应用与实践

AI在游戏反外挂中的应用与实践

Jim Shore提出自动化验收测试得不偿失_敏捷_Mike Bria_InfoQ精选文章