我应该如何组织我的单位和整合测试?

时间:2012-10-10 16:10:54

标签: unit-testing node.js integration-testing

我正在研究什么会变成一个基于node.js的大型javascript应用程序,并开始考虑如何组织我的测试。
该应用程序基本上是一个REST API,因此请求经过身份验证,用户提交的数据经过验证,然后保存在数据库中。

我对如何组织这种规模的项目的测试完全不熟悉。

我应该从模块化单元测试开始单独测试每个资源,以全面集成测试结束吗? 或者我应该逐层测试 - 即身份验证,验证,持久性和每个资源单独集成?

什么是常识?

1 个答案:

答案 0 :(得分:3)

没有正确或错误的测试方式。重要的是要进行有意义的测试以增加价值。有一些测试比没有任何东西更好。

我的方法是为我正在处理的东西编写测试而不区分单元和集成测试。因此,如果我正在处理REST服务,那么我将编写REST服务的测试。如果我正在进行身份验证,持久性,那么我将编写用于身份验证,持久性的测试。

编写测试也很重要,这些测试还可以设置和管理测试所需的测试数据。这很重要,任何人都可以执行您的测试。在开箱即用的Continuous Integration环境中执行测试也很重要。

测试您修复的每个缺陷

如果我正在处理缺陷,那么我将编写失败的测试,即重现缺陷,然后在我的代码修复后验证我的测试是否通过。在我看来,这是最重要的事情。正如这些测试验证一旦修复后的问题保持不变。

重构代码

当您进行一些代码重构时,您编写的所有测试的值变得非常方便。如果您的重构代码未通过现有测试,则您的重构代码将被破坏,需要修复,直到您所有现有测试通过为止。

当你没有时间时

如果由于时间不足或其他原因必须在测试类型之间进行选择,那么编写更广泛的测试或端到端测试或集成测试会给这些测试提供最大的价值,因为这些测试可以进行身份​​验证,持久性等直接或间接地。将此与持久性的单元测试相比较,您可以从集成测试中获得更多,因为集成测试将间接测试您的持久性。