Php 尝试测试驱动的开发

Php 尝试测试驱动的开发,php,language-agnostic,tdd,methodology,gtd,Php,Language Agnostic,Tdd,Methodology,Gtd,读了这篇文章后,我觉得自己的处境和问这个问题的人差不多。我喜欢科技,想出新点子来解决现实世界中的问题只会让我的神经元兴奋不已,但等式的另一部分——实际完成事情(快速)——通常是一件很难完成的事情,特别是当我为自己做这件事的时候 有时我对代码有点厌倦,有时我花更多的时间在文本编辑器中移动光标,盯着我的代码,试图想出一个比我已有的更好的解决方案。我听说这是一种叫做完美主义的疾病 我在同一篇文章中读到过(在这里也读过几次),TDD实际上很好停止,但是我从来没有给过TDD机会——要么是因为我懒得学习/设

读了这篇文章后,我觉得自己的处境和问这个问题的人差不多。我喜欢科技,想出新点子来解决现实世界中的问题只会让我的神经元兴奋不已,但等式的另一部分——实际完成事情(快速)——通常是一件很难完成的事情,特别是当我为自己做这件事的时候

有时我对代码有点厌倦,有时我花更多的时间在文本编辑器中移动光标,盯着我的代码,试图想出一个比我已有的更好的解决方案。我听说这是一种叫做完美主义的疾病

我在同一篇文章中读到过(在这里也读过几次),TDD实际上很好停止,但是我从来没有给过TDD机会——要么是因为我懒得学习/设置它,要么是因为我认为我不需要它,因为我可以在头脑中完成所有需要的测试

  • 你也相信TDD实际上有助于GTD吗
  • 关于TDD,我需要知道什么
  • TDD的替代方案是什么
  • 组织/开发TDD web应用程序的最佳方法是什么
  • 我应该使用什么图书馆(如果有的话)来让我的生活更轻松

PS:我在这里主要(但不完全)使用PHP。

我个人认为TDD充其量是过火的,充其量是编程创造性过程的障碍。花在为每个尚未编写的方法/类编写单元测试上的时间最好花在解决原始问题上。尽管如此,我还是一个单元测试的忠实粉丝,并且完全相信它们。如果我有一段特别复杂或麻烦的代码,我非常乐意为一个方法编写20个单元测试,但通常是在我解决了问题之后。TDD和其他编程范例一样,不是万能的。如果是适合你使用它,如果不继续寻找


但请对我的意见持保留态度。一个更有趣的例子来自和。

你也相信TDD确实有助于GTD吗? 我最大的担心就是不能测试代码。太复杂了。我们的核心库不是围绕易于测试的接口构建的。所以我们尽可能地编写测试。最后,我们重构了我们的核心库,使生活变得更轻松。除此之外,这是一种心态的改变,我肯定会考虑在你的第一个TDD项目上分配更多的时间来解决你可能遇到的一些问题。p> 关于TDD,我需要知道什么? TDD不能替代方法论。这是一个有益的补充,或者至少应该是这样。如果做得好,TDD将大大改进软件设计。它还充当您的内部文档。如果您希望有人查看您的API并了解它是如何工作的,他们可以简单地查看您的命名良好的一个已形成的测试

TDD的替代方案如何? 就像我说的,我不认为这是一个方法论的替代品。还有一种选择,就是不使用它:)

组织/开发TDD web应用程序的最佳方法是什么? 我们在scrum/agile方面相当成功,如果你是这么问的话

我应该使用哪些库(如果有的话)来简化我的生活? 我的PHP知识已经过期5年了,我会让其他人回答这个问题


不管怎样,只要我的2美分。如果您想阅读这里的内容,那么这里有一个很好的概述:

我最近开始使用“胖模型瘦控制器”:将尽可能多的代码放入模型(以及视图/控制器之外)

我使用PHPUnit(以及Zend框架对它的支持)在我的web应用程序中只测试一些复杂的模型。编写单元测试来彻底检查执行简单SQL查询的两行函数是浪费时间。在过去的几年里,我越来越懒散地编写测试,对于大多数web应用来说,这并不值得,因为代码太简单了

但在最近的一个项目中(一个电子商务网站,跟踪多个仓库的复合产品库存水平),我开始进行测试先行开发,因为我知道会有很多微妙的复杂性,我不能一下子就记住。让我的思维发展到一定程度的唯一方法就是编写一些测试。对于某些部分,编写类似乎比编写测试更自然,其他部分则是先测试,而其他部分则不需要测试,因为它们很琐碎。TDD是一种工具,而不是一种宗教。当它工作时使用它,如果不工作就停止


我认为TDD的好处在于降低复杂性和提高速度(我解决问题的速度)。如果我写了一些测试来证明我的代码是有效的,那么一旦所有的测试都通过了,我就可以进入下一个问题。这让我重新享受编码的乐趣

你还从事什么工作?我不认为PHP在测试场景中是巨大的,所以这可能会是一场艰苦的战斗。PHP是我最活跃的地方(大约90%),其他10%将不得不使用Python。@Ty,PHPUnit足以启动tdd并获得一些结果。@x2我在搜索后看到了这一点。我已经很长时间没有用PHP编程了,所以我说不出它是好是坏。有些人声称在编写代码之前编写测试可以带来更好的设计(最少的、正确的和可测试的代码片段)。+1为此。。。问题是人类的思维是在一个连续的过程中运作的。它类似于设计用于前进的引擎…TDD是一个反向过程,有效的要求您尝试反向使用仅前进的引擎以采用TDD…“很多”人不会喜欢这样:)