Курс по автоматизации тестирования Java Advanced 2.0 для продвинутых [qa.guru] [Дмитрий Тучс, Михаил Рубанов] (10 поток)

Складчина: Курс по автоматизации тестирования Java Advanced 2.0 для продвинутых [qa.guru] [Дмитрий Тучс, Михаил Рубанов] (10 поток)

upload_2025-7-14_12-0-35.png

6 месяцев обучения

Больше 50 занятий с домашкой, по 2 занятия в неделю, и живые вебинары
Программа по Java с погружением в backend

Ваш уникальный микросервисный проект на Spring, покрытый всеми видами автотестов
Обновленный курс по iOS

Собственный проект на Swift, полное погружение в мир нативного mobile-тестирования и ни слова про Appium
Обновлённый Niffler

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

Чему мы учим?

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

Архитектура и дизайн

Глубокому пониманию JUnit extension. И использованию паттернов разработки, таких как decorator, singleton, factory, IOC.

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

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

~ 90 000 ₽
Junior QA, после курса
~ 200 000 ₽
Middle QA, опыт от 1 до 3 лет
~ 350 000 ₽
Senior, с опытом от 3 лет

Покроем всё

Тестированию нестандартных протоколов взаимодействия: gRPC, GraphQL, SOAP. А также работе с базами данных и Kafka, и с такими инструментами как docker и docker-compose.

Кроме того

Создадим весь код с нуля, исследуем, как тестируемые технологии работают в Spring Boot под капотом.

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

Регулярно обновляем программу, учим только актуальному
1
Intro to QA.GURU Java Advanced v.2.0
Тестируем полностью самописное приложение в суперсовременном стеке (Java 21, Spring Boot 3, Spring Security 6, Spring Data, OAuth2, gRPC, GraphQL, Microservices, Docker, Postgres, React)
Научим не просто понимать, как написать автотест на GraphQL, но и разберемся в том, как это работает под капотом
Вы узнаете, как сделать запрос в БД из теста и зачем это может быть нужно в микросервисной архитектуре
Будем подменять настоящие микросервисы на Wiremock на практике
2
Знакомство с проектом, локальный запуск, введение в учебный процесс
Обзор проекта Niffler
Необходимые предусловия для работы с проектом
Запуск локально: настройка в Idea Ultimate, Community
Необходимые предусловия для запуска проекта в docker, отличия для Windows и Nix
Запуск проекта в докере
Выполнение домашних заданий
3
Введение в JUnit Extensions: Callbacks, место Extension в жизненном цикле теста JUnit 5
Интерфейсы BeforeEachCallback, AfterEachCallback и другие callback
Подключение Extension декларативно — аннотация @ExtendWith
Разбор теста, написанного на вводном занятии
Написание Extension для создания скриншотов на упавший тест
Полная программа
4
Погружение в JUnit Extensions: ExtensionContext, интерфейс ParameterResolver. Создание Extension "очередь тестовых пользователей"
Интерфейсы ExtensionContext и Store
Концепция шэринга данных через Store + Namespace
Создаем threadsafe очередь пользователей – UsersQueueExtension
5
Интеграция JUnit Extensions в проект с тестами: Метааннотации, 3 способа подключения, QA сессия по введению в JUnit Extensions
— Работа с аннотациями в Extensions, класс AnnotationSupport
— Метааннотации
— ServiceLoader и глобальное подключение Extensions
— Аннотация @RegisterExtension
— Q&A сессия
6
Работаем с реляционными базами данных из тестов: Погружение в JDBC
— Краткая теория JDBC
— Интерфейсы DataSource, Connection, Statement, PreparedStatement, ResultSet
— Реализация SpendRepositryJdbc
— Вставка данных в БД (sql INSERT) через JDBC
— Возврат ID созданной записи
7
JDBC: Репозитории и транзакции. Модификация данных в БД
— Понятие Repository, создание UserRepository
— Транзакции в JDBC
— Реализация UserRepositoryJDBC
— Модификация данных в БД
8
Библиотека Spring-JDBC для работы с БД: базовые концепции
— JDBC-Template: теория и применимость
— Реализация простых запросов (CRUD) c помощью библиотеки Spring-JDBC
9
Библиотека Spring-JDBC — работа с ключами, транзакции, адаптеры
— Класс TransactionTemplate
— Интерфейс PreparedStatementCreator
— Реализация UserRepositorySpringJdbc
10
Библиотека Hibernate и введение в спецификацию JPA
— Hibernate и JPA — краткая теория
— Интерфейсы EntityManagerFactory и EntityManager
— Декораторы для EntityManager: интерфейс EntityTransaction и использование ThreadLocal EntityManager
11
Библиотека Hibernate: интеграция с тестовым проектом
— Конфигурационный файл persistence.xml
— Реализация UserRepositoryHibernate
— Особенности использования Hibernate — работа с коллекциями, ленивая инициализация
12
Использование созданных UserRepository и SpendRepository внутри JUnitExtensions. QA сессия по работе с БД
— Создание аннотации @TestUser и Extension AbstractTestUserExtension
— Наследование Extension: создание класса DbTestUserExtension
— Реализация логики создание тестового пользователя: хэширование пароля, создание в БД нескольких микросервисов
— Передача пользователя в тест через ParameterResolver
— Q&A сессия
13
Автоматизация на проекте «с нуля» – строим минимальный фреймворк
— Build.gradle — best practices
— Конфигурации запуска
— Абстракции для работы с REST api
— PageObject
— Утилитные классы
14
Автоматизация на проекте «с нуля» – базовые абстрактные классы, Dependency Injection. QA сессия по структуре проекта с тестами
— Классы BaseRestTest, BaseGraphQL
— Подготовка к написанию REST тестов — пишем простые тесты на internal api (без авторизации)
— Концепция Dependency Injection и ее реализация с помощью интерфейса TestInstancePostProcessor в JUnit 5
— Q&A сессия
15
Параллелизация тестов в JUnit5: Теория
— Теория параллельного программирования и ее применимость к тестам
— Shared mutable state: что такое и чем вредит
— Конфигурация и стратегии параллелизации в JUnit 5
16
Параллелизация тестов в JUnit5: инструменты управление параллельным запуском. QA сессия по параллелизации
— Аннотация @ResourceLock
— Аннотация @Execution
— Особенности работы с JUnit Extensions при многопоточном выполнении тестов
— Еще раз про важность использования ThreadLocal переменных на примере EntityManager
— Q&A сессия
17
Allure Lyfecycle
— Класс AllureLifecycle
— Создаем ServerLogExtension, добавляющий логи бэкенда в Allure
— Дорабатываем UsersQueueExtension
— Создаем Extension для удаления вложений к тестам
18
Allure: пишем интеграции для работы с SQL
— Принцип работа внешних интеграций Allure на примере класса AllureSelenide
— Реализация интеграции для работы с SQL: библиотека P6Spy
19
Selenide: кастомные Condition
— Классы Condition / CollectionCondition
— Пишем свои кастомные ожидания для проекта Niffler: FriendsCondition, PhotoCondition
20
Selenide: нестатическая кинфигурация, библиотека selenide-core
— Класс SelenideConfiguration
— Реализация поднятия 2 браузеров в тесте
— Параллельное выполнение тестов в разных браузерах
— Использование PageObject для бибилотеки selenide-core
21
Selenide: нестатическая кинфигурация, библиотека selenide-core
— Класс SelenideConfiguration
— Реализация поднятия 2 браузеров в тесте
— Параллельное выполнение тестов в разных браузерах
— Использование PageObject для бибилотеки selenide-core
— QA сессия по кастомизации Allure и Selenide
22
Реализуем Oauth авторизацию с помощью Retrofit: Базовые концепции и подготовка инфраструктуры
— Краткая теория Oauth 2.0 code flow
— Смотрим http-запросы в консоли браузера и подготавливаем инфраструктуру для автоматизации логина
23
Реализуем Oauth авторизацию с помощью Retrofit: Используем ExtensionContext и http Interceptors
— Создаем интерфес ContextHolderExtension
— Создаем класс CodeInterceptor для okhttp клиента
— Создаем ApiLoginExtension
24
Расширяем тестовое покрытие — применяем ApiLoginExtension, DbTestUserExtension для построения полноценного фреймворка.
Q&A сессия
— Пишем WEB и API тесты с созданием всех тестовых данных через JUnit Extensions.
— Q&A сессия по авторизации через Retrofit
25
Установочное занятие по диплому
— Знакомство с дипломными проектами: Rococo, Rangiffler
— Обзор успешной дипломной работы
26
Создаем WEB-сервис на Java с использованием Spring boot
— Базовые компоненты Spring (context, DI, сервисы)
— Использование Spring Web (создаем REST сервис)
— Использование Spring Data JPA (работа с базой)
27
Работа с исключениями, запуск Spring boot приложения в docker: плагин google jib
— Концепция Controller Advice, возврат на фронт унифицированных ошибок
— Docker — краткая теория
— Докеризация Spring-приложения через плагин google jib
28
Пишем первые тесты, разбираемся с селекторами
— Что такое селекторы, как по них находить элементы
— Как посмотреть дерево элементов через консоль
— Как работать с брейкпойнтами во время написания теста
— Как добавить первые тесты в проект
— Как запускать тесты
— Пишем первый тест на экране регистрации
29
Переиспользуем код между разными тестами
— Пишем второй тест и переиспользуем код между ними
— Стабилизируем тесты: сбросив данные о регистрации
— Как деталилазия шагов упрощает чтение тест-репорта
— Выносим общий код в сетап и тирдаун
30
Погружение: пишем тесты для сложных сценариев
— Добавляем accessibilityIdentifier для тестов
— Пишем сложный тест на три экрана — проходим авторизацию, добавляем новые траты и проверяем, что они появились в общем списке.
— Упрощаем тест, чтобы его легко было прочитать.
31
Page Object паттерн в IOS тестах
— Делим тесткейсы на разные файлы
— Зачем нужны пейджобжекты и как они помогают писать новые тесты
— Описываем структуру пейдж-обжекта и переносим все прошлые тесты на них
32
Особенности XCUITests
— Приводим тесты к нужной структуре, обсуждаем название тестов
— Обсуждаем разные способы получения селекторов
— Способы ускорения тестов
33
Финальная лекция блока
Как максимально быстро настроить автоматический запуск тестов и оповещения в мессенджер
34
Unit тесты – пишем тестируемый код и тесты для него
— Краткая теория юнит-тестирования
— Библиотека Mockito
— Покрываем тестами код сервисов Niffler
35
GraphQL: Реализация в Spring Boot
— GraphQL в Spring Boot
— Аннотации @QueryMappig, @chemaMapping
— Интерфейс DataFetchingEnvironment
— Утилита graphiql
36
GraphQL: Пишем тесты с помощью Retrofit
— Подготовка тестовых данных
— Создаем Extension GqlRequestExtension для работы со статическими данными
— Пишем тесты на проверку вложенных подзапросов
— Пишем тесты на проверку работы с Apollo Cache
37
gRPC: Реализация в Spring Boot
— gRPC в Spring Boot
— Protobuf и Protoc компиллятор
— Интерфейс StreamObserver
— Конфигурация, работа с исключениями и информирование об ошибках
38
Тестируем gRPC сервисы с помощью нативных библиотек
— Подготовка тестовых данных
— Особенности работы с proto-файлами тестируемых сервисов в тестах
— Пишем тесты на gRPC сервис niffler-currency
— Сложные кейсы: gRPC Streaming
39
SOAP: Реализация в Spring Boot
— SOAP в Spring Boot
— XSD и WSDL схемыАннотации @Endpoint, @PayloadRoot, @ResponsePayload
40
SOAP: Пишем тесты с помощью Retrofit
— Подготовка тестовых данных
— Особенности работы с wsdl тестируемых сервисов в тестах
— Пишем тесты на SOAP сервис niffler-userdata
41
GraphQL, gRPC, SOAP: Q&A сессия

42
Тестирование микросервисов в docker-compose: запуск тестов локально
— Поднимаем микросервисы в docker compose
— Selenoid & Selenoid UI
— Доработка конфигурации тестов для запуска в docker
— Упаковка проекта с тестами в docker контейнер, написание Dockerfile
43
Тонкости инфраструктуры: Докеризация фронтенда, bash-скрипты
— Рассмотрим bash-скрипты в проекте niffler
— Докеризация фронтеда с использованием nginx
— Особеннности работы с docker-окружением
44
Тестирование микросервисов в docker-compose: работа с артефактами тестов (Allure) + Q&A по работе с docker compose
— Обзор Allure docker service
— Написание интерфейса SuiteExtension, AllureSendresultExtension
— Q&A сессия
45
Wiremock в тестах: in-memory подход
— Сравнение с библиотекой Mockito
— Используем in-memory Wiremock прямо в тестах
46
Wiremock в тестах: standalone подход, мокаем REST API и gRPC
Используем http и gRPC Wiremock в docker-compose
47
Apache Kafka: Использование в Spring Boot
— Kafka в проекте на Spring Boot
— Конфигурации consumer и producer
48
Apache Kafka: взаимодействие из тестов
Пишем свой Consumer и JUnit Extension для его использования в тестах
49
Q&A сессия по Wiremock и Kafka

50
Конференции – готовим доклад и себя к выступлению
— Как попасть на конференцию спикером
— Как готовиться
— Презентация – хорошая и плохая
— Дискуссия до и после доклада
— Ради чего? Плюсы и минусы
51
CI/CD — pipeline, к которому мы шли
Рассматриваем вопросы сборки проекта и деплоя на прод с использованием GHA
52
Q&A по дипломному проекту
Отвечаем на вопросы, возникшие при работе над дипломным проектом
53
Выпускной!

ссылка на продажник