【问题标题】:Introducing Test Driven Development in PHP介绍 PHP 中的测试驱动开发
【发布时间】:2010-10-26 16:32:57
【问题描述】:

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

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

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

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

对不起,如果这个问题太开放了。

【问题讨论】:

    标签: php testing process tdd testing-strategies


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      让编写测试简单并且结果可见

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】: