2010-03-15 90 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"); 
    }