Начало занятий в августе

Автоматизатор в тестировании

О курсе

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

В процессе обучения будут получены специализированные знания, необходимые для написания автоматических тестов REST и UI приложений. Слушатель познакомится с инструментом WebDriver, научится использовать его API для создания автоматических тестов и обращение через API к элементам Web страницы, сможет написать автоматические тесты REST API с использованием Rest-Assured framework, изучит работу популярных фреймворков, таких как Serenity, Selenide, JDI. Каждая часть курса будет постепенно углублять слушателя в автоматизацию.

Обучение предполагает обширную практическую часть с использованием всех инструментов, изучаемых на курсе, а также работу над выпускным проектом, который можно будет использовать в качестве портфолио при трудоустройстве.
Необходимое время в неделю: 4 академических часа на занятия и 4 академических часа на домашнюю работу.

Программа курса
1
Автоматизация UI
2
Webdriver API
3
Фреймворки
4
Продвинутый уровень
5
Интеграционные тесты
6
Проект
Занятие 1: Пирамида автоматического тестирования.
Автоматические тесты на разных уровнях. Стоимость автоматических тестов. Что должен делать автоматизатор?
Участники смогут: понять структуру автоматических тестов на проекте, правильно применять данную структуру в проектах.
Занятие 2: Webdriver
Как работает WebDriver. Аналоги WebDriver. Основные методы. Первый тест.
Участники смогут: познакомиться с Webdriver, узнать об аналогах. Ознакомиться, как работают методы класса WebDriver.
ДЗ
Написать первый тест, позволяющий нажимать на кнопку Find Flights в приложении BlazeDemo.com. Сценарий:
1. Открыть страницу BlazeDemo.com
2. Нажать на кнопку FindFlights
Ожидаемый результат: открылась страница с результатами поиска
Занятие 3: Знакомство с технологиями: TestNG, JUnit, XPath, CSS
Все, что необходимо для создания автоматических тестов.
Участники смогут: разобраться в первом тесте со всеми необходимыми технологиями.
Занятие 4: WebDriver: Настройка
Поддерживаемые браузеры.
Участники смогут: настраивать под свои цели Webdriver и пользоваться всеми преимуществами этого инструмента.
ДЗ
Рефакторинг Первой самостоятельной работы. Открыть сайт blazedemo.com и совершить покупку билета по любому направлению.

Проверки, которые необходимо реализовать:
1) На странице результатов поиска показаны рейсы из/в город, которые были выбраны
2) На странице заполнения данных пассажира необходимо проверить
а. номер выбранного рейса, название авиакомпании, цена из результатов поиска рейса
б. конечную цену(Total price) которая считается по формуле Total price= Price + Arbitrary Fee and Taxes
3) Заполнить любыми данными поля
4) Покупка билета завершена(есть ID, Status, Amount , последние 4 цифры введенной карты и expiration date карты)

Также необходимо:
1. Добавить @After и @Before в тест
2. Установить implicit wait
3. Добавить Expected Conditions в тех местах, где они нужны

Необходимо использовать ТОЛЬКО xpath и/или css селекторы.
Сдача задания архивом или ссылкой на github
Занятие 5: Git, Maven, Java 8 - основы для быстрого создания и масштабирования автоматических тестов
Участники смогут: пользоваться технологиями Git, Maven, Java 8 для быстрого создания и масштабироваия автоматических тестов.
Занятие 6: Шаблоны проектирования
Page Оbject - паттерн или антипаттерн? Шаблоны языка программирования Java. Page Object Recorder.
Участники смогут: узнать о шаблонах проектирования автоматических тестов и шаблонах проектирования языка программирования Java.
ДЗ
Page Object. Рефакторинг домашнего задания:


1. Воспользоваться двумя паттернами на выбор (например, Page Object и Singleton)

2. Добавить maven surefire plugin и добавить тест в suite TestNG (осуществить запуск теста командой mvn test)
3. Проект должен находиться на GitHub/BitBucket
4*(не обязательное):
- Добавить библиотеку lombok к проекту,
- воспользоваться фильтрацией из JDK 8,
- добавить Profiles к maven,
- добавить дополнительный TestNG suite и запускать suite командой mvn test -Dsuite=suite_name
Занятие 7: Элемент и работа с элементом
Что умеет делать WebDriver API с элементом на странице.
Участники смогут: познакомиться с основными функциями WebDriver API. Смогут научиться делать Drag'n'Drop с элементом.
Занятие 8: Свойства элементов. Что можно узнать об элементе
Участники смогут: проверить, подкрашен ли элемент при наведении мыши на элементе.
ДЗ
Работа со свойствами элементов. Создать автоматический тест, который проверяет размер элемента и изменения при наведении на него
Варианты выполнения домашней работы на 2х сайтах(СДЕЛАТЬ ТОЛЬКО 1!)
1. Сайт: blazedemo.com/login
Описать новый Page Object на страницу Login(если не реализован)
Навести указатель мыши на кнопку login
- Проверить, что размер кнопки не поменялся
- Проверить, что цвет кнопки в наведенном состоянии - rgba(37, 121, 169, 1)

ИЛИ

2. Сайт: automationpractice.com
Описать новый Page Object на страницу
Навести указатель мыши на кнопку WOMEN
- Проверить, что размер кнопки не поменялся
- Проверить, что цвет кнопки в наведенном состоянии - rgba(51, 51, 51, 1)
Занятие 9: Ожидания. Глубокое погружение. WebDriverWait. Explicit/implicit waits. Expected Conditions.
Участники смогут: правильно работать с ожиданиями элемента на странице.
Занятие 10: Работа с браузерами
Как запустить тесты на разных браузерах. Cookies. Proxy.
Участники познакомятся с браузерами и смогут запускать тесты на разных браузерах разных версий.
ДЗ
Добавить запуск теста через Internet Explorer/Edge/Safari. Создать автоматический тест по следующему сценарию:
1. Открыть сайт http://automationpractice.com/index.php
2. Навести указатель мыши на Women
3. Дождаться появление меню c помощью ExpectedConditions
4. Выбрать в меню T-Shirts
5. Проверить, что результаты появились на странице

Задание нужно сделать на любом из четырех браузеров на выбор:
InternetExplorer,
Edge,
Opera,
Safari

* Дополнительное задание:
Сделать параметр запуска headless, по которому Google Chrome запускается в headless режиме
Рекомендации:
Применить паттерн PageObject, вынести Menu в отдельный компонент
Занятие 11: Selenium Grid. Как быстро распараллелить тесты
Участники научатся использовать Selenium Grid из коробки для распараллеливания тестов.
Занятие 12: Behaviour Driven Development
Когда используется BDD. Cucumber. Демо.
Участники познакомятся с реализацией BDD непосредственно в автоматических тестах.
ДЗ
Behavior Driven Development. Домашнее задание:
1. Установить Cucumber как новый проект,
2. Написать два любых сценария (features) в новом проекте и реализовать их,
3. Запустить Selenium Grid на локальной машине с 1 node,
4. Запустить сценарии с использованием mvn test -Dbrowser=remotewebdriver.

Дополнительное задание:
*Внедрить Cucumber в созданный ранее проект и реализовать feature для определения результатов поиска T-shirts предыдущего домашнего задания.
Занятие 13: Serenity
Для чего нужен, преимущества. Интеграция с BDD. Демо.
Участники увидят преимущество первого фреймворка над созданием собственного решения.
ДЗ
Serenity + Cucumber. Написать Feature для реализации поиска в поисковой системе Спутник

Создать сценарий поиска любого запроса в Спутник
Убедиться, что результаты поиска присутствуют на странице.

Реализовать с помощью Serenity в связке с Cucumber.
Занятие 14: Selenide. Часть 1
Знакомство, применение. Применение прямо из коробки. Демо.
Участники познакомятся с Selenide. Узнают преимущества работы с Selenide.
Занятие 15: Selenide. Часть 2
PageObject по версии Selenide. Настройка Selenide. Демо проект.
Участники смогут настраивать Selenide под нужды проекта.
ДЗ
Selenide. Необходимо реализовать тест с использованием Selenide


Кейс:

1. Открыть страницу artlebedev.ru,

2. Перейти на страницу Инвентарь,

3. Выбрать Полезные штуки "Матрица идей",

4. Выполнить поиск любого запроса,


Проверить, что результаты поиска отображаются.



Дополнительные задания:

- Реализовать Test в виде цепочки,

- Использовать ElementsContainer для Меню сайта.
Занятие 16: Appium
Необходимость и применение. Сравнение с WebDriver.
Знакомство с Appium. Принципы работы этого инструмента.
Занятие 17: JDI
Преимущества JDI над остальными по версии JDI. Когда стоит использовать данный фреймворк. Демо + сравнение.
Знакоство с JDI. Сравнение JDI с уже известными фреймворками. Плюсы и минусы.
ДЗ
JDI. Тест на покупку билетов с использованием JDI. Выбрать понравившийся фреймворк
Занятие 18: Сравнение всех фреймворков
Html Elements, Arachnidium и прочие.
Участники смогут выбрать нужный фреймворк для создания автоматических тестов в проекте с нуля.
Занятие 19: xPath vs CSS
Функции XPath против простоты CSS. Какой локатор лучше?
Участники сравнят создание селекторов с помощью XPath и CSS.
ДЗ
Написать все элементы Header и Поиска с помощью XPath и CSS.
Занятие 20: JUnit 5
Сравнение с TestNG. Применение. Listeners
Участники смогут поучаствовать в вечной битве между Junit и TestNG, узнать все плюсы и минусы данных подходов и найти лучший.
Занятие 21: Логирование
Средства для логирования автотестов. Как можно быстро найти баг в автотесте.
Участники смогут быстро находить баги в автотестах используя логирование сторонними инструментами.
ДЗ
Добавить логирование, запись видео, траффика, снятие скриншотов в свой проект.
Занятие 22: Allure 2.0, Report Portal
Отчеты о прохождении тестов. Интеграция в проект.
Участники познакомятся с Allure, Report Portal. Сравнят оба решения.
Занятие 23: Jenkins и Continuous Integration
Работа и настройка Jenkins для прогона автоматических тестов.
Участники познакомятся с Jenkins, смогут настроить Jenkins под свои нужды в проекте.
ДЗ
Добавить свой проект к тестовому Jenkins. Создать Job для запуска теста. Добавить Allure в Jenkins для отчетов (как плагин и интегрировать в проект)
Занятие 24: Continuous Delivery. Pipelines
Как можно помочь процессу CI/CD для выкатки приложения.
Участники смогут понять, как автоматические тесты лучше всего помогают в Continuous Delivery, что такое Continuous Delivery.
Занятие 25: Многопоточные тесты. Работа с ThreadLocal, synchronized
Неочевидные проблемы работы с многопоточностью.
Использование многопоточности для параллельного запуска тестов. Подводные камни.
ДЗ
Добавить synchronized метод, ThreadLocal переменные в проект. Протестировать многопоточный запуск тестов и обращение к переменным
Занятие 26: Selenoid, Docker как новый виток развития запуска многопоточных тестов
Участники смогут настраивать Selenoid для запуска тестов в параллельном режиме на разных браузерах.
Занятие 27: Автоматические тесты при тестировании безопасности Web приложения
Участники смогут использовать DataProvider и писать тесты на поиск уязвимостей Web-приложений.
ДЗ
Добавить DataProvider к проекту и написать тест на поиск XSS уязвимостей приложения.
Занятие 28: Внедрение автоматизации в QA отделе
Интеграция автоматизации в R&D Team. Оценка трудозатрат.
Участники узнают про интеграцию автоматизации в проект, как в начальной стадии проекта, так и в середине проекта.
Занятие 29: Введение в интеграционное тестирование
Какие тесты пишут автоматизаторы. Stubs.
Участники узнают про интеграционное тестирование, смогут понять, в какой части интеграционных тестов автоматизаторы могут помочь.
Занятие 30: REST API
HttpClient для отправки и получении запросов. Hamcrest для валидации.
Участники узнают, как отправлять запросы и получать ответы. Познакомятся с Hamcrest для валидации ответов.
Занятие 31: Rest-assured, UniRest для интеграционного тестирования
Участники познакомятся с Rest Assured, научатся быстро писать интеграционные тесты в проекте.
ДЗ
Создать два теста с использованием Rest-Assured фреймворка.
Занятие 32: Создание интеграционных тестов и UI тестов
Как можно объединить возможности интеграционного и UI тестирования в автоматизации.
Участники смогут решать задачи создания UI тестов на основе проверок REST API.
ДЗ
Создать тест, отправляющий запрос на REST и проверяющий соответствие данных в UI.
Проект. Написать автоматические тесты в проекте. Разделение на команды. Работа в одном репозитории.
Преподаватели
Павел Попов
Эксперт в области автоматического тестирования с опытом работы более 7 лет. Прошел карьерный путь от тестировщика до программиста в тестировании. Управлял командами тестирования, работал в должности менеджера по автоматизации тестирования. Сейчас занимает позицию в Финтех компании, главный офис разработки которой находится на Кипре.
Один из основателей школы автоматизации тестирования Quality Alliance. Постоянно улучшает свои навыки принимая участие на конференциях в качестве докладчика/участника: European Testing Conference, SeleniumCamp, Mail.Ru Meetup, Яндекс.Гости, QACyprusCommunity, Mera DevFest.
Работал преподавателем в Академии при Президенте РФ (слушатели курсов: студенты третьего курса специальности Информационные Технологии).
Имеет почетную грамоту “За многолетнее плодотворное участие в развитии Quality Assurance Alliance клуба vk.com/qa_alliance”.
Работодатели