作为专业开发人员,不接受编写单元测试是否可以接受?

时间:2012-08-05 12:42:54

标签: unit-testing testing tdd automated-tests

只是想知道TDD /自动化单元测试的优缺点,并寻找社区关于专业开发人员是否可以在不支持单元测试的情况下编写应用程序的观点?

重新询问程序员:https://softwareengineering.stackexchange.com/questions/159572/is-it-acceptable-as-a-professional-developer-not-to-write-unit-tests

3 个答案:

答案 0 :(得分:2)

我打赌我会得到-1 -ed,但我仍然说:如果你有其他措施来确保质量,包括避免回归,程序验证,程序验证,那么 不。

唯一的问题通常是人们没有任何其他工具而不是单元测试来实现这一目标。

如果您有正式测试的模型(有一个工具,实际测试它,或者它是以确保它有效的方式构建的),并且您已经正式测试了确保实际运行的软件符合该模型的方法模特,那很好。

示例:如果您确定,您在ruby中编写的代码将按照您的预期行事(因为您或其他人测试了ruby解释器并且没有错误,或者您只使用了一个子集已知安全的功能)然后它的罚款。通常,我们以这种方式信任C编译器和CPU。

另外,如果程序只使用一次,则没有回归问题!如果我在bash中编写一个单行代码,它会为我计算一些东西,我可以先在假数据上手动测试它,然后在真实数据上运行它 - 不需要编写自动化测试。

如果你承担责任,你也可以同意假设:我通常认为,日食非常善于创造制定者和吸气者,我不会对这些进行测试。另外,我假设,如果Java 7中的Java的Collection类出现任何问题,那么现在已经证明了这一点。但万一有麻烦,这是你个人的麻烦。不要责怪任何人。

就个人而言,我很少在某些代码上使用单元测试,因为我正在测试它们,而它们仍然是一张纸上的流程图​​,我确保我只使用已知可以在其中工作的语言/库的子集。的情况。此外,如果没有同行评审,我绝不会让代码出来。不过,如果有人对他们进行验收测试,有时会更好......

答案 1 :(得分:1)

由你决定。这个问题本质上更具哲学性。

单元测试只是一种帮助您的工具。您可以选择忽略它们。但是,如果您打算开展一个非常简单的项目,我会建议您使用单元测试。

是的,他们也花时间写作。但是如果有任何重构或者代码的某些部分需要更改,最终你会节省很多。

答案 2 :(得分:1)

一如既往:这取决于。

一般来说,单元测试是一件好事:它们会捕获一大堆错误,它们会验证代码的特定部分在特定情况下是否按预期工作,并且当出现问题时,它们可以更轻松地跟踪错误。因此,除非你有充分的理由不这样做,否则你应该编写单元测试。

不写单元测试的好理由包括:

  • 对结构严重且难以测试的代码库进行相对较小的更改(通常,原因是关注点几乎没有分离,并且如果不对代码库本身进行侵入式更改,则无法将可测试单元隔离进行测试)
  • 问题域的本质使代码本身不可测试。这很少见,但它确实发生了 - 例如,很难为绘制GUI的例程提出有意义的单元测试:你必须将它渲染到一个模拟的表面,然后检查单个像素,但是你还必须模拟影响布局决策的所有参数等;虽然这在理论上是可行的,但通常不值得付出努力,在这种情况下应该选择手动或半自动测试。
  • 这个项目是一个小小的一次性程序,具有如此小的范围和如此短的生命周期,从单元测试中获得的好处(增加的可维护性,降低的复杂性)是微不足道的。但请记住,软件的使用寿命往往比设计的长,并且您的一次性一次性脚本最终可能最终成为公司流程中关键任务的一部分。