Используете Selenium-IDE с многофункциональным приложением Javascript?

Проблема

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

  • Код приложения в многоразовых и вкладываемых компонентах графического интерфейса.
  • Тесты, которые легко создает команда тестировщиков
  • Тесты, которые можно записать один раз, а затем автоматизировать
  • Тесты, которые не ломаются после небольших косметических изменений сайта

Выражения XPath (или другие возможные выражения, такие как селекторы jQuery), наивно сгенерированные из Selenium-IDE, часто неповторяемы и очень хрупкие. И наоборот, если код JS генерирует специальные уникальные значения идентификаторов для каждого важного DOM-элемента на странице ... ну, это его собственная головная боль, осложненная повторно используемыми компонентами графического интерфейса и идентификаторами, которые должны быть согласованы при повторном тесте. бегать.

Какие успехи были у других людей в подобных вещах? Как вы проводите автоматическое тестирование богатого интерфейса JS на уровне приложения?

Ограничения

  • Мы используем JavascriptMVC 2.0, надеюсь, скоро 3.0, чтобы мы могли перейти на jQuery 1.4.x.
  • Люди, занимающиеся созданием тестов, в основном обучены использованию Selenium IDE для прямой записи данных.
  • Руководители тестирования предпочли бы уникальный HTML-идентификатор страницы для каждого кликабельного элемента на странице ...
  • Обучать тестировщиков писать или изменять специальные выражения (например, сообщать им, какие имена классов HTML являются важными точками ветвления) - это непросто.
  • Мы пытаемся создать повторно используемые компоненты javascript, но это означает, что очень немногие компоненты графического интерфейса могут рассматривать себя (или то, что они содержат) как уникальные.
  • Некоторые из наших компонентов уже используют в своей работе значения HTML ID. Я бы хотел избежать этого в любом случае, но это усложняет идею тестирования на основе идентификатора.
  • Возможно, удастся добавить собственные средства (например, конструктор локаторов или новый метод локатора) к использованию тестерами установки Selenium-IDE.
  • Практически все, что происходит, происходит за одну «загрузку страницы» с точки зрения обычного браузера, даже если элементы сохранены.

Текущие мысли

Я рассматриваю систему, в которой пользовательский конструктор локаторов (код javascript) для Selenium-IDE будет взаимодействовать с кодом нашего приложения во время записи тестером. Таким образом, наше приложение частично отвечает за создание наиболее гибкого выражения (XPath или jQuery) для любого заданного элемента DOM. Хотя это позволяет избежать необходимости в дополнительном обучении тестировщиков, я опасаюсь, что это может быть чрезмерным обдумыванием.


person Darien    schedule 03.01.2011    source источник
comment
Обновление: проект пока находится в стазисе, но в итоге я написал собственный локатор для Selenium-IDE. Когда выбран данный элемент, он создает к нему навигационный путь, ища настраиваемый атрибут данных HTML5 на всех родительских узлах, например: [FooControl,Toolbar,BarControl,Toolbar,ButtonSave] Таким образом, разработчики намеренно аннотируют представление вложенными метками (которые должны быть уникальными только в их собственный контекст), изолировав проблему от таких проблем, как стили CSS или изменение промежутков на div и т. д. Я планирую разместить его на GitHub с открытым исходным кодом, если я смогу получить юридическое разрешение.   -  person Darien    schedule 31.05.2011


Ответы (2)


Запись и воспроизведение не будут работать при крупномасштабном тестировании. Он может работать для дымовых тестов и небольших повторяющихся задач.

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

Если вы пытаетесь искать собственные локаторы, лучше загляните в BDD.

person Rajasankar    schedule 04.01.2011

Разве вы не можете использовать селекторы CSS с Selenium? Это кажется более простым, чем использование XPath.

http://saucelabs.com/blog/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/

person Samo    schedule 03.01.2011
comment
Лично я бы даже не возражал против использования выражений jQuery. Я не пытаюсь выбирать XPath в частности, я просто имею в виду, что было противодействие всему, что потребовало бы от тестировщиков понимания или изменения того, что функция записи Selenium-IDE генерирует для них. - person Darien; 04.01.2011
comment
Нанимайте новых тестировщиков :) На самом деле, я определенно вижу, как создание уникальных (и предсказуемых) идентификаторов может стать серьезной проблемой в вашей ситуации. Удачи! - person Samo; 04.01.2011