Приобрести записи курса

Доступна также новая версия тренинга, посвященная инструменту WebDriver (Selenium 2.0)

Тренер: Баранцев Алексей

На этих тренингах я буду рассказывать про Selenium и про различные фреймворки, библиотеки и вспомогательные инструменты, расширяющие возможности Selenium или упрощающие его использование. Конечно, не обойдём вниманием типичные сложности и затруднения, возникающие при использовании Selenium и поговорим про способы их преодоления, в том числе с привлечением дополнительных инструментов. Разумеется, всё это будет сопровождаться живыми демонстрациями, я дам ссылки на дополнительные материалы, поделюсь фрагментами работающего кода.

Тренинг будет состоять из шести занятий, разбитых на три модуля по два занятия в каждом.

Первый модуль -- вводный, он предназначен для тех, кто не имеет опыта работы с Selenium или уже использовал его для проектирования несложных тестов. Впрочем, он будет интересен и тем, кто уже достаточно давно разрабатывает автотесты, но хочет вспомнить или укрепить теоретические основы автоматизации.
В первом модуле я расскажу и покажу:

  • как с нуля развернуть всё необходимое для разработки и выполнения тестов,
  • как отлаживать тесты, проходя их в пошаговом режиме,
  • как сделать гибкий механизм настройки на тестовый стенд при помощи конфигурационных файлов,
  • как подгружать тестовые данные из внешнего файла,
  • как запускать тесты в разных браузерах и на удалённой машине.

Кроме того, мы поговорим о том, каких правил следует придерживаться, чтобы автоматизированные тесты было легко сопровождать и дорабатывать:

  • что автоматизировать, а что нет,
  • насколько длинные сценарии реализовывать в тестах,
  • насколько сложные делать проверки,
  • как выбрать хорошие устойчивые локаторы,
  • использовать или нет "карты пользовательского интерфейса".

Второй модуль имеет своей целью расширение кругозора, он предназначен для тех, кто уже имеет опыт использования Selenium и хочет пополнить свой комплект инструментов, а также для тех, кто стоит на перепутье, и хочет выбрать самый лучший инструмент автоматизации тестов для веб-приложений -- я постараюсь показать, что возможности Selenium практически безграничны.

За последние несколько лет Selenium приобрёл чрезвычайно высокую популярность, и вполне заслуженно. Поддержка практически всех современных браузеров, кроссплатформенность, возможность разработки тестов на различных языках программирования, наличие хорошего рекордера, возможность использования готовых тестов для нагрузочного тестирования -- по своим возможностям он опережает большинство не только бесплатных, но и коммерческих инструментов автоматизации тестирования.

Однако, как это часто бывает в среде разработки инструментов с открытым кодом, Selenium не является комплексным решением. Он предназначен для решения одной задачи, но зато делает это лучше всех. Представленная ниже диаграмма демонстрирует типовую структуру средств автоматизации тестирования и окружающей инфраструктуры, и показывает, какое место в ней занимает Selenium.

Selenium -- это драйвер веб-интерфейса. В дополнение к нему необходимо выбрать сначала язык программирования, а потом ещё один или несколько фреймворов -- для группировки и запуска тестов, для распараллеливания тестов, для облегчения разработки тестов, для журналирования процесса выполнения и так далее. А ещё нужно выбрать среду разработки и инструмент сборки и непрерывной интеграции.


Это типичный путь, характерный для программ с открытым кодом -- вместо комплексного решения предлагается самостоятельно построить нужную вам систему из отдельных "деталей". И я помогу вам пройти этот путь, расскажу о том, какие бывают детали, как их соединять друг с другом, и покажу, что получается в результате.

Третий модуль ориентирован на наиболее взыскательную аудиторию -- профессионалов-автоматизаторов.

В этом модуле, наиболее сложном технически, мы будем обсуждать различные тонкости программирования автотестов, и я рассчитываю на то, что источником информации в этой части тренинга буду не только я, но и сами участники. Я расскажу о технических решениях, которые я применяю, и надеюсь услышать, как вы решаете аналогичные задачи. Мы обсудим:

  • способы оптимизации скорости выполнения тестов,
  • различные стили написания тестов, в частности использование Hamcrest, BDD, dependency injection,
  • различные стили проверок -- проверка результата и проверка состояния, отложенные проверки,
  • способы журналирования действий,
  • организацию обработки нештатных ситуаций и восстановление работоспособности тестов после сбоев,
  • способы работы с "нативными" диалоговыми окнами,
  • и другие технические хитрости.

И напоследок пара слов о том, о чём я НЕ буду рассказывать на этих тренингах. Я не буду рассказывать о том, как придумывать тесты, для этого есть "Практикум по тест-дизайну", я не буду учить тому, как запрограммировать автотесты и сделать так, чтобы их было просто поддерживать и дорабатывать, этому можно научиться на тренинге "Программирование для тестировщиков".

Подробная программа курса

Первый модуль

Первое занятие (простые тесты)

1. Что такое Selenium, для чего он предназначен
2. Установка Selenium IDE, запуск "табличных" тестов в браузере
3. Установка Selenium Server, запуск "табличных" тестов из командной строки
4. Установка Selenium RC, перевод тестов на настоящий язык программирования

  • установка среды разработки Eclipse
  • создание и настройка проекта в среде разработки
  • перенос тестов из Selenium IDE в среду разработки
  • запуск тестов из среды разработки

5. Отладка тестов

  • пошаговое прохождение тестов в Selenium IDE и в среде разработки
  • просмотр значений переменных и выражений

6. Добавление простых проверок при помощи Selenium IDE
7. Собственные методы инициализации и завершения
8. Журналирование выполнения тестов: LoggingSelenium
9. Запуск тестов удалённо на другой машине
10. Запуск тестов в Selenium 2.0 (WebDriverBackedSelenium)

Второе занятие (усложнение тестов)

1. Создание конфигурационного файла TestNG, запуск тестов из командной строки
2. Параметризация запуска тестов через конфигурационный файл TestNG
3. Параметризация запуска тестов через отдельный конфигурационный файл
4. Передача параметров через командную строку при запуске тестов
5. Динамическая генерация тестовых данных
6. Подгрузка тестовых данных из внешних источников -- текстовый файл, Excel, база данных
7. Добавление простых проверок при помощи Selenium IDE
8. Различные подходы к идентификации элементов пользовательского интерфейса
9. Хорошая архитектура тестового набора: почему это ТАК важно!
10. Проектирование автотестов: чем оно отличается от проектирования ручных тестов

Второй модуль

Первое занятие (запуск тестов)

1. Что такое Selenium, для чего он предназначен
2. Selenium IDE и плагины к нему:

  • Flow Control
  • Test Suite Batch Converter

3. Возможности фреймворка для запуска тестов TestNG

  • провайдеры тестовых данных
  • конфигурационные файлы с описанием тестовых наборов, группировка тестов
  • параллельный запуск тестов

4. Выполнение тестов параллельно на нескольких машинах с использованием Selenium Grid
5. Выполнение тестов параллельно с использованием HtmlUnitDriver (Selenium 2.0)
6. Встраивание тестов в системы непрерывной интеграции: Cruise Control, Jenkins (Hudson)
7. Выполнение тестов "в облаках": CloudTesting, Sauce OnDemand
8. Нагрузочное тестирование с использованием Selenium: BrowserMob

Второе занятие (разработка тестов)

1. Selenium IDE, Sauce IDE
2. Molybdenum IDE
3. CubicTest
4. Example Driven Development (Selenesse)
5. Behavoiur Driven Development (JBehave, Cucumber)
6. Tellurium
7. Вспомогательные библиотеки:

  • работа с почтой (JavaMail)
  • работа с базой данных (Hibernate)
  • удалённый доступ по протоколам Telnet и FTP (Jakarta Commons Net)

8. Тестирование Flex приложений: FlexMonkium, Flex Pilot X
9. Тестирование Android-приложений (Selenium 2.0)

Третий модуль

Первое занятие

1. Журналирование выполнения тестов

  • снятие скриншотов
  • LoggingSelenium
  • commons-logging

2. Обработка нештатных ситуаций

  • нативные диалоговые окна
  • восстановление работоспособности тестов после сбоев

3. Cпособы оптимизации скорости выполнения тестов

  • кеширование результатов длительных операций
  • использование альтернативных интерфейсов доступа к приложению

Второе занятие

1. Различные стили написания тестов

  • Hamcrest -- "функциональный" стиль программирования
  • JBehave: Behaviout Driven Development (BDD) -- спецификации вместо тестов
  • RSpec + JRuby -- композиция двух предыдущих подходов

2. Различные стили проверок

  • проверка результата выполнения операций
  • проверка состояния системы между операциями
  • отложенные проверки и проверки just-in-time

Формат курса

Онлайн-тренинг продолжительностью 6 занятий, с еженедельными онлайн-занятиями.
Онлайн-занятия состоятся каждый четверг с 17-00 до 18-30. После каждого занятия у участников будет ровно неделя, чтобы попробовать применить полученные знания на практике и в случае затруднений, задать вопрос тренеру в специальном закрытом форуме.

В случае, если Вы пропустите какое-либо занятие, Вы получите его запись.

Go to top