当前位置:  开发笔记 > 后端 > 正文

TDD的限制是什么?

如何解决《TDD的限制是什么?》经验,为你挑选了2个好方法。

我刚刚发现我喜欢以TDD的方式开发代码:我觉得我对开发的方向有了更多的控制.在我花费大量时间预先设计数据结构和算法之前,现在我从小开始,有机地"增长"我的代码.在每个红色/绿色/重构循环后,我都有代码可以执行某些操作.感觉我的代码是一个有生命的东西,我指导它应该在哪里成长.我不知道每个人进入TDD时的感受是否如此,但这是我的经验.令我感到震惊的是,这与成功而非设计的自由软件项目的成功程度非常相似.

但是,现在我已经开始考虑测试驱动的开发,我开始想知道它的极限是什么.它似乎对开发功能代码非常有用:将此输入提供给该函数,您就会得到这个结果.但这只是软件开发的一小部分.那么GUI开发,网络,数据库开发,Web应用程序呢?你有什么经历?您是否尝试过使用这些类型的开发TDD?你知道任何工具或框架吗?你能推荐一些文章或书籍吗?



1> S.Lott..:

"GUI开发,网络,数据库开发,Web应用程序怎么样?"

为什么它不起作用?

GUI.TDD唯一不能做的就是评估界面的"外观".但它可以评估行为.如果您的设计很好(分离模型,视图和控制),您可以轻松地将控件和模型作为TDD进行测试.但是,查看更难以编写测试.("断言按钮位于字段下方"是不明智的.)

网络.不确定这意味着什么.但是,通过TDD完成定义RESTful Web服务非常好.定义URI,编写测试用例,然后构建提供预期响应的服务.

Web应用程序.Django Web框架直接支持TDD进行开发.他们对Web数据模型和控制层进行了单元测试.此外,他们还对HTML页面呈现和行为进行了单元测试.



2> Jon Limjap..:

我想知道你的TDD使用的框架/语言,如果你还没有找到困难的最明显部分:

GUIs - 某些环境和平台,特别是Windows Forms和ASP.NET Web表单,存在实际的不可测试性,因为没有简单的方法来隔离或模拟它们的行为.这是ASP.NET MVC的主要驱动力之一.

持久性 - 任何类型的持久性,无论是磁盘存储,数据库连接,网络连接还是其他形式的外部系统都是一种限制,因为它们都是持久性测试,过于依赖于状态.外部组件成功.然后,这些集成测试被认为是脆弱的测试.模拟用于减轻此类外部系统的影响.

采用 - 即使你精通TDD,试图让其他开发人员 - 更不用说整个开发商店 - 使用它也是一场艰苦的战斗.许多人只是没有看到好处; 最初的陡峭学习和生产力曲线很容易将它们关闭.您将遇到这样的情况:您是唯一一个在您的项目中练习TDD的人,即使您执行它,其他开发人员也会引入低质量,无意义的测试.这种非技术性原因是我在现实生产系统中使用TDD的最大障碍,当您充分意识到这些优势时,这是一个痛苦的实现.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有