财务公司网站开发源码,高端网站建设企业公司,wordpress如何设置语言,房地产网站建设存在问题Rails 大神、创始人 David Heinemeier Hansson 曾发文抨击TDD。 TDD is dead. Long live testing. (DHH) 此后, Kent Beck、Martin Fowler、David Hansson 三人就这个观点还举行了系列对话#xff08;辩论#xff09; Is TDD Dead? 笔者作为一个多年在软件测试领域摸索的人辩论 Is TDD Dead? 笔者作为一个多年在软件测试领域摸索的人其实更多是跟同行们澄清 TDD并不是测试活动“TDD是开发活动” TDD这里的“测试”和我们正常理解的软件测试并不是一个东西。
倒是很少认真思考过 TDD 本身的价值在哪是不是真的有用。
这里就谈谈自己的理解 1. TDD本身是一个开发实践
或者说是一种产品设计实践准确说应该是对应软件的详细设计。
思路其实就是先根据需求将需求拆分到足够细。在代码实现之前传统的研发流程中会有详细设计到伪代码这个层级。TDD其实起到的是类似的目的只是方式上变成先思考这个需求拆分到方法级别后方法对应的产出是什么方法到达到什么目的。思考的结果就是先完成这里的Test对应的其实是单元测试。
在有了各种路径和场景的Test之后再编写代码让这些测试通过这样其实就完成了功能的实现。
这样带来的好处是因为测试已经包含了需要的逻辑这样就便于产品的不断迭代、重构只要测试能够通过就不会担心因为修改导致功能的不可用。会为产品的不断优化提供保障。
理论上听起来不错而且似乎也受到行业的广泛推崇。不TDD似乎就落伍了 2. TDD在现实中并不成功
作为多年的测试工程师视角也参与过大量软件项目其中不乏很多项目重点推行TDD的实践并引入咨询师进行指导。但就我的个人观察没有成功的。也没有一线的开发人员能真正地坚持TDD大部分实践TDD的项目最终也就不了了之。
结合题主给出的线索这里的答案可能就是 “TDD已死”或者就我个人的体会TDD是一个理想化的产物在实际实践中放到复杂的产品需求和团队合作中很难把理想落地并发挥它预期的作用。题外话敏捷项目实践也有点类似理想化的产物 3. 为什么TDD难以真正落地
1ROI不高。要达到TDD的目的测试代码会是实现代码的数倍在软件项目大部分都是进度、资源稀缺的情况下按理想情况去投入TDD并不现实。
2 更多是只从最小的方法层面去覆盖。即便足够高的单元测试覆盖依然会有集成测试、系统测试的场景遗漏集成测试、系统测试依然不可或缺。TDD本身对质量的保障作用不明显。这也是为什么我说TDD更多是设计实践不是测试实践是开发活动不是测试活动
3方法层面进行测试覆盖必然牵涉到大量依赖Mock而mock本身其实就潜在数据、场景和实际有偏差的风险。
4开发工程师的思维模式其实更趋向追求确定性而测试的思维模式是需要基于各种不确定性去发现测试路径。开发和测试这两种活动先天上是比较对立的。一定要让一个角色去同时完成这两种活动有点勉为其难。 所以我的看法确实 TDD已死或者说 TDD 本身就是先天难产