Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Testing with Selenium

4 191 vues

Publié le

Тестирование веб-приложений в Selenium

Publié dans : Logiciels
  • Soyez le premier à commenter

Testing with Selenium

  1. 1. Тестирование веб-приложений в Selenium Марк Заславский, mark.zaslavskiy@gmail.com
  2. 2. Структура доклада ● Доклад: – Что такое Selenium – Примеры тестов – Использование Selenium в Continious Integration проекта Geo2Tag ● Скачать примеры http://bit.ly/1T36po8 ● Примеры подготовлены для – Ubuntu 14.04 – Python 2.7 – Selenium 2.45
  3. 3. Что такое Selenium ● Selenium WebDriver – инструмент для автоматизации тестирования веб- приложения в браузере. ● Поставляется в виде библиотеки. ● Единый подход к разным браузерам.
  4. 4. Схема работы
  5. 5. Возможности Selenium ● протестировать js логику ● протестировать пользовательский веб- интерфейс (в том числе и css) ● автоматизировать действия на сложных вебстраницах
  6. 6. Пример: Когда нужен Selenium ● Есть социальная сеть, которую активно разрабатывает большая команда, ● Хочется быть уверенным, что основные юзкейсы не сломались перед очередным релизом: – Авторизация – Просмотр сообщений – Отправка сообщений – Выход из системы ● Решение – Selenium скрипт для воспроизведения каждого юзкейса.
  7. 7. Пример: Когда нужен Selenium 2 ● Вконтакте есть закладки (<3), но нет поиска по ним. ● В закладках может накопиться очень много полезных записей. ● Чтобы найти старые записи, нужно пролистать страницу очень много раз вниз. ● Решение: – Selenium приложение, которое скролит закладки до дна и индексирует содержимое (ссылка на контент, аннотация, дата)
  8. 8. Реализации Selenium ● Поддержка языков – Официально: Java, C#, Ruby, Python, NodeJS – Неофициально: Php, Perl, Objective C, Haskell …. ● Поддержка браузеров – Chrome, Opera, Firefox, Safari, Android, Ios, Windows Phone, BlackBerry
  9. 9. Основные интерфейсы ● Поиск элементов: xpath, css, id, tag, name, link content, class ● Установка задержек: явные и неявные ● Выполнение действий со страницей: – Произвольный js код – Пользовательский ввод – Переходы на другие страницы/назад и вперед по истории – Взаимодействие с диалогами – Drag n Drop
  10. 10. Базовая последовательность работы с Selenium 1.Создаем объект webdriver 2.Открываем веб-страницу 3.Устанавливаем величину задержки ожидания действий веб-страницы 4.Ищем элементы 5.Выполняем действия над элементами 6.Проверяем результаты действий через Assert
  11. 11. example1.py ● Ищем слово Selenium в Ya.ru ● Последовательность: – Запускаем браузер – Ищем поле ввода с атрибутом name='text' – Вводим 'Selenium' – Вводим 'n'
  12. 12. example1.py - анализ ● driver.implicitly_wait() устанавливает максимальное время в секундах, которое Selenium будет ждать, пока не появится искомый для find_element_by_* элемент. ● driver.close() - закрывает браузер ● Появляющееся окно браузера не находится в режиме инкогнито
  13. 13. example2.py ● Интегрируемся с python unittest – помещаем логику тестирования в класс-наследник TestCase ● Добавляем проверки через TestCase.assert* ● Получаем отформатированный вывод результатов теста в консоль + индикацию о успешности тестов в кодах возврата скрипта.
  14. 14. Js unittests + selenium ● Проблема – есть много js бизнес-логики и ее хочется автоматизированно юнит- тестировать ● Решение: – Создаем веб-страницу /js-tests с js-юниттестами – Настраиваем все так, чтобы js тесты выполнялись сами при обновлении страницы – В selenium тесте открываем /js-tests и проверяем, что содержимое страницы соответствует успешному прохождению js тестов
  15. 15. QUnit ● Позволяет проводить юнит тестирование любой сложности для js ● В том числе – для асинхронных методов ● Представляет результаты в удобном для анализа виде (статистика по каждому тесту + время выполнения) ● Запускает тесты сразу после открытия страницы
  16. 16. Example3.html ● Что мы видим на странице ● Как организованы тесты ● В каких элементах разметки можно узнать: – Что тесты закончили выполнение – Сколько тестов упало
  17. 17. example3.py( QUnit + Selenium) ● Открываем страницу example3.html ● Проверяем что она: – Все тесты завершили работу – Показывает, что все тесты пройдены
  18. 18. Автоматизация тестирования через Selenium - наблюдения ● Отдельный скрипт для запуска тестирования с указанием имени сайта, который проверяем ● Каждый раз открывать браузер – долго! ● Параметризация тестов – надо заложить сразу – Помогает не привязатся намертво к конкретному серверу и делает набор тестов отличным инструментом проверки – Правильный базовый класс
  19. 19. Очистка кэша браузера при тестировании ● Проблема: Selenium не имеет стандартного интерфейса для очистки кэша браузера ● Варианты: – Очищать вручную – Каждый раз использовать чистую среду (изолировать тесты) – Использовать инвалидацию кэша на стороне веб-приложения
  20. 20. Geo2Tag ● Open Source платформа для сервисов, использующих данные о местоположении ● Веб-интерфейсы для администрирования ● REST API
  21. 21. Как Selenium используется в Geo2Tag ● Для каждого коммита в репозиторий запускаются проверки (unittest, integration tests, Selenium) ● Все проверки проходят последовательно ● Проверка происходит в изолированной виртуальной машине ● В качестве способа проверки для большой части Frontend-задач выступает Selenium/QunitJs тест
  22. 22. Как Selenium используется в Geo2Tag - схема
  23. 23. Как Selenium используется в Geo2Tag - технологии ● ОC – Ubuntu 14.04 без графической подсистемы ● Изоляция сборок друг от друга – Docker ● Непрерывная интеграция – Jenkins ● Виртуальный Х-сервер xvfb
  24. 24. Ссылки ● Что такое Selenium – http://docs.seleniumhq.org/projects/webdriver/ – http://habrahabr.ru/post/152653/ ● Python Selenium http://selenium-python.readthedocs.org/ ● CSS тестирование http://habrahabr.ru/post/190358/ ● QunitJs https://qunitjs.com/ ● Geo2Tag https://github.com/geo2tag/geo2tag ● Примеры к докладу http://bit.ly/1T36po8

×