Unit testing 如何测试自己编写的代码?

Unit testing 如何测试自己编写的代码?,unit-testing,testing,Unit Testing,Testing,如何有效地测试您编写的代码?我发现对我为我的站点编写的代码进行老虎测试非常困难,因为我的一部分人觉得我不想在代码中发现bug,因为这表明我并不完美。(即使写下我可能并不完美,也会让我有一点烦恼。) 我相信单元测试,但最近我变得有点像个枪手,从一开始就将大量代码部署到生产中(这对一家新的网络初创公司来说并不总是坏事,但通常是坏事) 在过去的几周里,我被我自己测试得到的严重错误所咬。我有一个合作伙伴,我推动他对我自己的代码进行黑盒测试,但由于我对实现细节的了解,我确实应该是使用白盒测试测试代码弱点的

如何有效地测试您编写的代码?我发现对我为我的站点编写的代码进行老虎测试非常困难,因为我的一部分人觉得我不想在代码中发现bug,因为这表明我并不完美。(即使写下我可能并不完美,也会让我有一点烦恼。)

我相信单元测试,但最近我变得有点像个枪手,从一开始就将大量代码部署到生产中(这对一家新的网络初创公司来说并不总是坏事,但通常是坏事)

在过去的几周里,我被我自己测试得到的严重错误所咬。我有一个合作伙伴,我推动他对我自己的代码进行黑盒测试,但由于我对实现细节的了解,我确实应该是使用白盒测试测试代码弱点的最佳人选


那么,有哪些方法和工具可以帮助您测试自己编写的代码呢?

在编写代码之前编写测试会有所帮助,因为我可以思考(不考虑实现中的偏见)在各种情况下代码的行为应该是什么

我已经开始为所有超过20行代码的个人项目在编写代码之前编写单元测试。这很有帮助

现在,当人们说他们讨厌单元测试和TDD时,我总是感到惊讶。

好了,开始吧

  • 你并不完美。我并不完美。没有人是完美的。所以不要担心暴露错误。你越是发现自己,而不是让别人为你发现自己,你就越接近完美

  • 养成在编写代码之前编写测试的习惯。定义代码应该如何处理一组有意义的测试,然后编写代码以使测试通过。然后重构——经典的TDD

  • 如果有bug,那么立即编写一个暴露bug的测试(即应该通过,但由于bug而失败)。然后让测试通过,您就修复了错误


  • 首先,您应该注意输入的所有可能性,然后您必须使用所有可能性进行测试。你可以找到我们的bug,它会清除很多bug。我只是用这种方式,到目前为止,我不知道要总结的工具是什么:

    TDD:

  • 在编写代码之前,编写一个单元测试以接收输入并检查输出
  • 编写代码只是为了让单元测试通过——不多不少
  • 对正在使用的每个方法重复此步骤
  • 回归:

  • 每次提交更改/功能/修复时,都要运行所有的单元测试
  • 对于每个失败的单元测试,请转到BUG FIX
  • 错误修复:

  • 每次发现bug时,编写一个单元测试来揭示bug
  • 实施导致单元测试通过的修复程序
  • 功能测试:

  • 找到一个合适的功能测试框架(例如用于web测试)
  • 创建一些测试,帮助您练习应用程序的端到端功能
  • 使用回归和BUG修复过程查找和修复测试
  • 如果您使用TDD,您可以编写测试代码,将其遗忘一周,然后编写生产性代码。因此,您将重新思考您的方法是否正确
  • 避免尴尬。如果您在代码中发现错误并能够修复,没有人可以指责您编写了错误代码

  • 我想补充一点,在所有这些之前写接口和它的文档…好的一点,尽管我会犹豫在之前写太多文档。界面发生了变化,测试也相应地更新了,但保持文档更新通常是第一个失败的任务之一。您似乎暗示回归中的每个测试失败都会导致BUG FIX中的新测试用例。如果回归测试失败,则是在BUG FIX过程或TDD过程中创建的测试用例。