什么样的执行率做你的目标是与您单元的测试(#测试每秒)?多长时间太长为一个单独的单元的测试?

我会有兴趣知道如果人们有任何特定的阈值,用于确定是否他们的测试的速度太慢,或者是正当的摩擦的一个长期运行的测试得到更好的你?

最后,当你做决定的测试需要更快的速度运行,什么方法用于加速你的测试?

注:一体化测试都显然是一个不同的问题。我们是严格说话的单元的测试需要运行为频繁地成为可能。


应分析: 感谢伟大的答复为止。大多数建议似乎是不要担心速度--集中在质量和只是有选择地运行,如果他们是过于缓慢。答案与具体的数字包括瞄准 <10毫升0.5和1第二,每次测试,或只是保持整套常运行测试下,10秒钟。

不确定它是否是权标之一作为"可接受的回答"的时候他们都有帮助:)

有帮助吗?

解决方案

所有单元的测试应在根据第二(这是所有单元的测试结合应该在1秒)。现在我敢肯定,这具有实际的限制,但我已经有一个项目,有1000测试运行这个快在一个笔记本电脑。你真的想这样的速度所以你的开发商不要害怕的重构的一些核心部分的模型(即,让我去拿咖啡,同时我经营这些测试...10分钟后他回来).

这一要求也迫使你的设计应用程序正确。这意味着你域模型为纯净和包含零引用任何类型的持久性(文件I/O、数据库等)。单元测试所有关于测试这些业务relatonships.

现在,这并不意味着你忽略了测试你的数据库,或坚持。但是,这些问题现在是孤立的背后存储库,可以分别进行测试的集成试验,是位于一个单独的项目。运行单位测试不断,当写域代码然后运行的集成试验一次检查。

其他提示

如果我们谈话严格单元的测试,我会的目标是更为完整性比速度。如果运行时间开始造成摩擦,独立的测试成为不同的项目/课程等, 并且只运行测试与什么有关你的工作。我们的集成服务器运行的所有测试签。

我们的目标是100测试。你那里是通过以下迈克尔的羽毛 规则的单元测试.

很重要的一点,来了一个去 CITCON 讨论的是,如果你的测试并不是这个快,很可能你得不到的设计,福利的单元的测试。

我倾向于更多关注阅读我的测试比速度。然而,我还是尽量让他们相当快的.我认为,如果他们运行为毫秒,你的罚款。如果他们运行的第二个或更多的试验...然后你可能会做的事情,应当以最优化。

慢测试仅仅成为一个问题,因为该系统的成熟,并导致建立为需要数小时,在这一点上,你更有可能遇到的问题很多种缓慢的测试而不是一个或2个测试,你可以优化。因此你或许应该注意的时候了,如果你看到许多试验运行数百毫秒的每一个(或更糟糕的是,每秒),而不是等待,直到它得到的数以百计的测试取得长点(在这一点上它要是真的难以解决的问题)。

即便如此,这只会减少之间的时间当你的自动化生成问题的错误...这是确定的,如果它是一个小时以后(或甚至几个小时后),我认为。问题是运行他们之前你检查,但这是可以避免的选择的一小部分的试运行有关的你是什么工作。只是一定要修复的建立,如果你检查在代码,打破了测试,你没有跑!

目前,我们正在270测试在大约3.东西秒钟。有可能是周围的8个试验的执行文件IO.

这些都是自动运行的成功建立我们的库对每一个工程机器.我们拥有更为广泛(而且耗费时间)烟雾测试,通过建立机每天晚上,或可以手动启动,在一个工程机器.

正如你可以看到我们尚未达到该问题的测试过于耗费时间。10秒钟对我来说是点,它开始变成侵入,当我们开始的做法,这将是我们看一看。我们会有可能移动的低级图书馆,这是更强大,因为他们改变频繁度一般不高,而且有几个依赖关系,进入夜间建立、或一个结构里,他们只是执行通过建立机。

如果你找到它的考虑超过几秒钟就可以运行的一个百或以测试可能需要检查你是什么进行分类作为一个单元的测试,以及它是否会更好地处理作为一个烟雾测试。

你的里程显然将是有很大差异,取决于区域的发展。

数据点--Python回归测试

这里的号码在我的笔记本电脑运行"测试"为蟒蛇2.5.2:

  • 数量的试验:3851(大约)
  • 执行时间:9分钟,6秒
  • 执行率:7测试/秒

我的判断我的单元的测试,对每一个测试的基础上,不是通过通过的测试。在我的目标是500毫秒或更小。如果这是上面那个,我会考虑的测试,以找出为什么这么长时间。

当我想到一个测试是为了缓慢,这通常意味着它是做的太多了。因此,只是重构测试通过分裂成更多的测试通常不会把戏。其他时候,我已经注意到我的测试运行速度缓慢是测试时显示了一个瓶颈,在我的代码,然后重构的代码。

有一个 很好的文章 在这种从动力的两个游戏,提交人的 单元测试++.

多长时间过长的一个人 单元的测试?

我说这取决于编纂的速度。一个通常执行的试验的每一个编译。目的单元测试是没慢下来,但把消息"没有破碎的,去吧"(或者"什么东西坏了,停").

我不打扰关于试验执行速度,直到这一点,开始变得烦人。

危险的是停止运行测试,因为他们太慢。

最后,当你做决定的测试 需要更快的速度运行,什么方法 你使用速度了你的测试?

要做的第一件事是管理,以找出为什么他们太慢了, 无论问题是在该单元的测试,或在代码下的测试?

我尝试打破测试成几个逻辑部件,运行仅有一部分是 据说 受影响的代码,我改变了在每一个编译。我运行的另一套房不经常的,也许一次一天时,或在怀疑我能具有破碎的东西,至少 整合之前.

一些框架提供自动执行的具体单元测试的基础上启发,例如最近修改的时间。用红宝石和铁路、自动测试,提供更快的响应和执行试验--当时我保存一个轨道模型 app/models/foo.rb, ,相对应的单元的测试 test/unit/foo_test.rb 得到运行。

我不知道如果有任何类似的存在对其他平台上,但它将有意义的。

其中一个最重要的规则,关于单元的测试,为他们应该跑 快速.

多长时间太长为一个单独的单元的测试?

开发人员应该能够运行的整套单元的测试在几秒钟内,绝对不是在几分钟内,并分钟。开发人员应该能够迅速运行之后改变代码。如果它花费的时间太长,他们就不会打扰运行他们和你失去的一个主要益处的测试。

什么样的执行率做你的目标是与您单元的测试(#测试每秒)?

你的目标应该是每一个试验运行在一个以毫秒,任何超过1的第二个可能是测试的太多了。

我们目前有大约800个测试运行在30秒内,约27测试。这包括时间推出的移动模拟器运行需要它们。他们大多采取各0-5毫秒(如果我没有记错的话).

我们有一个或两个需要大约3秒钟,这可能是候选人的检查,但重要的是整个试验套房并不需要这么长时间,它把开发人员运行,并且不会明显放慢我们连续的一体化建立的。

我们还有一个可配置的限制超时设定为5秒-什么考虑长将失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top