SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Тестирование веб-приложений в
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

Mais conteúdo relacionado

Mais procurados

C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker Andrey Markelov
 
Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Советы для начинающих разработчиков PostgreSQL
Советы для начинающих разработчиков PostgreSQL Anastasia Lubennikova
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
системы сборок проектов
системы сборок проектовсистемы сборок проектов
системы сборок проектовRomero78
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиAndrey Markelov
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Noveo
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Android - 11 - Multithreading
Android - 11 - MultithreadingAndroid - 11 - Multithreading
Android - 11 - MultithreadingNoveo
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerAndrey Markelov
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Docker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяDocker : что это, зачем, и как им пользоваться
Docker : что это, зачем, и как им пользоватьсяСергей Ладыгин
 

Mais procurados (20)

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

Destaque

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

Destaque (20)

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

Semelhante a Testing with Selenium

Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексейsolit
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumSQALab
 
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...Mail.ru Group
 
День 1: Автоматизированное тестирование: Введение
 День 1: Автоматизированное тестирование: Введение День 1: Автоматизированное тестирование: Введение
День 1: Автоматизированное тестирование: ВведениеOleg Popov
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...jazzteam
 
автоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumавтоматизация тестирования с помощью Selenium
автоматизация тестирования с помощью Seleniumvyacheslavmaslov
 
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...CodeFest
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниz-tech
 
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium SQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Автоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточностиSQALab
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?Mikalai Alimenkou
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?SQALab
 
Александр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitАлександр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitYandex
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 

Semelhante a Testing with Selenium (20)

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

Mais de OSLL

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSOSLL
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2TagOSLL
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROSOSLL
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhovaOSLL
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingOSLL
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationOSLL
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIOSLL
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-trainingOSLL
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsOSLL
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformOSLL
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video OSLL
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksOSLL
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewOSLL
 

Mais de OSLL (13)

SLAM Constructor Framework for ROS
SLAM Constructor Framework for ROSSLAM Constructor Framework for ROS
SLAM Constructor Framework for ROS
 
Microservice architecture for Geo2Tag
Microservice architecture for Geo2TagMicroservice architecture for Geo2Tag
Microservice architecture for Geo2Tag
 
Raspberry Pi robot with ROS
Raspberry Pi robot with ROSRaspberry Pi robot with ROS
Raspberry Pi robot with ROS
 
Fruct14 sholokhova
Fruct14 sholokhovaFruct14 sholokhova
Fruct14 sholokhova
 
SECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profilingSECR'13 Lightweight linux shared libraries profiling
SECR'13 Lightweight linux shared libraries profiling
 
Smart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integrationSmart-M3 and Geo2Tag integration
Smart-M3 and Geo2Tag integration
 
HTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web APIHTML5 Intro and Tizen Web API
HTML5 Intro and Tizen Web API
 
Fruct13 geo2tag-training
Fruct13 geo2tag-trainingFruct13 geo2tag-training
Fruct13 geo2tag-training
 
Json protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentalsJson protocol, Geo2tag REST API fundamentals
Json protocol, Geo2tag REST API fundamentals
 
Introduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platformIntroduction to geo-tagging and geo2tag platform
Introduction to geo-tagging and geo2tag platform
 
Detection pulse by video
Detection pulse by video Detection pulse by video
Detection pulse by video
 
Using Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disksUsing Intel NAS-PT for testing NAS disks
Using Intel NAS-PT for testing NAS disks
 
Geo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture OverviewGeo2Tag LBS Platform Architecture Overview
Geo2Tag LBS Platform Architecture Overview
 

Testing with Selenium

  • 1. Тестирование веб-приложений в Selenium Марк Заславский, mark.zaslavskiy@gmail.com
  • 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