【问题标题】:Should unit tests cover stress testing?单元测试应该涵盖压力测试吗?
【发布时间】:2010-08-09 06:01:56
【问题描述】:

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

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

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

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

有什么建议吗?

【问题讨论】:

    标签: unit-testing testing


    【解决方案1】:

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

    • 第一个是单元测试,它将检查您的函数是否可以接受要求所要求的最大输入数。如果此处未指定任何内容,请向分析师寻求澄清。像这样动态生成的请求在之后调试起来很麻烦。
    • 第二个是压力测试。但它不应该在你的代码的这个特定部分上执行,而应该在你将使用它的集成部分上执行。如果您开始对单元块进行压力测试,那么您最终会进行过早的优化,因为您会失去全局并开始假设这将如何协同工作,而不是观察它实际上是如何工作的。

    【讨论】:

      【解决方案2】:

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

      1. 准确度测试
      2. 失败测试
      3. 压力测试

      如果您不想在每次运行其他测试时都运行压力测试,您可以考虑将压力测试分组到单独的文本夹具中。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 2014-05-31
          相关资源
          最近更新 更多