免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

忘掉调试器吧,来使用“Saff Squeeze”

  • 2008-11-29
  • 本文字数:959 字

    阅读完需:约 3 分钟

XP、TDD 及 JUnit 的联合创始人 Kent Beck 谈到了他通过单元测试而不是调试器来跟踪到 JUnit 的新特性 JUnitMax 中一个缺陷。他使用了当前 JUnit 的主开发者 David Saff 向其展示的一个方法,该方法首先创建一个高层的单元测试,然后不断回归直至缺陷的根源处,这时的测试就会变得非常简洁明了。

Beck 通过一个比喻介绍了这个他称之为“ Saff Squeeze ”的方法,该比喻来自美式橄榄球中出现的“三明治”,在这里面带球的人会同时被两个人所击中,一个人击打其“高位”(肩膀附近),另一个人击打其“低位”(腰部或腿部)。他说“Saff Squeeze”与此类似,因为这种方法首先会编写一个失败的高层单元测试(“高位”),然后不断回归,用更加具体的单元测试进行替换(“低位”)直到某个单元测试能直接找出有问题的代码(也就是直到能“揪出”缺陷)。

Beck 对该方法的总结如下:

Saff Squeeze 是这样运作的:首先我们需要编写一个失败的测试,然后逐渐向底层深入直到无法再进行下去为止,这时你就会发现缺陷的本源了。下面是循环的过程: 1. 在测试中内联一个出错的方法。
2. 将一个(失败的)断言放到测试中已有的断言前。
3. 移除测试中新断言到原断言之间的部分。
4. 重复上述过程。

在一篇简短的文章中,Beck 讲解了上述过程,展示了不同阶段的测试代码,最后展示了一个“精简的”测试,该测试揭示出了实际的缺陷。

他将这种方式与传统的通过调试器来跟踪代码的方式进行了对比,总结如下:

这两种方式的一个主要差别在于进行调试后,我知道了缺陷在什么地方,但是在精简后,我还有一个针对该缺陷的最小单元测试。这个精简的测试是随着整个过程的进行自然而然产生出来的。

Beck 说他并没有将这种方式看作是对新代码 TDD 开发周期的一个补充或是改变,而是进行缺陷处理的一个工具:

它将成为识别并修复缺陷的方法的核心: 1. 通过一个系统级测试来重现缺陷。
2. Squeeze。
3. 让这两个测试都能通过。
4. 分析并排除缺陷的根源。

请阅读这篇文章来看看在一个实际的例子中这会是什么样子的,同时更多的了解Beck 对这种技术能力的看法并掌握Eclipse 的内联功能。

你觉得这种方式会将你从调试器中解脱出来么?你认为这种方法有风险么?你用什么办法来处理类似的事情呢,或者同时还采取不同的方式?如果有的话,欢迎大家的讨论。

查看英文原文: Forget Your Debugger, Use The “Saff Squeeze”

2008-11-29 22:54497
用户头像

发布了 88 篇内容, 共 262.1 次阅读, 收获喜欢 8 次。

关注

评论

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

元宇宙Gamefi链游系统开发实现技术原理介绍

V\TG【ch3nguang】

元宇宙Gamefi链游系统开发

强大的工具箱软件Parallels Toolbox for mac激活版

Mac相关知识分享

Mac专用解压缩软件Keka for Mac

Mac相关知识分享

压缩软件

静态IP和动态IP哪个好?怎么选择?

Ogcloud

IP 静态IP 动态IP 海外原生IP 海外IP

代理IP在跨境出海业务中的应用

IPIDEA全球HTTP

代理IP 跨境电商 出海

通义灵码:AI 研发趋势与效果提升实践丨SDCon 全球软件技术大会演讲全文整理

阿里巴巴云原生

阿里云 AI 云原生 通义灵码

实用的英语学习工具Eudic欧路词典 for Mac激活版

Mac相关知识分享

Mac软件 英语学习工具

云原生监控的未来:观测云与 Prometheus 的融合

可观测技术

Promethues 云原生监控

五大联赛在即,能否用贝叶斯来预测足球比赛

Geek_a17c4b

AI 数据集 足球 贝叶斯算法

中大型集团数字化转型常用软件,电子签章领域契约锁领先行业

Geek_2a38d5

AI 机器人对家长培育孩子好性格有帮助吗?——数业智能心大陆给出答案

心大陆多智能体

育儿 智能体 AI大模型 心理健康 数字心理

GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 开发语言

百万级超长序列大模型训练如何加速,硬核解读MindSpeed方案

华为云开发者联盟

大模型 #人工智能 企业号 8 月 PK 榜 企业号2024年8月PK榜

通义灵码:AI 研发趋势与效果提升实践丨SDCon 全球软件技术大会演讲全文整理

阿里云云效

阿里云 云原生 通义灵码

3D 粒子系统插件Trapcode Particular for Mac激活版

Mac相关知识分享

Python使用asyncio包实现异步编程方式

我再BUG界嘎嘎乱杀

Python 编程 后端 异步编程 开发语言

三维构建软件Rhino 8 for Mac 中文激活版

Mac相关知识分享

三维 Mac软件 软件下载

DBeaver 24.1.4版本发布,原生支持GaussDB!

华为云开发者联盟

数据库 企业号 8 月 PK 榜 企业号2024年8月PK榜

2024 中国开发者调查报告出炉:通义灵码是开发者最常用的 AI 编码辅助工具

阿里巴巴云原生

阿里云 云原生 通义灵码

观测云的自动化监控:CRD 资源与自动发现

可观测技术

自动化运维

业务流程的数字化转型:观测云的实践与挑战

可观测技术

业务监控

重塑精准营销新纪元:深度解析拍立淘API与用户画像构建的融合之道

代码忍者

API Explorer API 接口 API 测试

Python数据分析:数据可视化(Matplotlib、Seaborn)

我再BUG界嘎嘎乱杀

Python 编程 数据分析 后端 数据可视化

IM即时通讯系统开发规则详细/案例设计/功能需求/源码步骤

V\TG【ch3nguang】

跨部门协作:观测云在促进业务与技术团队合作中的作用

可观测技术

团队协作

淘宝商品描述API:深度解析HTML格式内容的策略与技巧

代码忍者

API 接口 API 测试

团队协作的秘密武器:2024年顶级7款工具

爱吃小舅的鱼

团队协作工具

EZ先享官奔赴海外 见证马自达百年造车基因传承

Geek_2d6073

2024 中国开发者调查报告出炉:通义灵码是开发者最常用的 AI 编码辅助工具

阿里云云效

阿里云 云原生 通义灵码

技术架构革新:观测云的 Agent 模型解析

可观测技术

架构设计 数据采集

科大讯飞学习机c10s和p30怎么选

妙龙

科大讯飞 学习机

忘掉调试器吧,来使用“Saff Squeeze”_Java_Mike Bria_InfoQ精选文章