Результаты нагрузочных тестов VS 2010 с пользовательскими счетчиками - PullRequest
4 голосов
/ 24 января 2012

Я новичок в нагрузочном тестировании (и в целом в тестировании) с Visual Studio 2010 и имею дело с несколькими проблемами.

У меня вопрос, есть ли способ добавить пользовательскую переменную теста?по результатам нагрузочного теста?

У меня есть следующий UnitTest:

[TestMethod]
public void Test()
{
    Stopwatch testTimer = new Stopwatch();
    testTimer.Start();
    httpClient.SendRequest();
    testTimer.Stop();

    double requestDelay = testTimer.Elapsed.TotalSeconds;
}

Этот UnitTest используется многими LoadTests, и я хочу добавить переменную requestDelay вЗагрузите результат теста, чтобы я мог получить значения Min, Max и Avg, как и все остальные, загрузить счетчики теста (например, время ответа теста).

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 07 марта 2012

Используя ссылку из комментария @Pritam Karmakar и пошаговые руководства в конце моего поста, мне наконец удалось найти решение.

Сначала я создал Load Test Plug-In и использовал событие LoadTestStarting , чтобы создать свою категорию пользовательских счетчиков и добавить к ней все свои счетчики:

void m_loadTest_LoadTestStarting(object sender, System.EventArgs e)
{        
    // Delete the category if already exists   
    if (PerformanceCounterCategory.Exists("CustomCounterSet"))
    {
        PerformanceCounterCategory.Delete("CustomCounterSet");
    }

    //Create the Counters collection and add my custom counters 
    CounterCreationDataCollection counters = new CounterCreationDataCollection();
    counters.Add(new CounterCreationData(Counters.RequestDelayTime.ToString(), "Keeps the actual request delay time", PerformanceCounterType.AverageCount64));
    // .... Add the rest counters

    // Create the custom counter category
    PerformanceCounterCategory.Create("CustomCounterSet", "Custom Performance Counters", PerformanceCounterCategoryType.MultiInstance, counters);
}

Затем в редакторе LoadTest я щелкнул правой кнопкой мыши на Agent CounterSet и выбрал Добавить счетчики ... В окне Выбор счетчиков производительности я выбрал свою категорию производительности и добавил свои счетчики в CounterSet, чтобы нагрузочный тест собрал их данные:

enter image description here

Наконец, каждый UnitTest создает экземпляры счетчиков в методе ClassInitialize, а затем обновляет счетчики на соответствующем шаге:

[TestClass]
public class UnitTest1
{
    PerformanceCounter RequestDelayTime;

    [ClassInitialize]
    public static void ClassInitialize(TestContext TestContext)
    {
        // Create the instances of the counters for the current test
        RequestDelaytime = new PerformanceCounter("CustomCounterSet", "RequestDelayTime", "UnitTest1", false));
        // .... Add the rest counters instances
    }

    [TestCleanup]
    public void CleanUp()
    {
        RequestDelayTime.RawValue = 0;
        RequestDelayTime.EndInit();
        RequestDelayTime.RemoveInstance();
        RequestDelayTime.Dispose();
    }

    [TestMethod]
    public void TestMethod1()
    {
         // ... Testing
         // update counters
         RequestDelayTime.Incerement(time);
         // ... Continue Testing
    }
}

Ссылки:

1 голос
/ 28 февраля 2014

Я думаю, что вам действительно нужно использовать:

[TestMethod]
public void Test()
{
    TestContext.BeginTimer("mytimer");
    httpClient.SendRequest();
    TestContext.EndTimer("mytimer");
}

Хорошую документацию вы можете найти здесь .

0 голосов
/ 25 января 2012

Интересный вопрос.Никогда не пробовал, но у меня есть идея.

Создание 3 свойств уровня класса MAX, MIN и AVG.во время каждого теста манипулировать этими значениями.А затем запишите все окончательные значения, как только весь нагрузочный тест будет выполнен с помощью Classcleanup или Assemblycleanup атрибут теста .Вы должны выполнить нагрузочный тест в течение 1-2 минут и посмотреть, какой метод атрибута будет вызван в конце.Затем вы можете распечатать эти окончательные значения в виде плоского файла на локальном диске с помощью текстового редактора.

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