在PHP中引入测试驱动开发

时间:2009-05-16 06:32:20

标签: php testing process tdd testing-strategies

我的工作场所由很多牛仔编码员组成。他们中的许多人都是初级。这恰巧导致了很多代码质量问题。

我正在寻找关于如何最好地减少我的团队使用TDD的建议(我们可以从单元测试开始,然后进入回归测试,然后进行更多自动化测试)。

最终,我希望我们能够更快地从错误中学习,并生成更好的代码并培养更好的开发人员。

我希望有一些关于如何将TDD引入团队的实用建议。具体来说,最好在LAMP(php)堆栈中选择哪些工具。

很抱歉,如果这个问题太开放了。

5 个答案:

答案 0 :(得分:4)

现在经历了四次这个过程之后,我发现如果没有一定程度的执行,任何TDD的引入都会失败。程序员不想切换样式,也不会写第一次单元测试,突然看到了光。

您可以在管理级别强制执行,但这对所有相关人员来说都非常耗时。无论如何,这在某种程度上是必要的,但最终你需要自动执行。答案是引入持续集成。

我发现CI服务器是任何TDD环境的终极基石。除非开发人员知道如果他们不编写测试会发生不好的事情,否则你总会让牛仔队觉得它们在他们之下。

答案 1 :(得分:2)

使编写测试轻松,结果可见

  • 使用具有良好文档的TestFramework。比如SimpleTest
  • 如果测试依赖于数据库内容,请创建一个将在脚本开头删除并创建的参考数据库。
  • 创建一个运行所有测试的脚本,并在独立的监视器上显示结果,或者使测试可见/易于访问的内容。 (不能选择运行命令提示符)

我个人不会为应用程序中的每一块代码编写测试 专注于应用程序中的域对象。在我的情况下,这些是“价格计算”和“库存变化”

提醒他们他们可能已经在编写测试,但他们在创建后就删除了他们的工作。 示例:在开发函数期间,您将有一个页面/ testscript,其中包含 echo var_dump ()结果。手动验证结果后,您将修改该功能的参数并再次检查。

通过一些额外的努力,这些测试可以在UnitTest中自动化。哪个程序员不喜欢自动化东西?

答案 2 :(得分:0)

关于团队问题以及关于软件开发和测试的普遍想法,我建议Joel Spolski的网站和书籍:http://joelonsoftware.com/我从他那里得到了很多见解。

答案 3 :(得分:0)

SimpleTest - 优秀的php测试文档和解释

答案 4 :(得分:0)

启动TDD的另一种方法是尝试使用PHP框架。没有框架,很难有效地实施单元测试。