单元测试应该包括压力测试吗?

时间:2010-08-09 06:01:56

标签: unit-testing testing

我想知道你们是否有任何好的阅读来考虑将什么归类为单元测试/验收/集成测试。我有以下情况,如果它应该在单元测试中,我们正在进行一些辩论:

在我们的数据访问层中,一些语句使用sql,例如“select * from id where id('x','y'),其中IN语句是根据输入动态生成的。最近我们发现了我们的Oracle数据库在IN语句中限制了1000个变量。

我个人认为这不是一个单元测试场景。我们测试sql是否在单元测试中对数据库起作用,以及逻辑是否正确。但是,压力测试应该在更高的层次上进行。

如果我们要在单元测试中使用1000个记录进行测试,我们需要每次使用大量记录填充数据库,这可能效率低下。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

关于您的特定示例,您实际上应该考虑对其进行2次测试:

  • 第一个是单元测试,将检查您的函数是否可以接受要求所请求的最大输入数。如果没有指定,请向分析师说明。之后动态生成的请求很难调试。
  • 第二个是压力测试。但它不应该在代码的这个特定部分上执行,而是在将使用它的集成部分上执行。如果你开始进行压力测试单元块,你最终会进行过早的优化,因为你将失去大局并开始假设它将如何工作而不是观察它是如何实现的。

答案 1 :(得分:2)

我认为压力测试应该作为单元测试的一部分来实现。通常,您的单元测试应包含

  1. 准确性测试
  2. 失败测试
  3. 压力测试
  4. 如果您不希望每次运行其他测试时都运行压力测试,则可以考虑将压力测试分组到单独的文本夹具中。

答案 2 :(得分:2)

单元测试应测试并指定被测单元的功能。在这种情况下,您正在测试数据库,而不是单元,所以我认为这个测试实际上是一个单元测试。

一个单元应该独立于它正在使用的数据库,如果你正在测试一个单元与特定数据库交互的方式,那么它对我来说似乎是一个集成测试