|
|
1
4
在Dojo中使用TDD时,我们尝试遵循以下规则
根据这些规则,我们有更多的空间去试验,而不是一见钟情。我们可以调整simplest的定义,并添加代码气味来考虑效率(基本上:如果我们想到几种简单的方法来实现一些更喜欢最有效的算法,如果我们知道一些比我们代码中使用的算法更有效但仍然很简单的算法,那就是气味)。 概括地说,结果是TDD本身并不适合于预测总体代码性能和从一开始就实现高效的代码,即使使用TDD和重构,我们成功地实现了对代码的更好的理解,并可以增强代码的可读性 和 避免一些明显的性能瓶颈。在那个测试级别尝试在代码中插入性能约束通常是灾难性的(我们得到的代码和测试太复杂了,经常是坏代码或者太复杂了以至于无法更改)。 一个原因是TDD我们通常使用非常小的测试集(最简单的失败测试)。另一方面,实际数据集会出现更多的性能问题,并且与上述规则的匹配性非常差。性能测试,即使形式上仍然是单元测试,也更像是功能测试。常见的优化策略包括添加缓存,或者考虑真实数据分布的某些属性,或者在一些小的优势特性对性能有很大负面影响时协商用户情景的变化。所有这些都不能真正内置在TDD中,但更可能是在分析代码时发现的。 我相信 目标基本上是 功能测试 问题。 |
|
2
3
不,你不应该尝试。单元测试测试的是正确性,而不是效率——强迫它们测试效率是过早优化的一种形式。 |
|
|
3
3
-如果这是你的问题。这是一个没有TDD优势的利基领域(利基:与大量生产企业软件、调用无数框架/库相比)。
e、 你可以用TDD方法来实现排序,但是你找到一个新的算法或者找到一个像快速排序这样的有效算法的机会是渺茫的。除非你知道算法设计的原则,并有意识地朝着这个方向努力。 更新:支持性证据。 http://www.markhneedham.com/blog/2009/12/10/tdd-big-leaps-and-small-steps/ 还有一些——不过,它们就像是关于reddit的讨论。固执己见的,不受任何人支持的。不发布这些。 |
|
4
2
您当然可以向单元测试添加时间约束,但是您可能很难用独立于技术的方式(例如,O(N ln N))表达它们。
如果您这样做,我建议您隔离功能测试和性能测试。 |
|
|
5
1
一些单元文本框架可能已经有了您可以参考的运行时间。这使得测量时间的额外样板代码变得不必要。 而且,运行时间只是“效率”指标的一个例子。要测试的其他指标包括cpu时间、吞吐量、传输的输入/输出字节等 |
|
|
6
0
进行效率测试。您给出了这样一个要求:“对于给定的环境,该功能在不到“x”的时间内运行。” 我同意BlueRaja的观点,性能测试不应该是单元测试的标准部分,不过,如果对性能有很大的重视,它可以帮助您将它放在桌面上。 |
|
|
7
0
一开始我认为这是行不通的,你需要一个比TDD更大的飞跃,我想说至少你的测试可以帮助你重写代码。 应该是 性能测试。这显然是目前的一项要求,所以为什么不继续这样做呢。
我一直想这样做,但在一个项目上没有合适的机会。告诉我们进展如何。 |