Ежедневно, с 8:30 до 22:30
Предзаказ
2232

Курс по автоматизации тестирования Java Advanced 2.0 для продвинутых

Средняя оценка 0.0 из 5 на основании 0 голосов (0)
1 0
0
Автор:
7500 ₽
78907 ₽
-90%
Кэшбэк: 5% (375 ₽)
Курс будет выдан в течение 1-3 часов после оплаты.

    Вы прокачаете знания в автоматизации на Java до уровня Senior+ и разнообразите портфолио впечатляющими кейсами.

    • Архитектура и дизайн. Глубокому пониманию JUnit extension. И использованию паттернов разработки, таких как decorator, singleton, factory, IOC.
    • Покроем всё. Тестированию нестандартных протоколов взаимодействия: gRPC, GraphQL, SOAP. А также работе с базами данных и Kafka, и с такими инструментами как docker и docker-compose.
    • Кроме того. Создадим весь код с нуля, исследуем, как тестируемые технологии работают в Spring Boot под капотом.

    Востребованность профессии:

    • 100 000 ₽ — Средняя заработная плата тестировщика.
    • Одна из самых перспективных профессий на рынке.
    • Возможность удалённой работы и гибкого графика.
    • Быстрый карьерный рост от джуна до тимлида.
    • Постоянное развитие и изучение новых технологий.
    • Возможность работы в различных сферах.
    • Высокий спрос на специалистов во всех IT-компаниях.

    Программа курса

    1. Niffler и его тестирование Advanced Как меняется проект

    • Тестируем полностью самописное приложение в суперсовременном стеке (Java 21, Spring Boot 3, Spring Security 6, Spring Data, OAuth2, gRPC, GraphQL, Microservices, Docker, Postgres, React)
    • Научим не просто понимать, как написать автотест на GraphQL, но и разберемся в том, как это работает под капотом
    • Вы узнаете, как сделать запрос в БД из теста и зачем это может быть нужно в микросервисной архитектуре
    • Будем подменять настоящие микросервисы на Wiremock на практике

    2. Знакомство с Niffler NG. Локальный запуск, введение в учебный процесс, QA сессия

    • Обзор проекта Niffler
    • Необходимые предусловия для работы с проектом
    • Запуск локально: настройка в Idea Ultimate, Community
    • Необходимые предусловия для запуска проекта в docker, отличия для Windows и Nix
    • Запуск проекта в докере
    • Выполнение домашних заданий

    3.1. Введение в JUnit Extensions. Callbacks, жизненный цикл теста, разбор первого теста

    • Интерфейсы BeforeEachCallback, AfterEachCallback и другие callback
    • Подключение Extension декларативно — аннотация @ExtendWith
    • Разбор теста, написанного на вводном занятии
    • Написание Extension для создания скриншотов на упавший тест

    3.2. Погружение в JUnit Extensions: ExtensionContext, интерфейс ParameterResolver. Создание Extension «очередь тестовых пользователей»

    • Интерфейсы ExtensionContext и Store
    • Концепция шэринга данных через Store + Namespace
    • Создаем threadsafe очередь пользователей – UsersQueueExtension

    3.3. Интеграция JUnit Extensions. Метааннотации, 3 способа подключения Extension. Создаем TestMethodContextExtension, QA сессия

    • Работа с аннотациями в Extensions, класс AnnotationSupport
    • Метааннотации
    • ServiceLoader и глобальное подключение Extensions
    • Аннотация @RegisterExtension
    • Q&A сессия

    4.1. Работаем с RDBMS из тестов. Введение в JDBC базовые интерфейсы и архитектура. Пишем INSERT и SELECT запросы

    • Краткая теория JDBC
    • Интерфейсы DataSource, Connection, Statement, PreparedStatement, ResultSet
    • Реализация SpendRepositryJdbc
    • Вставка данных в БД (sql INSERT) через JDBC
    • Возврат ID созданной записи

    4.2. Работаем с RDBMS из тестов. JDBC Транзакции, JTA. Определение границ транзакций

    • Понятие Repository, создание UserRepository
    • Транзакции в JDBC
    • Реализация UserRepositoryJDBC
    • Модификация данных в БД

    5.1. Работаем с RDBMS из тестов. Spring-JDBC базовая функциональность и архитектура библиотеки

    • JDBC-Template: теория и применимость
    • Реализация простых запросов (CRUD) c помощью библиотеки Spring-JDBC

    5.2. Работаем с RDBMS из тестов. Spring-JDBC транзакции

    • Класс TransactionTemplate
    • Интерфейс PreparedStatementCreator
    • Реализация UserRepositorySpringJdbc

    6.1. Работаем с RDBMS из тестов. Спецификация JPA

    • Hibernate и JPA краткая теория
    • Интерфейсы EntityManagerFactory и EntityManager
    • Декораторы для EntityManager: интерфейс EntityTransaction и использование ThreadLocal EntityManager

    6.2. Работаем с RDBMS из тестов. Hibernate + JNDI + JTA

    • Конфигурационный файл persistence.xml
    • Реализация UserRepositoryHibernate
    • Особенности использования Hibernate работа с коллекциями, ленивая инициализация

    6.3. Используем Repository. Подключаем созданные классы Repository к Extension. QA сессия

    • Создание аннотации @TestUser и Extension AbstractTestUserExtension
    • Наследование Extension: создание класса DbTestUserExtension
    • Реализация логики создание тестового пользователя: хэширование пароля, создание в БД нескольких микросервисов
    • Передача пользователя в тест через ParameterResolver
    • Q&A сессия

    7.1. Автоматизация «с нуля» минималистичный фреймворк

    • Build.gradle best practices
    • Конфигурации запуска
    • Абстракции для работы с REST api
    • PageObject
    • Утилитные классы

    7.2. Автоматизация «с нуля». Базовые классы. Dependency Injection + QA сессия

    • Классы BaseRestTest, BaseGraphQL
    • Подготовка к написанию REST тестов пишем простые тесты на internal api (без авторизации)
    • Концепция Dependency Injection и ее реализация с помощью интерфейса TestInstancePostProcessor в JUnit 5
    • Q&A сессия

    8.1. Параллелизация тестов в JUnit5: Теория

    • Теория параллельного программирования и ее применимость к тестам
    • Shared mutable state: что такое и чем вредит
    • Конфигурация и стратегии параллелизации в JUnit 5

    8.2. Параллелизация тестов в JUnit5: инструменты управление параллельным запуском. QA сессия по параллелизации

    • Аннотация @ResourceLock
    • Аннотация @Execution
    • Особенности работы с JUnit Extensions при многопоточном выполнении тестов
    • Еще раз про важность использования ThreadLocal переменных на примере EntityManager
    • Q&A сессия

    9.1. Allure Lifecycle. Добавляем в отчет логи тестируемых сервисов

    • Класс AllureLifecycle
    • Создаем ServerLogExtension, добавляющий логи бэкенда в Allure
    • Дорабатываем UsersQueueExtension
    • Создаем Extension для удаления вложений к тестам

    9.2. Allure Lifecycle. Кастомные html-вложения на примере логгирования SQL

    • Принцип работа внешних интеграций Allure на примере класса AllureSelenide
    • Реализация интеграции для работы с SQL: библиотека P6Spy

    10.1 Selenide Conditions. Создаем кастомные проверки для веб-элементов и коллекций

    • Классы Condition / CollectionCondition
    • Пишем свои кастомные ожидания для проекта Niffler: FriendsCondition, PhotoCondition

    10.2. Selenide: нестатическая кинфигурация, библиотека selenide-core

    • Класс SelenideConfiguration
    • Реализация поднятия 2 браузеров в тесте
    • Параллельное выполнение тестов в разных браузерах
    • Использование PageObject для бибилотеки selenide-core

    10.3. QA сессия по Allure и Selenide

    • Реализация поднятия 2 браузеров в тесте
    • Параллельное выполнение тестов в разных браузерах
    • Использование PageObject для бибилотеки selenide-core
    • QA сессия по кастомизации Allure и Selenide

    11.1. OAUTH 2.0 + OIDC. Базовые концепции. PKCE

    • Краткая теория Oauth 2.0 code flow
    • Смотрим http-запросы в консоли браузера и подготавливаем инфраструктуру для автоматизации логина

    11.2. OAUTH 2.0 + OIDC. Реализация через Retrofit + JUnit Extension

    • Создаем интерфес ContextHolderExtension
    • Создаем класс CodeInterceptor для okhttp клиента
    • Создаем ApiLoginExtension

    11.3. OAUTH 2.0 + OIDC. Расширяем тестовое покрытие. QA сессия

    • Пишем WEB и API тесты с созданием всех тестовых данных через JUnit Extensions.
    • Q&A сессия по авторизации через Retrofit

    12.1. Spring core + Spring Boot. Создаем простой REST сервис

    • Базовые компоненты Spring (context, DI, сервисы)
    • Использование Spring Web (создаем REST сервис)
    • Использование Spring Data JPA (работа с базой)

    12.2. Spring core + Spring Boot. Работа с исключениями

    • Концепция Controller Advice, возврат на фронт унифицированных ошибок
    • Docker краткая теория
    • Докеризация Spring-приложения через плагин google jib

    13.1. GraphQL: Реализация в Spring Boot

    • GraphQL в Spring Boot
    • Аннотации @QueryMappig, @chemaMapping
    • Интерфейс DataFetchingEnvironment
    • Утилита graphiql

    13.2. GraphQL. Пишем автотесты с использованием Apollo Client

    • Подготовка тестовых данных
    • Создаем Extension GqlRequestExtension для работы со статическими данными
    • Пишем тесты на проверку вложенных подзапросов
    • Пишем тесты на проверку работы с Apollo Cache

    14. Установочное занятие по диплому

    • Знакомство с дипломными проектами: Rococo, Rangiffler
    • Обзор успешной дипломной работы

    15.1. gRPC: Реализация в Spring Boot

    • gRPC в Spring Boot
    • Protobuf и Protoc компиллятор
    • Интерфейс StreamObserver
    • Конфигурация, работа с исключениями и информирование об ошибках

    15.2. gRPC. Пишем автотесты с использованием нативных библиотек

    • Подготовка тестовых данных
    • Особенности работы с proto-файлами тестируемых сервисов в тестах
    • Пишем тесты на gRPC сервис niffler-currency
    • Сложные кейсы: gRPC Streaming

    16.1. SOAP: Реализация в Spring Boot

    • SOAP в Spring Boot
    • XSD и WSDL схемы
    • Аннотации @Endpoint, @PayloadRoot, @ResponsePayload

    16.2. SOAP: Пишем тесты с помощью Retrofit

    • Подготовка тестовых данных
    • Особенности работы с wsdl тестируемых сервисов в тестах
    • Пишем тесты на SOAP сервис niffler-userdata

    16.3. GraphQL, gRPC, SOAP: Q&A сессия

    17. Unit тесты – пишем тестируемый код и тесты для него

    • Краткая теория юнит-тестирования
    • Библиотека Mockito
    • Покрываем тестами код сервисов Niffler

    18.1. Пишем первые тесты, разбираемся с селекторами

    • Что такое селекторы, как по них находить элементы
    • Как посмотреть дерево элементов через консоль
    • Как работать с брейкпойнтами во время написания теста
    • Как добавить первые тесты в проект
    • Как запускать тесты
    • Пишем первый тест на экране регистрации

    18.2. Переиспользуем код между разными тестами

    • Пишем второй тест и переиспользуем код между ними
    • Стабилизируем тесты: сбросив данные о регистрации
    • Как деталилазия шагов упрощает чтение тест-репорта
    • Выносим общий код в сетап и тирдаун

    18.3. Погружение: пишем тесты для сложных сценариев

    • Добавляем accessibilityIdentifier для тестов
    • Пишем сложный тест на три экрана — проходим авторизацию, добавляем новые траты и проверяем, что они появились в общем списке.
    • Упрощаем тест, чтобы его легко было прочитать.

    18.4. Page Object паттерн в IOS тестах

    • Делим тесткейсы на разные файлы
    • Зачем нужны пейджобжекты и как они помогают писать новые тесты
    • Описываем структуру пейдж-обжекта и переносим все прошлые тесты на них

    18.5. Особенности XCUITests

    • Приводим тесты к нужной структуре, обсуждаем название тестов
    • Обсуждаем разные способы получения селекторов
    • Способы ускорения тестов

    18.6. Финальная лекция блока

    • Как максимально быстро настроить автоматический запуск тестов и оповещения в мессенджер

    19.1. Docker-compose. Запуск тестов локально в изолированном окружении

    • Поднимаем микросервисы в docker compose
    • Selenoid & Selenoid UI
    • Доработка конфигурации тестов для запуска в docker
    • Упаковка проекта с тестами в docker контейнер, написание Dockerfile

    19.2. Докеризация Niffler Тонкости инфраструктуры

    • Рассмотрим bash-скрипты в проекте niffler
    • Докеризация фронтеда с использованием nginx
    • Особенности работы с docker-окружением

    19.3. Docker-compose QA сессия

    • Обзор Allure docker service
    • Написание интерфейса SuiteExtension, AllureSendresultExtension
    • Q&A сессия

    20.1. Wiremock. Мок REST API in-memory

    • Сравнение с библиотекой Mockito
    • Используем in-memory Wiremock прямо в тестах

    20.2. Wiremock. Standalone mock for RESTgRPC API

    • Используем http и gRPC Wiremock в docker-compose

    21.1. Apache Kafkа. Реализация producer consumer в Spring Boot

    • Kafka в проекте на Spring Boot
    • Конфигурации consumer и producer

    21.2. Apache Kafkа. Реализация consumer в тестах

    • Пишем свой Consumer и JUnit Extension для его использования в тестах

    21.3. Q&A сессия по Wiremock и Kafka

    22. Конференции – готовим доклад и себя к выступлению

    • Как попасть на конференцию спикером
    • Как готовиться
    • Презентация – хорошая и плохая
    • Дискуссия до и после доклада
    • Ради чего? Плюсы и минусы

    23. CI/CD — pipeline, к которому мы шли

    • Рассматриваем вопросы сборки проекта и деплоя на прод с использованием GHA

    24. Q&A по дипломному проекту

    • Отвечаем на вопросы, возникшие при работе над дипломным проектом

    Преподаватели:

    • Дмитрий Тучс (преподаёт основную программу Java на курсе Java Advanced 2.0)
      • В IT больше 12 лет.
      • Начинал в аналитике, управлял проектами.
      • Сейчас — Head of QA at Dodo Brands.
      • Занимается менторством, пишет и автоматизирует на Java.
      • Автор учебной программы QA.GURU Java Advanced.
    • Михаил Рубанов (преподаёт iOS-программу на курсе Java Advanced 2.0)
      • Head of mobile в Dodo Engineering.
      • В разработке любит интерфейсы, тесты и доступность.
      • Купил 10 эргономичных клавиатур.
      • Написал книгу «Про доступность iOS».
      • Пишет статьи на Хабр, ведет Telegram-канал о мобильной разработке в Dodo.
    Характеристики
    Наличие Предзаказ Тип Видео Размещение на сайте 14.07.2025 Артикул 2232

    Об авторах

    Фото: QA Guru
    0.0
    QA Guru
    Московская онлайн-школа автоматизации тестирования, основанная в 2019 году. Курсы по автотестам на Java, Python и JavaScript с Playwright.

    Отзывы и комментарии

    Отзывов ещё нет, будьте первыми

    Написать отзыв
    Нажимая "Отправить" Вы соглашаетесь с правилами публикации и даёте согласие на обработку персональных данных. Администрация не несёт ответственности за содержание отзывов.

    Похожие товары:

    Постер товара: Продвинутый курс по автоматизации тестирования Java Advanced 2.0
    Скидка 92%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Продвинутый курс по автоматизации тестирования Java Advanced 2.0
    API-тестирование
    Постер товара: Продвинутый курс по автоматизации тестирования Python Advanced
    Скидка 91%
    Предзаказ
    Средняя оценка 5.0 из 5 на основании 1 голосов
    Продвинутый курс по автоматизации тестирования Python Advanced
    FastAPI и Flask
    Постер товара: Инженер по автоматизации тестирования Java — c нуля до героя
    Скидка 86%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Инженер по автоматизации тестирования Java — c нуля до героя
    API-тестирование
    Постер товара: Автоматизированное тестирование на Python
    Скидка 78%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Автоматизированное тестирование на Python
    Selenium и Playwright на Python
    Постер товара: Java QA Automation
    Скидка 70%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Java QA Automation
    REST Assured и автоматизация API
    Постер товара: Java | Автоматизация тестирования
    Скидка 82%
    Предзаказ
    Средняя оценка 5.0 из 5 на основании 1 голосов
    Java | Автоматизация тестирования
    Selenium на Java
    Постер товара: Курс по автоматизации тестирования на JavaScript + Playwright
    Скидка 94%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Курс по автоматизации тестирования на JavaScript + Playwright
    API-тестирование
    Постер товара: Java QA Automation Engineer
    Скидка 82%
    Предзаказ
    Средняя оценка 0.0 из 5 на основании 0 голосов
    Java QA Automation Engineer
    REST Assured и автоматизация API