Как написать тест производительности для приложения .Net? - PullRequest
3 голосов
/ 15 марта 2010

Как написать тест производительности для приложения .Net? Предоставляет ли nUnit или любая другая инфраструктура тестирования основу для этого?

Редактировать : Я должен измерить производительность службы WCF.

Ответы [ 5 ]

9 голосов
/ 20 марта 2010

Если вас интересует относительная производительность методов и алгоритмов, вы можете использовать класс System.Diagnostic.StopWatch в своих тестах NUnit для записи утверждений о том, сколько времени занимают определенные методы.

В приведенном ниже простом примере класс простых чисел создается с помощью метода [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");
    }
2 голосов
/ 20 марта 2010

Я столкнулся с NTime, который выглядит здорово для написания тестов производительности.

http://www.codeproject.com/kb/dotnet/NTime.aspx

0 голосов
/ 15 марта 2010

Тестирование производительности отличается от модульного тестирования. Обычно вы смотрите, как ваши приложения работают под нагрузкой. Вы можете использовать различные инструменты:

  • Webload (Вы хотите посмотреть на профессиональную версию) Коммерческий
  • LoadRunner Коммерческий
  • Grinder Открытый исходный код

Если вы не хотите тратить слишком много денег, я предлагаю The Grinder. Вы пишете сценарии тестирования производительности в Jython. Это немного сложно, но гибко. Слабым местом является отчетность; не очень много хороших инструментов отчетности.

0 голосов
/ 16 марта 2010

VS Team System имеет встроенные модули тестирования производительности. Стоит изучить, если у вас есть лицензия на это.

0 голосов
/ 15 марта 2010

NUnit предоставляет вам среду для модульного тестирования: т. Е. Тестирование вашего кода в дискретных «единицах», чтобы вы могли, среди прочего, знать, когда новые изменения нарушают существующий код, или что вы предоставили определенный уровень кода охват. Но он не обеспечивает тестирование производительности как таковое.

Для этого вам понадобится другой тип инструмента. Если у вас есть веб-приложение, вы можете взглянуть на The Grinder или другие, которые можно найти здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...