锁定老帖子 主题:困惑 Test'(noun)'
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-25
sean 写道 sure, 这是TDD时的基本步骤.toafu, 我想你是误解我的意思了, 我并没有反对这些基本步骤有什么不对(我平时也是这么做的), 我们现在讨论的是在测试代码可以编译之后(也就是写完实现代码的stub后), 我们要不要运行测试,看它是fail还是成功, 还是直接去写实现代码. 请注意,我说的下列情况都是指测试编译之后(不要再误解了:)). 我也并没说gigix一定是错误, 我只是觉得他太绝对了.我觉得有时候我们能肯定测试代码一定会失败,这时我可以去直接写实现代码.有时我们为了试验一些想法, 我们想让计算机告诉我们结果;有时运行测试看我们的测试是不是写错了, 这些时候我觉得先运行测试是有益的. OK,按我的理解,你现在是在怀疑书里的那句话,是吗? gigix翻译了大概的意思了,就是因为测试是刚写出来的,功能代码还没有,肯定会测试不过的,因为明知测试会不过为什么还要浪费时间去运行测试呢,直接去写功能代码好了。 原书的英文版我没看过,但我想应该是这个意思,意思并不复杂,也许你是想确认乃至相信书中说的每一句话了。但是毕竟每个人理解不一样,测试先行的细节实现也不尽相同,但是目标一直就可以了。 写测试代码和功能代码应该是互相切换的过程,正如你所说,功能代码stub出来了也许这是测试能通过,但是换个测试条件又不会通过了,所以再需要完善功能代码,这样互相切换编码的过程,最后应该就是测试的方面够全了,功能代码也完善了。不知这下我有没有误解你的意思了? 我的测试驱动经验肯定不如你的丰富,但是我理解测试先行也就是在设计。 谢谢。 |
|
返回顶楼 | |
发表时间:2006-01-25
第一个问题,这个我也不明白
第二个问题,我认为应该是作者的失误 |
|
返回顶楼 | |
发表时间:2006-01-25
sean 写道 四个月前刚刚读过TDD By Example, 这两天打算重温一下.读到25章 Test-Driven Development Patterns 有一节
叫做 Test'(noun)', 怎么读也搞不懂作者在说什么, 总的感觉kent像是在说测试本身是一个名词, 而不是动词. 作者接着用Wenberg的反馈图来说明: 当压力越大, 越频繁的运行测试, 越频繁的运行测试, 犯错误的机会越少, 压力就越少. 不明白的地方主要有: 1.wenberg的反馈图怎么就证明Test是名词而不是动词呢?作者真正想用test'(noun)'来表达什么呢? 2.还有这么一句话"Should you run the test after you write it, even though you know it's going to fail?" No, don't bother 接着作者举了一个实现in-memory的transaction的例子来说明上面这句话. 不但上面这句话本身让人搞不懂, 看了例子之后,更加迷惑. 不知道有没有人读过这本书, 真正理解作者在说什么? 1. 之所以提及名词,因为在普通情况下test主要被用于动词情况,指的是执行测试的动作,这里需要明确的是,它不代表是自动化的测试,而作为名词的test,则指的是一个验证(代码)是否可接受的过程,一个可反复自动运行的测试过程。 说到wenberg的反馈图,在开始的例子说明中,图中是有“测试”这个节点的,但是这个测试并不是指的名词的test,而是动词的test,所以带来问题(具体就不翻译过来复述乐),之后作者将其中的“测试”改为“自动化测试”(即作为名词的test)来说明作为名词的test如何为你带来益处。 有关名词和动词的test,书中的: Test is a verb meaning to evaluate.While you may test your changes, testing changes is not the same as having tests. Test is also a noun, a procedure leading to acceptance or rejection. Why does “test” the noun, a procedure that runs automatically(这句主要看“a procedure that runs automatically”这个描述,所以后面的不贴乐) 2. 第二个问题,其实不必纠缠,感觉象说反话(大概自己说多乐的缘故),看最后一句“Okay, I suppose you could go ahead and run that new test if you want to.”就好吧,我还是感觉run一下比较好. |
|
返回顶楼 | |
发表时间:2006-01-25
swing写道:
引用 1. 之所以提及名词,因为在普通情况下test主要被用于动词情况,指的是执行测试的动作,这里需要明确的是,它不代表是自动化的测试,而作为名词的test,则指的是一个验证(代码)是否可接受的过程,一个可反复自动运行的测试过程。 说到wenberg的反馈图,在开始的例子说明中,图中是有“测试”这个节点的,但是这个测试并不是指的名词的test,而是动词的test,所以带来问题(具体就不翻译过来复述乐),之后作者将其中的“测试”改为“自动化测试”(即作为名词的test)来说明作为名词的test如何为你带来益处。 有关名词和动词的test,书中的: Test is a verb meaning to evaluate.While you may test your changes, testing changes is not the same as having tests. Test is also a noun, a procedure leading to acceptance or rejection. Why does “test” the noun, a procedure that runs automatically(这句主要看“a procedure that runs automatically”这个描述,所以后面的不贴乐) 理解很到位!:idea: 引用 2. 第二个问题,其实不必纠缠,感觉象说反话(大概自己说多乐的缘故),看最后一句“Okay, I suppose you could go ahead and run that new test if you want to.”就好吧,我还是感觉run一下比较好. 同意你的观点, 作者有很多的即兴发挥, 确实很难理解! |
|
返回顶楼 | |