среда, 11 сентября 2013 г.

Тестирование производительности с помощью Visual Studio Web Performance, часть 5

Load Test Plug-in

Итак, у нас есть 2 webtest'а объединенных в один loadtest. В прошлых частях я уже приводил примеры для чего может понадобиться плагин, сейчас предлагаю сразу перейти к его созданию.
Как я уже говорил - плагины, это обычные классы, унаследованные от Web Testing, поэтому создаём новый класс в корневой папке проекта. Мы собираемся перегрузить метод Initialize() класса ILoadTestPlugin, который отвечает за действия перед тестом. Для наглядности поместим внутри абстрактный метод создания пользователя CreateUser(). Получаем следующее.



using System;
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.LoadTesting;

namespace WebAndLoadTestProject
{
    public class LoadPlugin : ILoadTestPlugin
    {
        [Description("Context parameter new user")]
        public string ContextParameterNewUser { get; set; }

        public void Initialize(LoadTest loadTest)
        {
            string newUser = CreateNewUser();
            loadTest.Context.Add(ContextParameterNewUser, newUser);
        }
    }
}

Как видно, для того, чтобы переписать Initialize() нужно унаследоваться от класса ILoadTestPlugin. Снаружи мы создали параметр ContextParameterNewUser, внутри получили нового юзера и передали его в тест с помощью Context.AddТеперь нужно сбилдить проект и перейти в loadtest. Далее, вызвать контекстное меню корневого элемента (LoadTest1) -> Add Load Test Plug-in. В открывшемся окне вы увидите на выбор ваши load плагины.


Так же как и в webtest объявляем глобальную переменную, которую получаем из плагина ContextParameterNewUser = NewUser.


Здесь начинается самое интересное. Нужно передать значение NewUser в один из тестов, но в loadtest нет возможности его подставить в те места, где оно нужно. Методом проб и ошибок выяснилось, что достаточно просто объявить эту переменную в loadtest и в webtest подставить её в нужное место в двойных фигурных скобках. Т.е. мы уже определили её в loadtest (скриншот выше) как NewUser и теперь переходим в WebTest2 и подставляем.


Теперь, перед началом теста выполнится LoadTest Initialize(), где создастся пользователь и передаст его всем последующим сценариям, юзер подтянется везде, куда мы указали.
Запускаем LoadTest, получаем результаты и переходим к заключительной части цикла - разбор отчетов.

Комментариев нет:

Отправить комментарий