пятница, 6 сентября 2013 г.

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

Web Test Plug-in

В прошлой статье мы рассмотрели, как создавать базовый класс теста производительности и мы теперь добрались до первого плагина. Для чего он вообще нужен? Например, в ситуации, когда вам нужно составить рандомный email, или когда перед тестом нужно создать юзера, а после теста его удалить; возможности большие, осталось только научиться этим пользоваться.



Web Test Plug-in - это обычный C# класс. Отличие всего в нескольких деталях, а именно:

1. Наследование. 
Для того, чтобы плагин распознавался в студии именно как плагин, его нужно унаследовать от WebTestRequestPlugin.

2. Название основного метода.
По сути, мы не будем писать новый метод, мы будем перегружать один из уже существующих в WebTestRequestPlugin. Для примера я возьму метод PreRequestDataBinding, который выполняется перед запросом.

3. Исходящие данные
Если мы собираемся передавать какие-то данные из плагина в тест, их тоже нужно объявить и записать в аргументы.

Итак, суммируя всё вышесказанное мы получаем вот такой код, который создаст одну случайную числовую переменную и передаст её в тест

using System;
using System.ComponentModel;
using Microsoft.VisualStudio.TestTools.WebTesting;
namespace WebAndLoadTestProject
{
    public class WebPlugin1 : WebTestRequestPlugin
    {
        [Description("Context parameter for random number")]
        public String ContextParameterRandomNumber { get; set; }
        public override void PreRequestDataBinding(object sender, PreRequestDataBindingEventArgs e)
        {
            Random random = new Random();
            double randomNumber = random.NextDouble();
            e.WebTest.Context.Add(ContextParameterRandomNumber, randomNumber);
            base.PreRequestDataBinding(sender, e);
        }
    }
}

И это всё, никаких хитростей, всё, что осталось сделать - подключить к тесту, что также делается в пару действий:
В классе webtest вызываем контекстное меню интересующего нас запроса и выбираем пункт Add Request Plug-in, не забывая билдить проект после добавления нового элемента. Если подключить не получается - убедитесь, что класс плагина имеет доступ public. Выберите свой из списка и он добавится в тест.
Обратите внимание на то, что в случае создания плагина, который будет выполнятся перед тестом наследование будет происходить от WebTestPlugin и добавляться плагин будет не к запросу, а к корневому элементу теста (WebTest1).
После того, как плагин добавился нужно зайти в его параметры, где вы найдете переменную ContextParameterRandomNumber, которую мы объявляли в плагине, здесь же ей нужно присвоить глобальное имя. Назовём её RandomNumber.


Переходим к запросу google.ru, и заменим параметр "q" на наше число из плагина. Для этого достаточно в поле Value вписать глобальное имя переменной в двойных фигурных скобках - {{RandomNumber}}, после чего значение подтянется автоматически.


Вот и всё, в следующей части поговорим об объединении множества webtest'ов в один loadtest.

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

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