如何衡量模拟框架(TypeMock)的开销?

时间:2009-07-30 09:44:32

标签: .net unit-testing mocking load-testing typemock

我刚刚开始为我的团队评估模拟框架,我想知道是否有任何人可以参考文档或经验,你可以分享关于进行性能测试时模拟的成本。

链接?个人经验?细节赞赏。

4 个答案:

答案 0 :(得分:2)

IIRC TypeMock使用Profiler API,它通常会增加相当多的开销,但仍应比通过分析器运行应用程序更快。

NCover也使用Profiler API,并且看起来非常快。

答案 1 :(得分:2)

Aaron Jensen创建了一个测试项目并进行了一些性能测试。 http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/mock-framework-benchmarks.aspx

我宁愿选择基于API和功能,但性能可能是TDD的问题,并且运行测试的次数很多。

答案 2 :(得分:1)

我们一直在使用TypeMock几年,根据我的经验,性能没有显着的开销(我确信会有开销,这不是一个大问题)。

但是,由于TypeMock的工作原理,有几点需要考虑。由于TypeMock基本上是通过动态注入代码来实现的,因此错误有时可能非常奇特。因此,报告错误可能会成为一项艰巨的任务。准备深入了解IL。

我的经验是,很难向“平均开发者”解释TypeMock的工作原理。它很快变得复杂,即使它们的Trace工具使故障排除变得可行,它仍然会留下一些支持任务。

此外,由于TypeMock将允许您模拟任何内容(mscorlib除外),因此您不需要在代码中添加必要的间接级别。这是一个功能,TypeMock在这里并没有真正的错误。尽管如此,我已经看到很多开发人员试图通过嘲笑所有地方而不是解耦代码来解决他们的问题。这并没有提高IMO的整体代码质量。

答案 3 :(得分:1)

我一直在测试模拟框架(特别是Moq和TypeMock)。 TypeMock功能更强大,更灵活,但因为它作为分析器插入框架,它确实对性能产生了重大影响。

我的结论是TypeMock是非负载测试场景的绝佳工具。 Moq灵活性较差......但重量轻得多,并且对一般性能没有广泛影响。使用Moq,您必须专门设置应用程序以模拟外部依赖项(无论如何都是良好设计的练习),但事实证明它更适合我的负载相关场景。

不幸的是,在我的测试中,我没有记录Moq与TypeMock的实际数字,但是根据我的经验,Moq的性能优势是显着的。