Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Testing with Selenium

3,816 views

Published on

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

Published in: Software
  • Be the first to comment

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

×