Разработка тестов на Java с использованием Selenium 2.0
Этот тренинг устарел. Вместо него запущен новый: Selenium WebDriver: полное руководство
Тренер: Баранцев Алексей
Этот тренинг является логическим продолжением тренинга "Разработка тестов на Java с использованием Selenium 1.0", посвященного предыдущей версии инструмента Selenium. Однако для участия в этом тренинге не требуется никаких предварительных знаний про Selenium 1.0.
Вторая версия Selenium не является результатом эволюционного развития первой. Это абсолютно новый инструмент, с новым интерфейсом и новыми возможностями, которыми не обладала предыдущая версия. Основные отличия Selenium 2.0 и 1.0 описаны в статье "Раз селениум, два селениум", а подробное сравнение двух версий будет одной из ключевых тем данного тренинга -- демонстрация примеров будет производиться сразу для двух версий параллельно.
Я буду рассказывать про Selenium и про различные фреймворки, библиотеки и вспомогательные инструменты, расширяющие возможности Selenium или упрощающие его использование. Мы рассмотрим типичные сложности и затруднения, возникающие при использовании Selenium и поговорим про способы их преодоления, в том числе с привлечением дополнительных инструментов. Разумеется, всё это будет сопровождаться живыми демонстрациями, я дам ссылки на дополнительные материалы, поделюсь фрагментами работающего кода.
Тренинг будет состоять из шести занятий, разбитых на три модуля по два занятия в каждом.
Освоения материала первого модуля слушателям будет достаточно для того, чтобы установить и настроить всё необходимое для разработки и выполнения тестов с использованием Selenium 2.0. Второй модуль посвящен рассмотрению различных расширений Selenium, в том числе не только для языка Java. Cреди этих расширений (только не удивляйтесь) встретится другой популярный инструмент автоматизации веб-тестов Watir (да-да!), инструменты для тестирования приложений в мобильных браузерах и даже инструменты для удаленного тестирования нативных Windows-приложений!
Теперь подробнее про содержание и назначение каждого модуля.
Первый модуль -- вводный, он предназначен для тех, кто:
- не имеет опыта работы с Selenium или уже использовал его для проектирования несложных тестов
- имеет опыт работы с Selenium Classic (1.0) и хочет узнать, как все то же самое сделать с использованием WebDriver (2.0).
В первом модуле я расскажу и покажу:
- как с нуля развернуть всё необходимое для разработки и выполнения тестов,
- как отлаживать тесты, проходя их в пошаговом режиме,
- как сделать гибкий механизм настройки на тестовый стенд при помощи конфигурационных файлов,
- как подгружать тестовые данные из внешнего файла,
- как запускать тесты в разных браузерах и на удалённой машине.
Всё это будет демонстрироваться одновременно для двух версий -- Selenium Classic (1.0) и WebDriver (2.0)
Второй модуль имеет своей целью расширение кругозора, он предназначен для тех, кто уже имеет опыт использования Selenium и хочет пополнить свой комплект инструментов, а также для тех, кто стоит на перепутье, и хочет выбрать самый лучший инструмент автоматизации тестов для веб-приложений.
Selenium Classic (1.0) приобрёл чрезвычайно высокую популярность, и вполне заслуженно. Поддержка практически всех современных браузеров, кроссплатформенность, возможность разработки тестов на различных языках программирования, наличие хорошего рекордера, возможность использования готовых тестов для нагрузочного тестирования -- по своим возможностям он опережает большинство не только бесплатных, но и коммерческих инструментов автоматизации тестирования.
WebDriver (2.0) имеет ещё более высокий потенциал, поскольку в его разработку включились производители ведущих браузеров -- Google, Mozilla, Opera.
Однако, как это часто бывает в среде разработки инструментов с открытым кодом, Selenium не является комплексным решением. Он предназначен для решения одной задачи, но зато делает это лучше всех. Представленная ниже диаграмма демонстрирует типовую структуру средств автоматизации тестирования и окружающей инфраструктуры, и показывает, какое место в ней занимает Selenium.
Selenium -- это драйвер веб-интерфейса. В дополнение к нему необходимо выбрать сначала язык программирования, а потом ещё один или несколько фреймворов -- для группировки и запуска тестов, для распараллеливания тестов, для облегчения разработки тестов, для журналирования процесса выполнения и так далее. А ещё нужно выбрать среду разработки и инструмент сборки и непрерывной интеграции.
Это типичный путь, характерный для программ с открытым кодом -- вместо комплексного решения предлагается самостоятельно построить нужную вам систему из отдельных "деталей". И я помогу вам пройти этот путь, расскажу о том, какие бывают детали, как их соединять друг с другом, и покажу, что получается в результате.
Третий модуль ориентирован на наиболее взыскательную аудиторию -- профессионалов-автоматизаторов.
В этом модуле, наиболее сложном технически, мы будем обсуждать различные тонкости программирования автотестов, и я рассчитываю на то, что источником информации в этой части тренинга буду не только я, но и сами участники. Я расскажу о технических решениях, которые я применяю, и надеюсь услышать, как вы решаете аналогичные задачи. Мы обсудим:
- способы оптимизации скорости выполнения тестов,
- различные стили написания тестов, в частности использование Hamcrest, BDD, dependency injection,
- различные стили проверок -- проверка результата и проверка состояния, отложенные проверки,
- способы журналирования действий,
- организацию обработки нештатных ситуаций и восстановление работоспособности тестов после сбоев,
- способы работы с "нативными" диалоговыми окнами,
- и другие технические хитрости.
И напоследок пара слов о том, о чём я НЕ буду рассказывать на этих тренингах. Я не буду рассказывать о том, как придумывать тесты, для этого есть "Практикум по тест-дизайну", я не буду учить тому, как запрограммировать автотесты и сделать так, чтобы их было просто поддерживать и дорабатывать, этому можно научиться на тренинге "Программирование для тестировщиков".
Подробная программа курса
Первый модуль
Первое занятие (простые тесты, с демонстрацией одновременно на двух версиях Selenium)
1. Что такое Selenium, для чего он предназначен
2. Сравнение версий: Selenium 2.0 = Selenium Classic + WebDriver
3. Установка Selenium IDE, запуск "табличных" тестов в браузере
4. Установка Selenium Server, запуск "табличных" тестов из командной строки
5. Перевод тестов на настоящий язык программирования
- установка среды разработки Eclipse
- создание и настройка проекта в среде разработки
- перенос тестов из Selenium IDE в среду разработки
- запуск тестов из среды разработки
6. Отладка тестов - пошаговое прохождение и просмотр значений переменных
7. Добавление простых проверок при помощи Selenium IDE
8. Собственные методы инициализации и завершения
9. Запуск тестов удалённо на другой машине
Второе занятие (усложнение тестов)
1. Создание конфигурационного файла TestNG, запуск тестов из командной строки
2. Параметризация запуска тестов через конфигурационный файл TestNG
3. Параметризация запуска тестов через отдельный конфигурационный файл
4. Передача параметров через командную строку при запуске тестов
5. Динамическая генерация тестовых данных
6. Подгрузка тестовых данных из внешних источников -- текстовый файл, Excel, база данных
7. Различные подходы к идентификации элементов пользовательского интерфейса
8. Хорошая архитектура тестового набора: почему это ТАК важно!
9. Проектирование автотестов: чем оно отличается от проектирования ручных тестов
Второй модуль
Первое занятие (расширения для запуска тестов)
1. Возможности фреймворка для запуска тестов TestNG
- провайдеры тестовых данных
- конфигурационные файлы с описанием тестовых наборов, группировка тестов
- параллельный запуск тестов
4. Выполнение тестов параллельно на нескольких машинах с использованием Selenium Grid 2.0
5. Выполнение тестов параллельно с использованием HtmlUnitDriver
6. Встраивание тестов в системы непрерывной интеграции: Cruise Control, Jenkins (Hudson)
7. Выполнение тестов "в облаках": CloudTesting, Sauce OnDemand
8. Нагрузочное тестирование с использованием Selenium: BrowserMob
Второе занятие (расширения для разработки тестов)
1. Selenium IDE, Sauce IDE
2. Fluent Selenium
3. Behavoiur Driven Development (JBehave, Cucumber)
4. Watir-WebDriver
5. Тестирование веб-приложений под Android
6. Тестирование нативных приложений: nativedriver, twin
7. Вспомогательные библиотеки:
- работа с почтой (JavaMail)
- работа с базой данных (Hibernate)
- удалённый доступ по протоколам Telnet и FTP (Jakarta Commons Net)
Третий модуль
Первое занятие
1. Журналирование выполнения тестов
- снятие скриншотов
- журналирование средствами фреймворка TestNG
- журналирование с использованием EventFiringWebDriver
2. Обработка нештатных ситуаций
- нативные диалоговые окна - AutoItX и Sikuli
- восстановление работоспособности тестов после сбоев
3. Cпособы оптимизации скорости выполнения тестов
- кеширование результатов длительных операций
- использование альтернативных интерфейсов доступа к приложению
Второе занятие
1. Различные стили написания тестов
- Hamcrest -- "функциональный" стиль программирования
- JBehave: Behaviout Driven Development (BDD) -- спецификации вместо тестов
- RSpec + JRuby -- композиция двух предыдущих подходов
2. Различные стили проверок
- проверка результата выполнения операций
- проверка состояния системы между операциями
- отложенные проверки и проверки just-in-time
Формат курса
Онлайн-тренинг продолжительностью 6 занятий, с еженедельными онлайн-занятиями.
Онлайн-занятия состоятся каждый четверг с 17-00 до 18-30. После каждого занятия у участников будет ровно неделя, чтобы попробовать применить полученные знания на практике и в случае затруднений, задать вопрос тренеру в специальном закрытом форуме.
В случае, если Вы пропустите какое-либо занятие, Вы получите его запись.