SlideShare a Scribd company logo
Тестирование веб-приложений в
Selenium
Марк Заславский, mark.zaslavskiy@gmail.com
Структура доклада
● Доклад:
– Что такое Selenium
– Примеры тестов
– Использование Selenium в Continious Integration
проекта Geo2Tag
●
Скачать примеры http://bit.ly/1T36po8
● Примеры подготовлены для
– Ubuntu 14.04
– Python 2.7
– Selenium 2.45
Что такое Selenium
● Selenium WebDriver
– инструмент для
автоматизации
тестирования веб-
приложения в
браузере.
● Поставляется в виде
библиотеки.
● Единый подход к
разным браузерам.
Схема работы
Возможности Selenium
● протестировать js логику
● протестировать пользовательский веб-
интерфейс (в том числе и css)
● автоматизировать действия на сложных
вебстраницах
Пример: Когда нужен Selenium
● Есть социальная сеть, которую активно
разрабатывает большая команда,
● Хочется быть уверенным, что основные юзкейсы
не сломались перед очередным релизом:
– Авторизация
– Просмотр сообщений
– Отправка сообщений
– Выход из системы
● Решение – Selenium скрипт для
воспроизведения каждого юзкейса.
Пример: Когда нужен Selenium 2
● Вконтакте есть закладки (<3), но нет поиска
по ним.
● В закладках может накопиться очень много
полезных записей.
● Чтобы найти старые записи, нужно
пролистать страницу очень много раз вниз.
● Решение:
– Selenium приложение, которое скролит закладки
до дна и индексирует содержимое (ссылка на
контент, аннотация, дата)
Реализации Selenium
● Поддержка языков
– Официально: Java, C#, Ruby, Python,
NodeJS
– Неофициально: Php, Perl, Objective C,
Haskell ….
● Поддержка браузеров
– Chrome, Opera, Firefox, Safari, Android, Ios,
Windows Phone, BlackBerry
Основные интерфейсы
● Поиск элементов: xpath, css, id, tag, name,
link content, class
● Установка задержек: явные и неявные
● Выполнение действий со страницей:
– Произвольный js код
– Пользовательский ввод
– Переходы на другие страницы/назад и вперед по
истории
– Взаимодействие с диалогами
– Drag n Drop
Базовая последовательность
работы с Selenium
1.Создаем объект webdriver
2.Открываем веб-страницу
3.Устанавливаем величину задержки
ожидания действий веб-страницы
4.Ищем элементы
5.Выполняем действия над элементами
6.Проверяем результаты действий через
Assert
example1.py
● Ищем слово Selenium в Ya.ru
● Последовательность:
– Запускаем браузер
– Ищем поле ввода с атрибутом name='text'
– Вводим 'Selenium'
– Вводим 'n'
example1.py - анализ
● driver.implicitly_wait() устанавливает
максимальное время в секундах, которое
Selenium будет ждать, пока не появится
искомый для find_element_by_* элемент.
● driver.close() - закрывает браузер
● Появляющееся окно браузера не находится
в режиме инкогнито
example2.py
● Интегрируемся с python unittest – помещаем
логику тестирования в класс-наследник
TestCase
● Добавляем проверки через TestCase.assert*
● Получаем отформатированный вывод
результатов теста в консоль + индикацию о
успешности тестов в кодах возврата скрипта.
Js unittests + selenium
● Проблема – есть много js бизнес-логики и ее
хочется автоматизированно юнит-
тестировать
● Решение:
– Создаем веб-страницу /js-tests с js-юниттестами
– Настраиваем все так, чтобы js тесты
выполнялись сами при обновлении страницы
– В selenium тесте открываем /js-tests и проверяем,
что содержимое страницы соответствует
успешному прохождению js тестов
QUnit
● Позволяет проводить юнит тестирование
любой сложности для js
● В том числе – для асинхронных методов
● Представляет результаты в удобном для
анализа виде (статистика по каждому тесту
+ время выполнения)
● Запускает тесты сразу после открытия
страницы
Example3.html
● Что мы видим на
странице
● Как организованы
тесты
● В каких элементах
разметки можно
узнать:
– Что тесты закончили
выполнение
– Сколько тестов
упало
example3.py( QUnit + Selenium)
● Открываем
страницу
example3.html
● Проверяем что
она:
– Все тесты
завершили
работу
– Показывает,
что все тесты
пройдены
Автоматизация тестирования
через Selenium - наблюдения
● Отдельный скрипт для запуска тестирования с
указанием имени сайта, который проверяем
● Каждый раз открывать браузер – долго!
● Параметризация тестов – надо заложить сразу
– Помогает не привязатся намертво к
конкретному серверу и делает набор тестов
отличным инструментом проверки
– Правильный базовый класс
Очистка кэша браузера при
тестировании
● Проблема: Selenium не имеет стандартного
интерфейса для очистки кэша браузера
● Варианты:
– Очищать вручную
– Каждый раз использовать чистую среду
(изолировать тесты)
– Использовать инвалидацию кэша на стороне
веб-приложения
Geo2Tag
● Open Source платформа для сервисов,
использующих данные о местоположении
● Веб-интерфейсы для администрирования
● REST API
Как Selenium используется в
Geo2Tag
● Для каждого коммита в репозиторий
запускаются проверки (unittest, integration tests,
Selenium)
● Все проверки проходят последовательно
● Проверка происходит в изолированной
виртуальной машине
● В качестве способа проверки для большой
части Frontend-задач выступает
Selenium/QunitJs тест
Как Selenium используется в
Geo2Tag - схема
Как Selenium используется в
Geo2Tag - технологии
● ОC – Ubuntu 14.04 без графической
подсистемы
● Изоляция сборок друг от друга – Docker
● Непрерывная интеграция – Jenkins
● Виртуальный Х-сервер xvfb
Ссылки
● Что такое 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

More Related Content

PDF
Обзор Linux Control Groups
PDF
Пространства имен Linux (linux namespaces)
PDF
Linuxvirt seminar-csc-2015
PDF
Python Development process in Yandex
PDF
Кратчайшее введение в docker по-русски
PDF
Многопоточное программирование на C#, путевые заметки
PDF
Как это будет: ASP.NET Core
Обзор Linux Control Groups
Пространства имен Linux (linux namespaces)
Linuxvirt seminar-csc-2015
Python Development process in Yandex
Кратчайшее введение в docker по-русски
Многопоточное программирование на C#, путевые заметки
Как это будет: ASP.NET Core

What's hot (20)

PDF
C++ STL & Qt. Занятие 11.
PDF
Непрерывная интеграция Python-проектов в Яндексе
ODP
Введение в Docker
PDF
Советы для начинающих разработчиков PostgreSQL
PPTX
Система обработки бизнес-логики server-side приложения на Groovy
ODP
Скриптовой язык Groovy и его применение в рамках разработки ПО
PPT
Groovy
PPTX
системы сборок проектов
PDF
Docker с чем едят и для чего используют
PDF
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
PDF
C++ STL & Qt. Занятие 05.
PDF
OpenStack и Docker: вместе и по отдельности
PDF
Микросервисы: взгляд сверху и в бок
PDF
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PDF
Android - 11 - Multithreading
POTX
Разработка надежных параллельных, распределенных приложений: быстро и дешево
PDF
RHEL 7. Контейнеры и Docker
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
ODP
Docker : что это, зачем, и как им пользоваться
C++ STL & Qt. Занятие 11.
Непрерывная интеграция Python-проектов в Яндексе
Введение в Docker
Советы для начинающих разработчиков PostgreSQL
Система обработки бизнес-логики server-side приложения на Groovy
Скриптовой язык Groovy и его применение в рамках разработки ПО
Groovy
системы сборок проектов
Docker с чем едят и для чего используют
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
C++ STL & Qt. Занятие 05.
OpenStack и Docker: вместе и по отдельности
Микросервисы: взгляд сверху и в бок
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Android - 11 - Multithreading
Разработка надежных параллельных, распределенных приложений: быстро и дешево
RHEL 7. Контейнеры и Docker
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Docker : что это, зачем, и как им пользоваться
Ad

Viewers also liked (20)

PDF
Студентам и не только. Как выступить с докладом по своей научной работе
PDF
[MDBCI] Mariadb continuous integration tool
PDF
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
PDF
Обзор файловой системы GlusterFS
PDF
N8xx olpc connectivity
PDF
MOOCs Virtual Lab in Modern Education
PDF
Обзор Btrfs
ODP
OLPC Mesh networking improvements
ODP
SVG-player plugin for ns2 simulations
PDF
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
PPT
Fruct4 n8xx olpc-connectivity
PDF
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
PDF
Обзор архитектуры [файловой] системы Ceph
PDF
Работа с геоданными в MongoDb
PPT
Open Source implementation of ZigBee
PDF
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
PDF
Block-level compression in Linux. Pro et contra
ODP
Geo2tag LBS platform training at FRUCT12
PDF
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
PDF
Source code analyzer
Студентам и не только. Как выступить с докладом по своей научной работе
[MDBCI] Mariadb continuous integration tool
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Обзор файловой системы GlusterFS
N8xx olpc connectivity
MOOCs Virtual Lab in Modern Education
Обзор Btrfs
OLPC Mesh networking improvements
SVG-player plugin for ns2 simulations
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...
Fruct4 n8xx olpc-connectivity
Full Automated Continuous Integration and Testing Infrastructure for Maxscale...
Обзор архитектуры [файловой] системы Ceph
Работа с геоданными в MongoDb
Open Source implementation of ZigBee
Virtual-HSM: Virtualization of Hardware Security Modules in Linux Containers
Block-level compression in Linux. Pro et contra
Geo2tag LBS platform training at FRUCT12
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015
Source code analyzer
Ad

Similar to Testing with Selenium (20)

PPTX
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
PPTX
Эволюция автотестирования на Selenium
PDF
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
ODP
День 1: Автоматизированное тестирование: Введение
PDF
Как построить свой фреймворк для автотестов?
PPTX
Расширяемая платформа для создания и управления автоматизированными тестами н...
PPTX
автоматизация тестирования с помощью Selenium
PPT
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
PPT
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
PDF
Плюсы и минусы автоматизации, пример из жизни
PPTX
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Автоматизация тестирования многопоточности
PDF
Dev collaboration
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PPTX
Do you know what you are testing?
PPTX
А вы знаете что тестируют ваши тесты?
PPT
Selenium Begins
PDF
Александр Ярулин - Автоматизация тестирования с xUnit
PDF
Froglogic Squish
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Эволюция автотестирования на Selenium
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
День 1: Автоматизированное тестирование: Введение
Как построить свой фреймворк для автотестов?
Расширяемая платформа для создания и управления автоматизированными тестами н...
автоматизация тестирования с помощью Selenium
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Плюсы и минусы автоматизации, пример из жизни
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Автоматизация тестирования многопоточности
Dev collaboration
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Do you know what you are testing?
А вы знаете что тестируют ваши тесты?
Selenium Begins
Александр Ярулин - Автоматизация тестирования с xUnit
Froglogic Squish

More from OSLL (13)

PDF
SLAM Constructor Framework for ROS
PDF
Microservice architecture for Geo2Tag
PDF
Raspberry Pi robot with ROS
PPTX
Fruct14 sholokhova
PPTX
SECR'13 Lightweight linux shared libraries profiling
PDF
Smart-M3 and Geo2Tag integration
ODP
HTML5 Intro and Tizen Web API
ODP
Fruct13 geo2tag-training
PDF
Json protocol, Geo2tag REST API fundamentals
PDF
Introduction to geo-tagging and geo2tag platform
PPTX
Detection pulse by video
PPT
Using Intel NAS-PT for testing NAS disks
ODP
Geo2Tag LBS Platform Architecture Overview
SLAM Constructor Framework for ROS
Microservice architecture for Geo2Tag
Raspberry Pi robot with ROS
Fruct14 sholokhova
SECR'13 Lightweight linux shared libraries profiling
Smart-M3 and Geo2Tag integration
HTML5 Intro and Tizen Web API
Fruct13 geo2tag-training
Json protocol, Geo2tag REST API fundamentals
Introduction to geo-tagging and geo2tag platform
Detection pulse by video
Using Intel NAS-PT for testing NAS disks
Geo2Tag LBS Platform Architecture Overview

Testing with Selenium

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