Программа:
Вводное занятие. Сразу к практике!
1. Практика. Пишем первый автотест: Java / Gradle / JUnit5 / Selenide
2. Изучаем готовый проект с инфраструктурой: Github / Jenkins / Allure Report / Allure TestOps / Selenoid / Телеграм-бот
Дополнительное занятие. Профессионально работаем с IntelliJ IDEA Юрий Артамонов (JetBrains)
1. Основы
2. Git and Github
3. Docker
4. Базы данных
5. HTTP Client
6. Selenium
7. BDD Support
Git. Github. Погружаемся. Дмитрий Тучс
1. Еще раз повторим основы Git & Github
2. Основы ветвления, pull requests
Погружаемся в инструментарий и библиотеки. Станислав Васенков и Дмитрий Тучс.
1. Теория: Gradle, JUnit5, Selenide
2. Практика. Работаем с тренажером demoqa.com
3. Рассмотрим подробнее возможности Selenide и CSS/Xpath-селекторы
Дополнительное занятие. Selenide IDE - и такое бывает
Не путать с Selenium IDE, но его тоже рассмотрим
(Занятие в помощь начинающему автоматизатору, как достучаться до первых сложных элементов)
1. Установим Selenium IDE, сделаем экспорт в java-код
2. Установим Selenide IDE
3. Сравним оба варианта
Продолжаем разрабатывать автотесты. PageObjects. Станислав Васенков.
1. Добавляем в код PageObjects
2. Изучаем подходы - степовой, сценарный, dsl
3. Добавляем PageComponents
Основы Java. Дмитрий Тучс
1. Src - main
2. Класс с точки зрения файлов
3. Класс с точки зрения Java
4. Class fields - переменные (в чем разница)
5. Примитивные типы данных
6. Литералы
7. Операторы
8. Управляющие конструкции
9. Метод, как описание поведения
10. Создание объектов и вызов методов
Продолжаем разрабатывать автотесты. Генерация тестовых данных. Станислав Васенков.
1. Генерим рандомные значения используя встроенные библиотеки
2. Используем JavaFaker
JUnit 5. Дмитрий Тучс
1. Аннотация @ Test
2. Что из себя представляют аннотации в Java
3. Пишем свою простейшую реализацию JUnit5
4. @ Disabled , @DisplayName
5. Тест кейс - что такое и из чего состоит
6. Параметризованные тесты:
- концепция
- sources (дата-провайдеры)
- нэйминг
Работаем с файлами. Дмитрий Тучс
1. Как скачать и прочитать файл
2. Проверяем контент в .txt, .pdf, .xls/.xlsx, .doc/.docx, .zip
Allure Reports. Артём Ерошенко
1. Практика. Подключение Allure Reports и настройка отчетности о прохождении автотестов
2. Практика. Построение более информативной отчетности c вложениями:
- прикладываем скриншоты, файлы, логи и другие вложения в отчет
3. Теория. Обзор возможностей Allure Reports
Selenide #1. Часть I. Алексей Виноградов
0. DOM для начинающих (запись)
1. Лайвкодинг - простые тесты для GitHub
2. Лайвкодинг - GitHub с решением некоторых типичных проблем
Дополнительное занятие. Selenide #1. Часть II. Алексей Виноградов
1. Основные функции библиотеки Selenide (справочник-шпаргалка)
2. Ответы на вопросы
**Внимание! Занятие содержит задание без проверки!
Jenkins. Создаем первую задачу. Станислав Васенков.
1. Практика. Создаем задачу (Job), связываем с репозиторием в Github, запускаем тесты удаленно.
2. Теория. Основы Jenkins.
3. Теория. Основы CI/CD.
Управляем параметрами в коде и в Jenkins. Станислав Васенков.
1. Передаем параметры в код из командной строки
2. Прячем приватные данные с библиотекой Owner
3. Передаем параметры из Jenkins
Телеграм-бот. Отправляем уведомления о результатах прохождении автотестов. Станислав Васенков.
1. Практика. Пишем телеграмм-бота
2. Практика. Постобработка сборки. Настраиваем отправку уведомлений в Jenkins
3. Теория. Обзор возможностей Telegram API
Учимся быстро разрабатывать готовые проекты для тестовых заданий. Станислав Васенков.
Набиваем руку небольшими проектами.
1. Находим интересную нам вакансию (hh.ru / linkedin / @qa_jobs)
2. Делаем небольшой проект:
- разрабатываем 5-10 простых автотестов на сайт из вакансии
- создаем задачу в Jenkins
- прячем секретные данные с owner
- настраиваем Allure-отчет, добавляем вложения:
-- снимки экрана
-- логи браузера
-- видеозапись теста
-- настраиваем уведомления в telegram / slack
По мере прохождения курса добавим сюда:
- автотесты на API
- тест-план Allure TestOps - с ручными и автоматизированными тестами
- интеграцию с Jira
3. Отправляем наш проект hr c сопроводительным письмом
Selenoid. Роман Орлов
1. Практика. Добавляем контейнеризацию к задаче в Jenkins
2. Теория. Основы Docker. Selenoid
Библиотека Owner. Артём Ерошенко
1. Правильно организуем хранение свойств (properties) в проекте с библиотекой Owner
2. Прячем секретные данные в Jenkins
Selenide #2. Алексей Виноградов
1. Практика:
- пишем автотесты на Selenide
- тестируем виджеты
2. Теория:
- закрепление знаний, полученных на практике
- Java
- JUnit5
REST API. Пишем автотесты с Rest-assured. Станислав Васенков.
1. Практика. Пишем тесты на REST API при помощи библиотеки Rest-assured
2. Теория. Основы HTTP-протокола, типы запросов, коды ответов
REST API. Декомпозируем UI-тесты. Подключаем отчетность
1. Превращаем UI-взаимодействия в API-запросы
Больше возможностей REST-assured
2.Подключаем Allure-listener
3. Добавляем шаблоны для более красивого отчета
REST API. Модели. Спецификации. Станислав Васенков.
1. Убираем тело запроса и ответ в модели
2. Добавляем спецификации
Дополнительное занятие. REST API/ Groovy. Алексей Кузнецов
- Groovy для ассертов и основы языка
- Немного магии Java
- Спецификации
- Шаблоны для Allure
*Внимание! Занятие содержит задание без проверки!
Дополнительное занятие. REST API. Закрепляющее занятие. Дмитрий Тучс
1. Swagger
2. API с другой стороны (backend на spring boot)
3. Интеграция backend со Swagger
4. Контроллеры, возвращающие списки объектов
5. Практика
*Внимание! Занятие содержит задание без проверки!
Дополнительное занятие. SOAP API. Дмитрий Тучс
*Внимание! Занятие содержит задание без проверки!
Мобильная автоматизация
#1. Разрабатываем автотесты с Browserstack
1. Практика. Учимся пользоваться инспектором в Browserstack, разрабатываем первые автотесты на iOS / Android с Selenide
2. Практика. Browserstack-API. Забираем логи, видео
3. Теория. Основы тестирования мобильных приложений
Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android-устройства и на своем телефоне
1. Настраиваем рабочее место:
- Appium
- Android Studio
- Настраиваем переменные среды
2. Эмулируем Android устройство
3. Подключаем свой телефон
4. Практика. Разрабатываем автотесты с Appium
5. Теория. Основы Appium
[BONUS] Запускаем тесты на школьном Selenoid - Android
Allure TestOps #1. Артем Ерошенко
1. Знакомство с системой
2. Заведение тест-кейсов
3. Создание первого тест-плана
Allure TestOps #2. Артем Ерошенко. Занятие в записи
1. Интеграции с Jenkins и Jira
2.Объединение ручных тестов и автотестов в единый тест-план
3. Метрики, графики, углубленное изучение платформы
4. Администрирование
5. Обзор решений и внедренных проектов
Дипломный проект.
Набиваем руку небольшими проектами.
1. Находим интересную нам вакансию (hh.ru / linkedin / @qa_jobs)
2. Делаем небольшой проект - разрабатываем 5-10 простых автотестов на сайт из вакансии, добавляем джобу в дженкинсе с аллюр-отчетом
Добавляем сюда Selenoid, Allure TestOps, Jira, Telegram notifications
3. Отправляем наш проект hr c сопроводительным письмом
Переезд на собственную инфраструктуру с ресурсов школы. Егор Иванов (выпускник первого потока)
Настроим тестовый стенд локально. Точно также стенд настраивается на любом VPS, например в DigitalOcean.com
1. Рассмотрим базовые команды Linux, которые понадобятся
2. Доступ к удаленному серверу через ssh Ubuntu
2.1 Доступ к Ubuntu через ssh при помощи публичного RSA ключа
3. На виртуальной машине установим:
- Java
- Docker
- Docker-compose
4. Создадим конфиг для docker-compose
5. Поднимаем Selenoid + Selenoid UI
5.1 Проверяем, как это работает
6. Поднимаем Jenkins
6.1 Первичные настройки Jenkins
6.2 Проверка работоспособности
Задание не обязательное. Доступ к инфраструктуре школы останется после окончания обучения (в разумных пределах, конечно).
Дополнительное занятие для студентов школы. Алексей Кузнецов. ООП и ОО-дизайн в UI-тестах для самых маленьких. Занятие в записи
1. Пара слов о себе
2. Наши друзья - переменные.
Зачем они нужны, как их создавать, их роль в тестах
3. Укрощаем рандомайзер. Как использовать генерацию случайных данных в тестах
4. Маленький архитектор или как классы помогают нам отделять логику и работу от других классов
5. Вооружаемся или поговорим ещё немного о Page Object
6. Подключаем тяжелое вооружение. ООП и ОО-дизайн на примере Page Object. Делаем наши page-классы компонентными
7. Роль интерфейсов в проектировании нашего решения или как сделать подобие метода Allure.step своими руками
8. Ещё немного об интерфейсах. Наделяем наши element-классы дополнительными возможностями на основе контрактного поведения
9. Несколько слов о домашнем задании
10. Вопросы и ответы
*Внимание! Занятие содержит задание без проверки!