Що нового?

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

Інформація про покупку
Тип покупки: Складчина
Ціна: 53400 ГРН
Учасників: 0 з 17
Організатор: Відсутній
Статус: Набір учасників
Внесок: 3266.8 ГРН
0%
Основний список
Резервний список

Gadzhi

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


  • 6 месяцев обучения
  • Больше 50 занятий с домашкой, по 2 занятия в неделю, и живые вебинары
  • Программа по Java с погружением в backend
  • Ваш уникальный микросервисный проект на Spring, покрытый всеми видами автотестов
  • Обновленный курс по iOS
  • Собственный проект на Swift, полное погружение в мир нативного mobile-тестирования и ни слова про Appium
  • Обновлённый Niffler
  • Полноценный web-проект с продуманной архитектурой, позволяющей обучаться на практических примерах
Чему мы учим?
Вы прокачаете знания в автоматизации на Java до уровня Senior+ и разнообразите портфолио впечатляющими кейсами
  • Архитектура и дизайн. Глубокому пониманию JUnit extension. И использованию паттернов разработки, таких как decorator, singleton, factory, IOC.
  • Покроем всё. Тестированию нестандартных протоколов взаимодействия: gRPC, GraphQL, SOAP. А также работе с базами данных и Kafka, и с такими инструментами как docker и docker-compose.
  • Кроме того. Создадим весь код с нуля, исследуем, как тестируемые технологии работают в Spring Boot под капотом.
Востребованность профессии
  • 100 000 ₽ — Средняя заработная плата тестировщика.
  • Одна из самых перспективных профессий на рынке.
  • Возможность удалённой работы и гибкого графика.
  • Быстрый карьерный рост от джуна до тимлида.
  • Постоянное развитие и изучение новых технологий.
  • Возможность работы в различных сферах.
  • Высокий спрос на специалистов во всех IT-компаниях.
Программа курса
Регулярно обновляем программу, учим только актуальному

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 сессия по работе с БД
  • Создание аннотации и 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
  1. GraphQL, gRPC, SOAP: Q&A сессия
  2. Тестирование микросервисов в 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 для его использования в тестах
  1. Q&A сессия по Wiremock и Kafka
  2. Конференции – готовим доклад и себя к выступлению
  • Как попасть на конференцию спикером
  • Как готовиться
  • Презентация – хорошая и плохая
  • Дискуссия до и после доклада
  • Ради чего? Плюсы и минусы
51. CI/CD pipeline, к которому мы шли
  • Рассматриваем вопросы сборки проекта и деплоя на прод с использованием GHA
52. Q&A по дипломному проекту
  • Отвечаем на вопросы, возникшие при работе над дипломным проектом
53. Выпускной!
Преподаватели:
Дмитрий Тучс. Преподаёт основную программу 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.

Цена 80100 руб
https://qa.guru/java-advanced
 
Угорі