【问题标题】:retroactive phpUnit testing: is it worth it?追溯 phpUnit 测试:值得吗?
【发布时间】:2016-11-10 09:13:42
【问题描述】:

我们内部开发了大约七个不同的网站。它们是跟踪不同 HR 应用程序并帮助我们的一些人通过调度完成工作的网站。今天,首席软件设计师告诉我开始使用 phpUnit 为我们现有的代码编写测试用例。我们的主网站至少有一百万行代码,其他网站都是它的分支,可能在几万到几十万行。

这些代码都不是通过任何明显的设计方法编写的。我们是否值得真正回顾所有代码并对其应用 phpUnit 测试?我觉得如果我们想这样做,我们可能应该从一开始就这样做。另外,如果我们确实决定开始进行这个单元测试,我们不应该从这里开始采用 TDD 吗?我知道这不是一个优先事项。

tl;dr:有人告诉我要为现有代码编写发布后测试用例,但我知道现有代码和未来代码尚未/不会在考虑 TDD 原则的情况下创建。这值得么?可行吗?

【问题讨论】:

    标签: php unit-testing phpunit tdd


    【解决方案1】:

    您还更改代码吗?然后,您将从编写测试中受益。

    更难的问题是:首先要测试什么?一种可能的答案是:在更改之前测试您将要更改的代码。

    您无法在编写代码多年后对其进行测试。这可能会花费太多时间和金钱来为您的公司带来收益。

    此外,“从 PHPUnit 开始”非常困难,这种方法的好处在最初的几个月或几年内可能不是那么好,因为您仍然会测试非常小的代码单元而无法还要检查整个系统是否正常工作。您还应该从使用虚拟浏览器的端到端测试开始,该浏览器在您的页面上“单击”并期望显示一些文本。搜索关键字将是“Selenium”或“Behat”。

    我知道现有的代码和未来的代码没有/不会在考虑 TDD 原则的情况下创建

    这是所有开发者的态度问题,未来会发生什么。对于没有测试的现有代码,它们可能永远不会发生。由不情愿的开发人员编写的新代码也不会被测试。但有意愿的开发人员可以有所作为。

    请注意,这不仅仅需要首席软件设计师告诉团队开始测试。如果您以前没有这样做过,并且没有持续运行这些测试以确保它们仍然有效的基础架构,那么您将必须接受指导并需要适当的专业帮助。设置这一切意味着相当大的努力,如果首席软件设计师或任何更高级别的老板准备在这方面花费时间和金钱,您应该认为自己非常高兴,因为您可以学到一些东西并构建更可靠的软件。

    如果不是这样,这种方法很可能会因为被动攻击性拒绝而失败。

    【讨论】:

      【解决方案2】:

      当您想要重构或重写代码时,自动化测试是一个非常好的主意。如果你有一个函数或类的 PHPUnit 测试,你可以重写代码,然后使用测试确认代码仍然像以前一样运行。否则,当你重构或重写东西时,你最终可能会破坏代码的其他部分。

      【讨论】:

        【解决方案3】:

        您可能无法以当前形式测试代码。这不仅仅是对一些拙劣的代码进行测试,因为这些代码可能无法测试。

        为了能够编写测试,您可能需要重构代码。根据代码的质量,它可能意味着完全重写它。

        我建议只测试代码的新增内容。因此,如果您需要类中的新方法或新函数或其他任何内容,则必须对其进行测试。就我个人而言,我更喜欢 TDD,但对于刚开始测试的人来说,即使在重构代码之前,让他们思考测试也可能太过分了。所以你可以坚持以后测试。

        为了测试新增功能,您需要对现有代码进行一些重构。例如,如果您添加一个记录信息的方法,则应注入记录器以允许对其进行存根。所以你应该写一些容器。现在这并不意味着在使用记录器的任何地方都必须注入它。就在您要添加或更改某些内容并且必须进行测试的地方。这可能会变得非常棘手,需要精通测试的人来协助。

        简而言之,我的建议是:

        • 仅测试新增内容和新代码
        • 重构代码以确保被测代码确实是可测试的
        • 看看测试是否能给人信心,是否值得努力并继续前进

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-11
          • 1970-01-01
          • 1970-01-01
          • 2021-01-07
          • 1970-01-01
          • 2011-05-16
          • 1970-01-01
          • 2023-02-09
          相关资源
          最近更新 更多