Автоматизация тестирования
на Java Advanced
Старт 6-го потока 5 сентября в 20:00 по МСК
Вас ждет:
3 месяца обучения онлайн
Стоимость от 80 100 рублей
Кому подойдет наш курс?
Для QA Automation Engineer с опытом от 1-го года работы
Для тех, кто хочет получить углублённые знания в рамках автоматизации на Java
Повысить квалификацию, систематизировать знания и попасть в комьюнити
От вас потребуется знание Java Core, базовые знания Docker, знания реляционных баз данных и SQL
Настроите кастомные шаблоны для тестов и отчётности, создадите собственные, научитесь параллелизации и нативному тестированию Android и iOS (нужен macOS)
Освоите актуальный стек, подтянете и систематизируете знания, попадете в экспертное сообщество, где всегда рады поделиться опытом и ответить на ваши вопросы, даже если они выходят за рамки программы самого курса
Кто будет учить?
Учитесь у сильнейших в отрасли. Наши преподаватели регулярно выступают на конференциях и организовывают их (Heisenbug, Cyprus IT Forum), являются основателями и активными участниками крупнейших сообществ по автоматизации тестирования.

Они всегда рады ответить на ваши вопросы, даже если они выходят за рамки программы самого курса.
01 Дмитрий Тучс
Dodo Brands
02 Артём Eрошенко
Qameta Software
03 Владислав Зингер
Dodo Engineering
Дмитрий Тучс
Dodo Brands
В IT более 12 лет. Начинал в аналитике, управлял проектами, в настоящее время занимается менторством, пишет и автоматизирует на Java. Head of QA at Dodo Brands
01 Дмитрий Тучс
Dodo Brands
02 Артём Eрошенко
Qameta Software
03 Владислав Зингер
Dodo Engineering
Дмитрий Тучс
Dodo Brands
В IT более 12 лет. Начинал в аналитике, управлял проектами, в настоящее время занимается менторством, пишет и автоматизирует на Java. Head of QA at Dodo Brands
01 Дмитрий Тучс
Dodo Brands
02 Артём Eрошенко
Qameta Software
03 Владислав Зингер
Dodo Engineering
Артём Eрошенко
Qameta Software
С 2008 года занимается автоматизацией тестирования околопоисковых сервисов в «Яндекс». С 2011 года разработчик Allure Reports и Allure TestOps
01 Дмитрий Тучс
Dodo Brands
02 Артём Eрошенко
Qameta Software
03 Владислав Зингер
Dodo Engineering
Владислав Зингер
Dodo Engineering
В IT больше 10 лет, начинал с .net разработки и мобильного тестирования. QA automation инженер и mobile SRE в Dodo Brands
01 Дмитрий Тучс
Dodo Brands
02 Артём Eрошенко
Qameta Software
03 Владислав Зингер
Dodo Engineering
Владислав Зингер
Dodo Engineering
В IT больше 10 лет, начинал с .net разработки и мобильного тестирования. QA automation инженер и mobile SRE в Dodo Brands
Как мы учим?
Много практики
Отзывчивая поддержка и сообщество
Гостевые преподаватели
Бессрочный доступ к материалам
Собственная инфраструктура
Много практики
В школе занятия представлены в записи, а консультации по пройденному материалу проходят в формате онлайн-трансляций. Все уроки структурированы. По тайм-кодам вы легко сориентируетесь во время просмотра видео.
Мы проводим онлайн-консультации, чтобы помочь вам по максимуму усвоить новые знания и навыки. К концу курса у вас будет готовый Github с проектами, который вы сможете показать вашему будущему работодателю.
Отзывчивая поддержка и сообщество
Поддержка школы ответит на все ваши вопросы.
Во время прохождения курса вы можете запросить персональную консультацию.
Задать любой интересующий вас вопрос можно и в чате курса.
По желанию студента мы также проводим дополнительные разборы домашних заданий.
Гостевые преподаватели
В школе часто проводятся дополнительные занятия с приглашенными преподавателями.
Бессрочный доступ к материалам
Вы платите один раз и получаете полный доступ к материалам курса навсегда и без дополнительных плат.

После приобретения курса у вас останется доступ к материалам вашего потока. Можете пользоваться нашим курсом как базой знаний по интересующим вопросам и возвращаться, когда вам удобно.
Собственная инфраструктура
У школы есть работающий Jenkins, учебные доступы к Allure TestOps, учебный аккаунт в Jira. Для учебы студентам предоставляется доступ к сервису для оформления и переработки вашего CV/Резюме. У школы есть своя фриланс биржа: https://autotests.cloud/, где вы сможете окупить стоимость обучения, взяв в работу несколько проектов под руководством опытных инженеров.
Как мы учим?
Много практики
В школе занятия представлены в записи, а консультации по пройденному материалу проходят в формате онлайн-трансляций. Все уроки структурированы. По тайм-кодам вы легко сориентируетесь во время просмотра видео.
Мы проводим онлайн-консультации, чтобы помочь вам по максимуму усвоить новые знания и навыки. К концу курса у вас будет готовый Github с проектами, который вы сможете показать вашему будущему работодателю.
Отзывчивая поддержка и сообщество
Поддержка школы ответит на все ваши вопросы.
Во время прохождения курса вы можете запросить персональную консультацию.
Задать любой интересующий вас вопрос можно и в чате курса.
По желанию студента мы также проводим дополнительные разборы домашних заданий.
Гостевые преподаватели
В школе часто проводятся дополнительные занятия с приглашенными преподавателями.
Бессрочный доступ к материалам
Вы платите один раз и получаете полный доступ к материалам курса навсегда и без дополнительных плат.

После приобретения курса у вас останется доступ к материалам вашего потока. Можете пользоваться нашим курсом как базой знаний по интересующим вопросам и возвращаться, когда вам удобно.
Собственная инфраструктура
У школы есть работающий Jenkins, учебные доступы к Allure TestOps, учебный аккаунт в Jira. Для учебы студентам предоставляется доступ к сервису для оформления и переработки вашего CV/Резюме. У школы есть своя фриланс биржа: https://autotests.cloud/, где вы сможете окупить стоимость обучения, взяв в работу несколько проектов под руководством опытных инженеров.
  • 1. «Intro to QA.GURU Java Advanced v. 2.0». Дмитрий Тучс
    1. Мы будем тестировать полностью самописное приложение в суперсовременном стеке (Java 21, Spring Boot 3, Spring Security 6, Spring Data, OAuth2, gRPC, GraphQL, Microservices, Docker, Postgres, React). Да, все это будет полностью самописное и обо всем этом мы будем говорить на курсе
    2. Вы будете не просто понимать, как написать автотест на GraphQL, а разберетесь, как это вообще работает под капотом
    3. Вы узнаете, как сделать запрос в БД из теста и зачем это вообще может быть нужно в микросервисной архитектуре
    4. Мы будем подменять настоящие микросервисы Wiremock-ом, а не абстрактно рассуждать, что это такое
  • 2. Знакомство с проектом, локальный запуск, введение в учебный процесс + QA по учебному проекту Niffler. Дмитрий Тучс
    1. Обзор проекта niffler
    2. Необходимые предусловия для работы с проектом
    3. Запуск локально: настройка в idea ultimate, community
    4. Необходимые предусловия для запуска проекта в docker, отличия для windows и nix
    5. Запуск проекта в докере
    6. Выполнение домашних заданий
  • 3.1 Введение в JUnit Extensions: Callbacks, место Extension в жизненном цикле теста JUnit 5. Дмитрий Тучс. В записи
    Введение в JUnit Extensions:
    1. Интерфейсы BeforeEachCallback, AfterEachCallback и другик callback-и
    2. Подключение Extension декларативно - аннотация @ExtendWith
    3. Разбор теста, написанного на вводном занятии "Intro to QA.GURU Java Advanced"
    4. Написание Extension для создания скриншотов на упавший тест
  • 3.2 ExtensionContext, интерфейс ParameterResolver. Создание Extension "очередь тестовых пользователей". Дмитрий Тучс. В записи
    1. Интерфейсы ExtensionContext и Store
    2. Концепция шэринга данных через Store + Namespace
    3. Создаем threadsafe очередь пользователей - UsersQueueExtension
  • 3.3 Интеграция JUnit Extensions в проект с тестами + QA сессия по введению в JUnit Extensions. Дмитрий Тучс
    Метааннотации, 3 способа подключения
    1. Работа с аннотациями в Extensions, класс AnnotationSupport
    2. Метааннотации
    3. ServiceLoader и глобальное подключение Extensions
    4. Аннотация @RegisterExtension 5. Q&A сессия
  • 4.1 Работаем с реляционными базами данных из тестов: Погружение в JDBC. Дмитрий Тучс. В записи
    1. краткая теория JDBC
    2. Интерфейсы DataSource, Connection, Statement, PreparedStatement, ResultSet
    3. Реализация SpendRepositryJdbc
    4. Вставка данных в БД (sql INSERT) через JDBC
    5. Возврат ID созданной записи
  • 4.2 JDBC: Репозитории и транзакции. Модификация данных в БД. Дмитрий Тучс. В записи
    1. Понятие Repository, создание UserRepository
    2. Транзакции в JDBC
    3. Реализация UserRepositoryJdbc
    4. Модификация данных в БД
  • 5.1 Библиотека Spring-JDBC для работы с БД: базовые концепции. Дмитрий Тучс. В записи
    1. JDBC-Template: теория и применимость
    2. реализация простых запросов (CRUD) c помощью библиотеки Spring-JDBC
  • 5.2 Библиотека Spring-JDBC - работа с ключами, транзакции, адаптеры. Дмитрий Тучс. В записи
    1. Класс TransactionTemplate
    2. Интерфейс PreparedStatementCreator
    3. Реализация UserRepositorySpringJdbc
  • 6.1 Библиотека Hibernate и введение в спецификацию JPA. Дмитрий Тучс. В записи
    1. Hibernate и JPA - краткая теория
    2. Интерфейсы EntityManagerFactory и EntityManager
    3. Декораторы для EntityManager: интерфейс EntityTransaction и использование ThreadLocal EntityManager
  • 6.2 Библиотека Hibernate: интеграция с тестовым проектом. Дмитрий Тучс. В записи
    1. Конфигурационный файл persistence.xml
    2. Реализация UserRepositoryHibernate
    3. Особенности использования Hibernate - работа с коллекциями, ленивая инициализация
  • 6.3 Использование созданных UserRepository и SpendRrepository внутри JUnitExtensions + QA по работе с БД. Дмитрий Тучс
    1. Создание аннотации @TestUser и Extension AbstractTestUserExtension
    2. Наследование Extension: создание класса DbTestUserExtension
    3. Реализация логики создание тестового пользователя: хэширование пароля, создание в БД нескольких микросервисов
    4. Передача пользователя в тест через ParameterResolver
    5. Q&A сессия
  • 7.1 Автоматизация на проекте «с нуля» – строим минимальный фреймворк. Дмитрий Тучс. В записи
    1. build.gradle - best practices
    2. Конфигурации запуска
    3. Абстракции для работы с REST api
    4. PageObject
    5. Утилитные классы
  • 7.2 Автоматизация на проекте «с нуля» – базовые абстрактные классы, Dependency Injection + QA по структуре проекта. Дмитрий Тучс
    1. классы BaseRestTest, BaseGraphQL
    2. Подготовка на написанию REST тестов - пишем простые тесты на internal api (без авторизации)
    3. Концепция Dependency Injection и ее реализация с помощью интерфейса TestInstancePostProcessor в JUnit 5
    4. Q&A сессия
  • 8.1 Параллелизация тестов в JUnit5: Теория. Дмитрий Тучс. В записи
    1. Теория параллельного программирования и ее применимость к тестам
    2. Shared mutable state: что такое и чем вредит
    3. Конфигурация и стратегии параллелизации в JUnit 5
  • 8.2 Параллелизация тестов в JUnit5: инструменты управление параллельным запуском + QA по параллелизации. Дмитрий Тучс
    1. Аннотация @ResourceLock
    2. Аннотация @Execution
    3. Особенности работы с JUnit Extensions при многопоточным выполнении тестов
    4. Еще раз про важность использования ThreadLocal переменных на примере EntityManager
    5. Q&A сессия
  • 9.1 Allure Lyfecycle. Дмитрий Тучс. В записи
    1. Класс AllureLifecycle
    2. Создаем ServerLogExtension, добавляющий логи бэкенда в Allure
    3. Дорабатываем UsersQueueExtension
    4. Создаем Extension для удаления вложений к тестам
  • 9.2 Allure: пишем интеграции для работы с SQL. Дмитрий Тучс. В записи
    1. Принцип работа внешних интеграций Allure на примере класса AllureSelenide
    2. Реализация интеграции для работы с SQL: библиотека P6Spy
  • 10.1 Selenide: кастомные Condition. Дмитрий Тучс. В записи
    1. Классы Condition / CollectionCondition
    2. Пишем свои кастомные ожидания для проекта Niffler: FriendsCondition, PhotoCondition
  • 10.2 Selenide: нестатическая кинфигурация, библиотека selenide-core. Дмитрий Тучс. В записи
    1. Принцип работа внешних интеграций Allure на примере класса AllureSelenide
    2. Реализация интеграции для работы с SQL: библиотека P6Spy
  • 10.3 QA сессия по кастомизации Allure и Selenide. Дмитрий Тучс
  • 11.1 Реализуем Oauth авторизацию с помощью Retrofit: Базовые концепции и подготовка инфраструктуры. Дмитрий Тучс. В записи
    1. Краткая теория Oauth 2.0 code flow
    2. Смотрим http-запросы в консоли браузера и подготавливаем инфраструктуру для автоматизации логина
  • 11.2 Реализуем Oauth авторизацию с помощью Retrofit: Используем ExtensionContext и Http Interceptors. Дмитрий Тучс. В записи
    1. Создаем интерфес CotextHolderExtension
    2. Создаем класс CodeInterceptor для okhttp клиента
    3. Создаем ApiLoginExtension
  • 11.3 Расширяем тестовое покрытие + Q&A. Дмитрий Тучс
    Применяем ApiLoginExtension, DbTestUserExtension для построения полноценного фреймворка
    1. Пишем WEB и API тесты с созданием всех тестовых данных через JUnit Extensions.
    2. Q&A сессия по авторизации через Retrofit
  • 12.1 Создаем WEB-сервис на Java с использованием Spring boot. Дмитрий Тучс. В записи
    1. Базовые компоненты Spring (context, DI, сервисы)
    2. Использование Spring Web (создаем REST сервис)
    3. Использование Spring Data JPA (работа с базой)
  • 12.2 Работа с исключениями, запуск Spring boot приложения в docker: плагин google jib. Дмитрий Тучс. В записи
    1. Базовые компоненты Spring (context, DI, сервисы)
    2. Использование Spring Web (создаем REST сервис)
    3. Использование Spring Data JPA (работа с базой)
  • 13. Unit тесты – пишем тестируемый код и тесты для него. Дмитрий Тучс. В записи
    1. Краткая теория юнит-тестирования
    2. Библиотека Mockito
    3.Покрываем тестами код сервисов Niffler
  • 14. Установочное занятие по диплому. Дмитрий Тучс
    1. Знакомство с дипломными проектами: Rococo, Rangiffler
    2. Обзор успешной дипломной работы
  • 15.1 GraphQL: Реализация в Spring Boot. Дмитрий Тучс. В записи
    1. GraphQL в Spring Boot
    2. Аннотации @QueryMappig, @chemaMapping
    3. Интерфейс DataFetchingEnvironment
    4. Утилита graphiql
  • 15.2 GraphQL: Пишем тесты с помощью Retrofit. Дмитрий Тучс. В записи
    1. Подготовка тестовых данных
    2. Создаем Extension GqlRequestExtension для работы со статическими данными
    3. Пишем тесты на проверку вложенных подзапросов
    4. Пишем тесты на проверку работы с Apollo Cache
  • 17.1 gRPC: Реализация в Spring Boot. Дмитрий Тучс. В записи
    1. gRPC в Spring Boot
    2. Protobuf и Protoc компиллятор
    3. Интерфейс StreamObserver
    4. Конфигурация, работа с исключениями и информирование об ошибках
  • 16.1 Пишем первые тесты, разбираемся с селекторами. Михаил Рубанов. В записи
    1. Что такое селекторы, как по них находить элементы
    2. Как посмотреть дерево элементов через консоль
    3. Как работать с брейкпойнтами во время написания теста
    4. Как добавить первые тесты в проект
    5. Как запускать тесты
    6. Пишем первый тест на экране регистрации
  • 16.2 Переиспользуем код между разными тестами. Михаил Рубанов. В записи
    1. Пишем второй тест и переиспользуем код между ними
    2. Стабилизируем тесты: сбросив данные о регистрации
    3. Как деталилазия шагов упрощает чтение тест-репорта
    4. Выносим общий код в сетап и тирдаун
  • 16.3 Погружение: пишем тесты для сложных сценариев. Михаил Рубанов. В записи
    1. Добавляем accessibilityIdentifier для тестов
    2. Пишем сложный тест на три экрана — проходим авторизацию, добавляем новые траты и проверяем, что они появились в общем списке.
    3. Упрощаем тест, чтобы его легко было прочитать.
  • 16.4 Page Object паттерн в IOS тестах. Михаил Рубанов. В записи
    1. Делим тесткейсы на разные файлы
    2. Зачем нужны пейджобжекты и как они помогают писать новые тесты
    3. Описываем структуру пейдж-обжекта и переносим все прошлые тесты на них
  • 16.5 Особенности XCUITests. Михаил Рубанов. В записи
    1. Приводим тесты к нужной структуре, обсуждаем название тестов
    2. Обсуждаем разные способы получения селекторов
    3. Способы ускорения тестов
  • 16.6 Финальная лекция блока. Михаил Рубанов. В записи
    Как максимально быстро настроить автоматический запуск тестов и оповещения в мессенджер
  • 17.2 Тестируем gRPC сервисы с помощью нативных библиотек. Дмитрий Тучс. В записи
    1. Подготовка тестовых данных
    2. Особенности работы с proto-файлами тестируемых сервисов в тестах
    3. Пишем тесты на gRPC сервис niffler-currency
    4. Сложные кейсы: gRPC Streaming
  • 18.1 SOAP: Реализация в Spring Boot. Дмитрий Тучс. В записи
    1. SOAP в Spring Boot
    2. XSD и WSDL схемы
    3. Аннотации @Endpoint, @PayloadRoot, @ResponsePayload
  • 18.2 SOAP: Пишем тесты с помощью Retrofit. Дмитрий Тучс. В записи
    1. Подготовка тестовых данных
    2. Особенности работы с wsdl тестируемых сервисов в тестах
    3. Пишем тесты на SOAP сервис niffler-userdata
  • 18.3 Q&A сессия: GraphQL, gRPC, SOAP. Дмитрий Тучс
  • 19.1 Тестирование микросервисов в docker-compose: запуск тестов локально. Дмитрий Тучс. В записи
    1. Поднимаем микросервисы в docker compose
    2. Selenoid & Selenoid UI
    3. Доработка конфигурации тестов для запуска в docker
    4. Упаковка проекта с тестами в docker контейнер, написание Dockerfile
  • 19.2 Тонкости инфраструктуры: Докеризация фронтенда, bash-скрипты. Дмитрий Тучс. В записи
    1. Рассмотрим bash-скрипты в проекте niffler
    2. Докеризация фронтеда с использованием nginx
    3. Особеннности работы с docker-окружением
  • 19.3 Тестирование микросервисов в docker-compose + Q&A по работе с с docker. Дмитрий Тучс
    Тестирование микросервисов в docker-compose: работа с артефактами тестов (Allure)
    1. Обзор Allure docker service
    2. Написание интерфейса SuiteExtension, AllureSendresultExtension
    3. Q&A сессия
  • 20.1 Wiremock в тестах: in-memmory подход. Дмитрий Тучс. В записи
    1. Сравнение с библиотекой Mockito
    2. Используем in-memory Wiremock прямо в тестах
  • 20.2 Wiremock в тестах: standalone подход, мокаем REST API и gRPC. Дмитрий Тучс. В записи
    Используем http и gRPC Wiremock в docker-compose
  • 21.1 Apache Kafka: Использование в Spring Boot. Дмитрий Тучс. В записи
    1. Kafka в проекте на Spring Boot
    2. Конфигурации consumer и producer
  • 21.2 Apache Kafka: взаимодействие из тестов. Дмитрий Тучс. В записи
    Пишем свой Consumer и JUnit Extension для его использования в тестах
  • 21.3 Q&A сессия по Wiremock и Kafka. Дмитрий Тучс
  • 22. Конференции – готовим доклад и себя к выступлению. Дмитрий Тучс. В записи
    1. Как попасть на конференцию спикером
    2. Как готовиться
    3. Презентация – хорошая и плохая
    4. Дискуссия до и после доклада 5. Ради чего? Плюсы и минусы
  • 23. CI/CD - pipeline, к которому мы шли. Дмитрий Тучс
    Рассматриваем вопросы сборки проекта и деплоя на прод с использованием GHA
  • 24. Q&A по дипломному проекту. Дмитрий Тучс
    Отвечаем на вопросы, возникшие при работе над дипломным проектом
  • 25. Выпускной! Дмитрий Тучс
Сколько стоит курс?
  • Занятия в прямом эфире с возможностью задать вопросы преподавателям

  • Записи занятий с тайм-кодами, полезные ссылки и домашние задания с проверкой и обратной связью

  • Чат со студентами и преподавателями потока

  • Консультации наставников и преподавателей при необходимости

  • Сертификат участника по окончании курса (при неуспешной сдаче дипломного проекта)

  • Сертификат участника с пометкой о выполненном дипломе по окончании курса (при успешной сдаче дипломного проекта
FAQ
Зарегистрируйтесь, чтобы записаться на вводное занятие, которое состоится 05.09.2024 в 20:00 мск
После заполнения формы вам придёт письмо с инструкциями для посещения вводного урока и ссылка на чат школы