AT.info ПОСИДЕЛКИ  vKontakte   facebook группа  
Web автоматизация, Build Tools (ant, maven, и т.д.), Шаблоны автоматизации (DSL, Page Object, и т.д.)...
view counter
Очень хочется узнать его. Форум ждет тебя!
view counter
Использование маппинга пользовательского интерфейса в Selenium RC

Карта пользовательского интерфейса (UI map) - это хранилище идентификаторов-указателей на элементы пользовательского интерфейса приложения. Карта создается чтобы тестовый скрипт через нее обращался к тестируемым элементам. UI map также хранит в себе объекты тестового скрипта, которые соответствуют элементам интерфейса тестируемого приложения.

В чем же польза UI map? Основное назначение это упрощение управлением тестовыми скриптами. Например, если вам требуеться изменить указатель, то вместо прочесывания всего кода в распоряжении имеется централизованное место хранения, где его можно легко отыскать. Большим преимуществом будет внесение изменений лишь в одном месте карты, чем в нескольких местах кода или, еще хуже, нескольких скриптах.

Суммируя, можно выделить два основных  преимущества UI Mapping: 

  • Использование централизованного места для хранения объектов пользовательского интерфейса вместо поддержки разбросанных по всему коду элементов.
  • Скрытые идентификаторы и имена HTML можно заменить более понятными, что значительно облегчит читабельность тестовых скриптов

Рассмотрим следующий пример (java) selenium тестов для сайта:

 public void testNew() throws Exception {
             selenium.open("http://www.test.com");
             selenium.type("loginForm:tbUsername", "xxxxxxxx");
             selenium.click("loginForm:btnLogin");
             selenium.click("adminHomeForm:_activitynew");
             selenium.waitForPageToLoad("30000");
             selenium.click("addEditEventForm:_IDcancel");
             selenium.waitForPageToLoad("30000");
             selenium.click("adminHomeForm:_activityold");
             selenium.waitForPageToLoad("30000");
}

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

 public void testNew() throws Exception {
             selenium.open("http://www.test.com");
             selenium.type(admin.username, "xxxxxxxx");
             selenium.click(admin.loginbutton);
             selenium.click(admin.events.createnewevent);
             selenium.waitForPageToLoad("30000");
             selenium.click(admin.events.cancel);
             selenium.waitForPageToLoad("30000");
             selenium.click(admin.events.viewoldevents);
             selenium.waitForPageToLoad("30000");
}

В примере выше по-прежнему отсутствуют комментарии, однако он удобочитаем за счет использования ключевых слов. (Имейте ввиду, что UI Map не является заменой комментариев! Комментарии по прежнему очень важны при разработке автоматизированных тестов.) И еще красивее будет выглядеть следующий пример:  

public void testNew() throws Exception {

             // Открыть url приложения.
             selenium.open("http://www.test.com");

             // Введите имя администратора.
             selenium.type(admin.username, "xxxxxxxx");

             // Щелкните кнопку Login.
             selenium.click(admin.loginbutton);

             // Щелкните кнопку Create New Event.
             selenium.click(admin.events.createnewevent);
             selenium.waitForPageToLoad("30000");

             // Щелкните кнопку Cancel.
             selenium.click(admin.events.cancel);
             selenium.waitForPageToLoad("30000");

             // Щелкните кнопку View Old Events.
             selenium.click(admin.events.viewoldevents);
             selenium.waitForPageToLoad("30000");
}

Основная идея состоит в использовании централизированного места для объектов и использования удобочитаемых названий для этих объектов.

Чтобы применить этот подход на практике, можно использовать java файлы, описывающие свойства (*.properties). Такие файлы содержат пары ключ/значение, где каждый ключ и значения являются строками.

Рассмотрим файл prop.properties, в котором легко понятные идентификаторы присваиваются как ‘псевдонимы’ для ранее использованных HTML объектов.

admin.username = loginForm:tbUsername
admin.loginbutton = loginForm:btnLogin
admin.events.createnewevent = adminHomeForm:_activitynew
admin.events.cancel = addEditEventForm:_IDcancel
admin.events.viewoldevents = adminHomeForm:_activityold

Указатели по-прежнему ссылаются на объекты HTML, однако мы определяем слой абстракции между тестовым скриптом и элементрами пользовательского интерфейса. Значения, считываемые из файла свойств (*.properties) представляют собой карту пользовательского интерфейса, то есть UI Map. Более подробно Map файл будет рассмотрен в следующем выпуске.

© 2009-2010 Портал для автоматизаторов тестирования ПО
Автор проекта Поляруш Михаил | При использовании материалов ссылка на www.automated-testing.info обязательна.
Все замечания и пожелания присылайте на webmaster@automated-testing.info.
Плащи, бесплатная доставка женские куртки. . пигменты для бетона продажа, пигменты для тротуарной плитки.
Яндекс.Метрика