2010-03-15 58 views
3

如何编写.Net应用程序的性能测试? nUnit或任何其他测试框架是否为此提供了框架?如何编写.Net应用程序的性能测试?

编辑:我必须测量WCF服务的性能。

+0

-1什么样的应用?你有什么尝试? – 2010-03-15 19:33:37

+0

我期待测试WCF服务的性能> – Amitabh 2010-03-15 19:41:52

+0

的性能,通常需要多长时间,或者负载如何? – kenny 2010-03-15 19:54:09

回答

0

NUnit为您提供了一个单元测试框架:即以离散“单位”测试您的代码,以便您可以了解新变更何时破坏现有代码,或者您是否提供了特定级别的代码覆盖率。但它本身不提供性能测试。

为此,您将需要其他类型的工具。如果你有一个Web应用程序,你可能想看看该磨床或其他人在这里找到:

http://www.opensourcetesting.org/performance.php

+0

为什么我们不能为一块逻辑做性能测试?您可以使用 – Amitabh 2010-03-15 23:49:31

+0

,但通常情况下,您会希望从应用程序中测量性能(用户会看到它),在这种情况下,您需要上述链接中提到的独立工具之一或Vivin的答案。 – davek 2010-03-16 10:50:45

0

性能测试,从单元测试不同。通常,您正在查看应用程序在加载情况下的性能。有各种工具,你可以使用:

如果你不想花太多钱,我建议磨床。您在Jython中编写脚本性能测试脚本。这有点牵扯,但灵活。它的弱点是报告;没有很多好的报告工具。

0

VS Team System内置了性能测试模块。值得探讨,如果你有这个许可证。

9

如果您对方法和算法的相对性能感兴趣,则可以在NUnit测试中使用System.Diagnostic.StopWatch类来编写关于某些方法需要多长时间的断言。

在下面的简单示例中,primes类使用[SetUp]方法(未显示)实例化,因为我对generatePrimes方法所用的时间长度感兴趣,而不是我的类的实例化, m写一个断言这个方法应该少于5秒。这不是一个非常具有挑战性的主张,但希望可以作为你如何做到这一点的例子。

[Test] 
    public void checkGeneratePrimesUpToTenMillion() 
    { 
     System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch(); 
     timer.Start(); 
     long[] primeArray = primes.generatePrimes(10000000); 
     timer.Stop(); 
     Assert.AreEqual(664579, primeArray.Length, "Should be 664,579 primes below ten million"); 
     int elapsedSeconds = timer.Elapsed.Seconds; 
     Console.Write("Time in seconds to generate primes up to ten million: " + elapsedSeconds); 
     bool ExecutionTimeLessThanFiveSeconds = (elapsedSeconds < 5); 
     Assert.IsTrue(ExecutionTimeLessThanFiveSeconds, "Should take less than five seconds"); 
    }