联系:
想成为所有管理者争夺的高端开发者吗?想成为带领公司中最好的团队的经理吗?康美国帮助您将软件开发技能或开发人员的管理技巧提升到新的高度,并提供一些有见地见解的建议。
通过邮件跟我联系,康美国将发给您免费的视频,文章和工作表。有时候我会给您发送关于低成本的学习产品,例如电子邮件课程,书籍以及在线研讨会:http://agilenoir.biz/zh/敏捷理念/
017 不受架构师青睐的微测试
欢迎在康美国的微店查看这一集的播客注释:https://weidian.com/s/161651986
解说:Vanilla Pop个人在运用TDD有一些新的突破,他已经开始在代码里实施了。问题是,有些和他一起工作的同事不太理解他的新方法。
(A knock. Architect says “enter”. Door closes)
(敲了一下门。架构师说了声“请进“。之后门就关上了。)
架构师:我请你来我办公室讨论你的项目。
VPop:哦,是的。有什么没弄好的地方吗?
架构师:我正在审阅你提交的代码,觉得有几处情况。你有变动这些代码的项目编号吗?
VPop:是的,当然有。我写在提交代码的注释里了。
架构师:但是……你的代码里面到处都是变动呢。
啊,你看看,我们有好几个新文件:聚集测试、记录测试和比率测试。你增加了自动测试功能,很漂亮,我很喜欢。但是,项目555439的功能只针对比率文件。你有看过这段代码注释吗?这段注释写得很好,用直白的语言清晰地表达了这些代码的用途。
Pop:那是那是,但——
架构师:你只需要变动一个文件,但是你动了三个,并且还新增了三个测试。其实我不是抱怨新增的这些测试。但你确实不应该变动其它的代码。
Pop:好的,明白——
架构师:毕竟变动越多,漏洞就会越多。我的意思是只动记录这个文件。
Pop:在比率执行的时候,会调用记录。记录会打开网络连接,这样会将我的微测试减缓大约10,000倍。
架构师:当真如此?
Pop:确实这样。通常记录会与一个服务通讯。所以它会等待网络超时,这样测试会花费超过一分钟,而不是一毫秒。所以我才重写了记录,以便它可以利用缓存的内容。我使用TDD方法来重写了代码,所以会多出一个记录测试文件。
架构师:是这样的呢,开始你都没告诉我。那另外的这个类呢?
Pop:它也需要重写——
架构师:重写?
Pop:没错。这样才能改变代码的设计,又不影响它的行为。只有动了其它的几个类,才能确保将Rater同微测试不应该执行的一些操作分开,比如写入数据库、文件系统或者网络这些。
架构师:别忙!意思是你没有写一段整体的系统测试,而是通过额外的代码变动来实现了这一系列微测试,是吗?
VPop:这些微测试执行得很快很快,而且你知道吗,当微测试发现错误时,也就应该知道了有问题的代码大概是在哪里。
架构师:但是一个系统测试可以覆盖数千个微测试。我想要的并不是这些……我其实是希望测试整个系统(想想关于系统的那段话)!
解说:偏见是影响采用TDD的一个很重要的因素。架构师习惯了全面宏观的思维,过于偏好全面的系统测试。VPop不应该放弃,但是他需要意识到,改变架构师的这一偏见,需要时间和实际经历、体验的过程。才开始的话,方法之一,就是把“敏捷思维”第1到第8集的链接发给他,也就是我们的“测试金字塔”系列。这种类型的全局思维,也正是架构师的全局性偏见。
完整版本1:
你喜欢读悬疑书吗,一本关于敏捷思维的悬疑书?《黑色敏捷书》非常有意思,依靠戏剧性的故事讲述,教会你敏捷思维。欢迎在康美国的微店查看这一集的播客注释:https://weidian.com/s/161651986