如何编写.Net应用程序的性能测试? nUnit 或任何其他测试框架是否为此提供了框架?
编辑:我必须测量 WCF 服务的性能。
如果您对方法和算法的相对性能感兴趣,您可以在 NUnit 测试中使用 System.Diagnostic.StopWatch 类来编写有关某些方法需要多长时间的断言。
在下面的简单示例中,primes 类是使用 [SetUp] 方法(未显示)实例化的,因为我感兴趣的是generatePrimes 方法花费了多长时间,而不是我的类的实例化,并且我正在编写一个断言此方法应该花费不到 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");
}
我发现了 NTime,它对于编写性能测试来说看起来很酷。
VS Team System内置了性能测试模块。如果你有许可证的话值得探索。
NUnit 为您提供了一个单元测试框架:即在离散的“单元”中测试您的代码,以便您可以了解新的更改何时破坏现有代码,或者您已经提供了一定级别的代码覆盖率。但它本身不提供性能测试。
为此,您将需要另一种类型的工具。如果您有网络应用程序,您可能想看看 The Grinder 或其他可以在这里找到的应用程序:
https://web.archive.org/web/20140101114848/http://www.opensourcetesting.org/performance.php