Инрэко ЛАН

inreco_lan


Группа компаний «Инрэко ЛАН»

«Инрэко ЛАН» — интеллект вашего бизнеса


Previous Entry Поделиться Next Entry
Автоматизированное тестирование веб-интерфейса средствами Microsoft Visual Studio Team System
Инрэко ЛАН
inreco_lan
Сегодня выпускается огромное количество программных продуктов имеющих веб-интерфейс. В большинстве случаев все они тестируются вручную, несмотря на то, что процесс создания автоматизированных веб-тестов сейчас достаточно прост. Наверняка есть тестовый сценарий "Регистрация", и этот функционал вряд ли меняется между запусками регрессионного тестирования, так почему бы его не автоматизировать? Просто запустить специальную программу, нажать на одну кнопку в панели инструментов и смотреть, как компьютер сделает за вас всю работу!

Microsoft Visual Studio Team System 2008 предоставляет специальные средства для создания и редактирования веб-тестов, которые позволят:

  • проверить функциональность вашей программы;
  • использовать разные наборы данных в тестах;
  • протестировать производительность вашей программы (веб-тесты могут использоваться в нагрузочном тестировании);
  • использовать языки программирования .NET  для расширения возможностей веб-тестов (кодированные веб-тесты).

Рассмотрим процесс создания веб-теста на примере тестирования сервиса Cool Dates (cooldates.ru) и перед тем как начать, зарегистрируемся там.

Создадим проект тестирования (Test Project). Нажимаем: File -> New -> Project: В открывшемся окне выбираем Test Projects -> Test Documents -> Test Project. Называем проект CooldatesCreateEventsTest, указываем место на диске, где будет находиться проект, и нажимаем OK.

 

 

Записываем тест. Запись веб-теста - это, по сути, запись ваших действий. Вы нажимаете на кнопки, вводите информацию, а запросы в этой же последовательности записываются в веб-тест.

В главном меню нажимаем Test -> New Test: В появившемся окне выбираем Web Test, называем его CreateOneDayEvent и нажимаем OK.

 

Открывается Internet Explorer, а внутри него - Web Test Recorder. В строке адреса вводим cooldates.ru и нажимаем Enter.

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

  1. Вводим свои логин и пароль и авторизуемся;
  2. В меню, которое находится под строкой поиска, нажимаем "Создай" -> "Создай событие";
  3. Вводим заголовок события - "Событие TNA";
  4. Вводим описание события - "Самое простое событие!";
  5. Выбираем категорию события -  Cool Dates;
  6. Выбираем тип события - "Закрытое";
  7. Все остальные поля не изменяем и нажимаем кнопку "Создать";
  8. Видим наше созданное событие в списке "Мои события". Выйдем из системы, нажав "Выход".

Теперь нажмем на Web Test Recorder кнопку "Stop", чтобы остановить запись. Браузер закроется, а в окне Visual Studio мы увидим наш записанный веб-тест.

Чтобы запустить наш тест надо нажать Run test на панели инструментов окна CreateOneDayEvent.webtest. Теперь посмотрим результаты:

Ага! Вот и первые ошибки! Раскроем, помеченные красным, узлы дерева запросов и увидим, что не была найдена картинка по адресу "http://cooldates.ru/~/images/spacer.gif". Могли бы мы пропустить эту ошибку, проделывая это вручную? Вполне! Картинка может быть слишком маленькой, чтобы ее отсутствие бросалось в глаза. Как мы видим, других ошибок веб-тест не обнаружил.

Можно указать время ожидания между запросами. По умолчанию это время, которое мы потратили на переходы между страницами и на заполнение полей. Можно изменить это значение в окне Properties для каждого запроса (Think time). Чтобы включить эту возможность надо нажать кнопку Simulate Think Time на панели инструментов окна веб-теста.

Использование Validation Rules. После того как мы получили страницу, зачастую необходимо проверить ее содержимое. Для этого используются Validation Rules:

  • Form Field - проверяет значение поля формы;
  • Find Text - определяет наличие указанного текста на странице;
  • Maximum Request Time - проверяет время ответа на запрос;
  • Required Attribute Value - проверят значение атрибута какого-либо тэга;
  • Required Tag - проверяет наличие указанного тэга на странице;
  • Response URL - проверяет URL страницы.

Например, после того как мы авторизовались, на странице должно быть выведено "TNA". Открываем CreateOneDayEvent.webtest, на втором узле щелкаем правой кнопкой и нажимаем Add Validation Rule: В открывшемся окне выбираем Find Text. Справа задаем параметры:

Запустим снова наш веб-тест и посмотрим результат:

 

Выбрав второй узел в дереве запросов и перейдя на вкладку Details, увидим в списке правил Find Text, которое было успешно выполнено.

Так как веб-тесты используются в нагрузочном тестировании, необходимо очень внимательно отнестись к тому, где и какие Validation rules вы используете, так как они могут сильно повлиять на производительность. Для этого вводится такое понятие как Validation Level. С помощью него можно задать какие Validation rules использовать в данном нагрузочном тестировании, а какие - нет. Validation level задается для каждого правила значениями: Low, Medium или High. Чем выше будет ваш уровень проверки, тем дольше будет выполняться ваш тест. Например, если вы поставили правилу уровень High, то оно будет выполняться только если у нагрузочного тестирования также задан уровень High.

Использование Extraction Rules. Веб-тест должен быть гибким? Следующий шаг должен зависеть от предыдущего? Для этого придумали Extraction Rules. Они "достают" необходимое для нас содержание страницы:

  • Extract Attribute Value;
  • Extract Form Field;
  • Extract HTTP Header;
  • Extract Regular Expression;
  • Extract Text;
  • Extract Hidden Fields.

Думаю из названий вполне ясно, что именно "достают" эти правила. Воспользуемся правилом Extract Attribute Value. Узнаем css стиль заголовка "Ожидаемые события". Для этого выберем второй узел в дереве запросов веб-теста, щелкнем правой кнопкой, выберем Add Extraction Rule: Затем нажмем на Extract Attribute Value и заполним параметры:

 

Запустим веб-тест и посмотрим результаты:

 

Выбрав второй узел в дереве запросов и перейдя на вкладку Context, увидим в списке значение переменной ExtractionTest - title_grey.

Использование источников данных. Иногда требуется выполнить один и тот же тест, но с разными данными. Их удобнее всего брать из какого-либо источника данных: базы данных, CSV-файла, XML-файла.

Допустим, мы хотим создать несколько событий с разными датами и описаниями, то есть нам надо несколько раз запустить наш веб-тест, предоставляя ему каждый раз новую дату.

Создадим XML файл:

На панели инструментов окна веб-теста нажмем Add DataSource. Появится мастер создания источников данных. Назовем источник EventDates, выберем наш xml файл и нажмем Next. В следующем окне определим, где находится наш файл. Как только мы его выбираем, отображается его содержимое:

Жмем Next. Выбираем таблицу, которую хотим использовать - Event, и нажимаем Finish. На вопрос хотим ли мы файл добавить в проект, отвечаем положительно.

Видим, что в дереве нашего веб-теста появилась ветка DataSources с нашим источником EventDates.

Открываем пятый узел дерева запросов, затем открываем Form Post Parameters и видим огромный список параметров, которые отправляются в запросе. В этом списке выделяем параметр "ctl00$PageContent$scheduleControl$onceControl$calendar= 08.06.2009". В окне Properties напротив свойства Value нажимаем на стрелку выпадающего списка. Выбираем наш источник данных, таблицу, и поле EventDate.

 

Точно так же установим свойствоValue параметра запроса "ctl00$PageContent$eventEdit$taWikiEditControl = Самое простое событие!", которое будет связано с полем EventName.

В главном меню нажимаем Test -> Edit Test Run Configurations -> Local Test Run. В появившемся окне переходим на вкладку Web Test и устанавливаем One run per data source row. Это будет означать, что веб-тест будет запущен столько раз, сколько строк в источнике данных. Также можно задать фиксированное количество запусков, тогда если кончаться записи в источнике данных, то считывание начнется заново с первой строки.

Запустим снова наш веб-тест. Теперь мы видим, что он выполнился два раза!

 

Выбрав по очереди пятый запрос в обоих запусках, на вкладке Context можно увидеть какие данные были добавлены.

Переведем веб-тест в код. Нажмем Generate Code в окне веб-теста, оставим название, которое предложит Visual Studio, и увидим всю нашу проделанную работу в виде кода на C# (зависит от того, какой язык вы используете по умолчанию или какой вы выбрали, когда создавали проект). Тут уж можно творить все, что вам заблагорассудится, при условии, конечно, что вы знаете язык программирования. Можно вставлять циклы, условия, использовать значения из Extraction Rules и т.д., что позволит вашему тесту ничего не упустить!


Автор: Надежда Фомина

Оригинальная статья в копроративном блоге.

?

Log in

No account? Create an account