如何为.Net应用程序编写性能测试? nUnit或任何其他测试框架是否为此提供了框架?
编辑:我必须衡量WCF服务的效果。
答案 0 :(得分:9)
如果您对方法和算法的相对性能感兴趣,可以在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");
}
答案 1 :(得分:2)
我遇到了NTime,它在写作性能测试方面看起来很酷。
答案 2 :(得分:0)
NUnit为您提供了单元测试的框架:即以离散的“单位”测试您的代码,以便您可以在新的更改破坏现有代码或者您提供了一定级别的代码时知道覆盖。但它本身并不提供性能测试。
为此,您需要其他类型的工具。如果你有一个webapp,你可能想看看The Grinder或其他人在这里找到:
答案 3 :(得分:0)
性能测试与单元测试不同。通常,您正在查看应用程序在负载下的执行情况。您可以使用各种工具:
如果你不想花太多钱,我建议The Grinder。您可以在Jython中编写性能测试脚本的脚本。这有点牵扯,但很灵活。报告的缺点是;没有很多好的报告工具。
答案 4 :(得分:0)
VS Team System内置了性能测试模块。值得探索,如果你有许可证。