【问题标题】:How to speed up integration tests using SQL Server Dev Edition如何使用 SQL Server Dev Edition 加速集成测试
【发布时间】:2013-03-23 00:56:55
【问题描述】:

我们有一套用 C# 和 C++ 开发并使用 SQL Server 作为后端的应用程序。集成测试是使用 NUnit 开发的,运行时间超过两分钟。为了加快集成测试,我们使用了以下方法:

  • 测试在同一工作站上运行,因此没有网络延迟
  • 测试数据库在 DataRam RAM Disk 上创建,速度很快
  • 测试夹具并行运行,目前一次最多四个
  • 大多数测试数据都是使用表值参数批量加载的。

还可以做些什么来加快自动化集成测试?

【问题讨论】:

  • 我认为没有办法回答这个问题。测试就是代码,所以这个问题是问“我怎样才能让我的代码运行得更快?”显然,这个问题没有简单的答案。如果您可以确定占用大部分时间的几个测试,或者如果您观察和测量了特定的性能问题,那么如果您可以发布一些代码以及可能的执行计划,那么有人可能会提供帮助。您是否对测试执行进行了概要分析以了解时间的去向?根据您的测试内容和数量,2 分钟可能会很好。
  • 是的,我的测试需要 15 分钟才能完成!

标签: sql-server-2008 unit-testing c#-4.0 nunit resharper


【解决方案1】:

我不喜欢这个答案,因为它是错误的,所以少写集成测试。我们的应用程序数据量很大。我们的大部分代码都是围绕数据的逻辑。因此,如果没有集成测试,我们只有微不足道的单元测试(我认为仍然应该编写)。

我们的集成测试运行 1 小时。成千上万的测试。他们给我们带来了巨大的价值。

我认为您应该分析缓慢的测试以及它们为何缓慢。查看多个测试是否可以重用数据,而无需从头开始删除和重新创建它。 将测试划分为多个区域,这样您就不必总是运行每个测试。 使用现有的数据库快照而不是重新创建数据库。

【讨论】:

    【解决方案2】:

    我知道这个问题非常非常古老,但无论如何我都会发布我的答案。

    这听起来可能很愚蠢,但是:少写集成测试,多写单元测试。仅在您的应用程序边界进行集成测试(如“当您将控制权传递给您不拥有的代码时”)。

    我对此的看法受到J.B. Reinsberger 的启发。如果你愿意,你可以听听他就这个话题发表的演讲。他比我更能解释这一点。这是视频的链接:

    http://vimeo.com/80533536

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多