Курс [ Архитектура для auto QA ]
прокачаем тестировщика-автоматизатора как разработчика до уровня Senior

20 июля | 2021
2.5 месяца | 2 раза в неделю
ONLINE
Для тех, кто хочет лучше писать тестовые фреймворки
Для тех, кто хочет переквалифицироваться в разработчика
Для тех, кто хочет правильно выстраивать архитектуру автоматических тестов
[ На курсе мы ]
Разберем на примерах понятия чистого и грязного кода. Увидим как именно грязный код затрудняет развитие проекта и провоцирует баги
Рассмотрим реальные проблемы, возникающие на проектах, и найдем способы их решения с помощью понятий чистого кода, рефакторинга и шаблонов проектирования
Сначала решим учебные задачи, специально подготовленные для курса, а затем закрепим полученные навыки на вашем тестовом фреймворке. Для курса подготовлено 150+ задач на шаблоны проектирования и рефакторинг
Изучим принципы и подходы к проектированию структуры кода
Отдельное внимание уделим взаимодействию автоматизаторов и разработчиков в команде и работе над собственным тестовым фреймворком
Весь материал курса будет также применен каждым участником на примере тестового фреймворка, который будем развивать по мере прохождения курса. Каждый будет делать тестовый фреймворк.
Для курса подготовлено
150+ задач на шаблоны проектирования и рефакторинг
Курс предназначен для тестировщиков-автоматизаторов с опытом от 3х лет на любом языке программирования
[ Программа ]
Auto QA и Навыки написания кода
Рассмотрим роль автоматизатора, чем она отличается от роли разработчика и от роли QA Automation Engineer. Какими навыками обладает автоматизатор, в чем заключается баланс навыков разработки и QA и как именно его поддерживать.
Также рассмотрим отличия между теоретическими знаниями и практическими навыками (техническими, личными и коммуникативными) и тем, как именно выстраивать собственное обучение. Оценим где именно вы находитесь на карте навыков и каким образом вы могли бы наметить свое развитие.
Также договоримся об организационных моментах в рамках курса.
Понятия грязного, чистого кода, рефакторинга и архитектуры
В рамках этой темы рассмотрим и структурируем основные концепции, применяемые в программировании - компонент, абстракция, библиотека, инструмент, проектирование и архитектура, шаблоны проектирования. Также сформулируем проблемы, с которыми разработчик встречается во время проектирования и разработки, и каким образом и в каких случаях эти проблемы возможно преодолеть. Рассмотрим отличия качественно и некачественно спроектированного и написанного компонента, совместно выработаем критерии качества компонента, и отличия качественного кода от некачественного. Рассмотрим понятие и процесс рефакторинга, каким образом можно повысить качество кода в отдельном компоненте и во всем проекте.
Основы ООП
В рамках раздела рассмотрим базовые понятия объектно-ориентированного программирования и проектирования и взаимодействия классов и их иерархий между собой. Какими именно средствами ООП способно улучшить качество кода, и как именно пользоваться этими средствами в вашем коде: как разбивать предметную область на классы, как структурировать поля и методы внутри класса, как создавать иерархии классов, как обеспечивать взаимодействие между классами. Также разберем некоторые ошибки, которые возникают при применении ООП.
Процесс превращения кода в ПО
В рамках этой темы рассмотрим чем отличается код от программного обеспечения, что такое ПО и компонент ПО, как именно компоненты объединяются в ПО. Также еще раз вернемся к понятию unit-тестирования и увидим, как именно написание unit-тестов экономит время разработки.
Коснемся технических средств, которые облегчают совместное владение кодом командой разработки: системы управления задачами, системы контроля версий, процесса code review.
Работа над проектами
Эта тема - время, зарезервированное для формулирования заданий и обсуждения курсовых проектов. Несколько занятий будут посвящены выбор темы проекта, проектированию и работе над кодом проекта. Можно взять новый проект, можно поработать над проектом с работы (при условии соблюдения NDA) или над pet-project. Для каждого проекта будут указаны потенциальные проблемы, а также даны рекомендации по улучшению подходов и архитектуры. Работа над проектам будет продолжаться на протяжении всего курса, а на последнем занятии будет презентация проектов всей группе.
Взаимодействие в команде разработки
Здесь рассмотрим организацию создания ПО не с точки зрения технических средств, а с точки зрения взаимодействия между людьми в команде. Разберем иерархию команды, способы взаимодействия и разделение ответственности между разными ролями в команде. Также затронем scrum и назначение его ритуалов, а также то, что понимается под scrum в некоторых компаниях. Назовем основные ошибки коммуникаций и сформулируем алгоритм выстраивания коммуникаций в команде, который позволит избежать наиболее серьезных проблем.
Принципы написания чистого кода
Раздел содержит теоретические сведения о принципах программирования, начиная с простейших KISS, DRY, YAGNI, и заканчивая сложными и зрелыми SOLID и GRASP. Каждый принцип разбирается на положительных и отрицательных примерах, демонстрирующих какие проблемы могут возникать в случае игнорирования этих принципов. А так как практически все архитектурные решения - это баланс между противоречивыми требованиями, мы также рассмотрим и поиска компромиссных решений.
Kак пользоваться шаблонами проектирования
В этом коротком разделе мы рассмотрим понятие шаблона в природе и в разных областях человеческой деятельность, как именно эти шаблоны обнаруживаются и как именно их правильно применять.
Порождающие шаблоны проектирования
В этом разделе мы рассмотрим шаблоны проектирования, ответственные за удобное создание новых объектов (или групп объектов) в вашей программе. Начнем с Factory Method, Factory, коснемся Builder, затронем более сложный шаблон Prototype. Также рассмотрим шаблон Singleton и почему его часто описывают как антипаттерн. Разберем понятие Dependency Injection, а также 2 шаблона, помогающие экономить ресурсы на создании/уничтожении объектов - Lazy Initialization и Object Pool. Каждый шаблон разбирается на положительных и отрицательных примерах.
Структурные шаблоны проектирования
В этом разделем разбере как выстраивать иерархии классов таким образом, чтобы их было легко поддерживать и изменять, и чтобы они провоцировали минимальное количество багов даже если взаимодействующие иерархии классов относятся к разным абстракциям и изначально созданы для разных задач. Мы начнем с простых шаблонов Adapter, Bridge и Composite, после этого рассмотрим Decorator и Facade. Также уделим внимание Flyweight, который используется для экономии ресурсов, Proxy для более перехвата вызовов метода другого объекта. Разберем более сложные шаблоны Aggregate, Extensibility, Pipes and Filters и Opaque Pointer. Все шаблоны будем рассматривать на положительных и отрицательных примерах.
Поведенческие шаблоны проектирования
Этот раздел посвящен шаблона проектирования, которые позволяют выстраивать удобное взаимодействие между разными объектами. Некоторые из них явно выделяют поведение в отдельную абстракцию (Strategy, Command), другие позволяют оперировать состоянием объекта (Memento, State), некоторые позволяют управлять задачами (Scheduled Task). Группа шаблонов позволяют динамически добавлять и удалять обработчики для других объектов (Chain of Responsibility, Protocol Stack), а шаблон BlackBoard пытается найти решение для задачи, которая может не иметь прямого алгоритмического решения. Каждый шаблон, как и всегда, разбирается на положительных и отрицательных примерах, которые позволяют применить его в курсовом проекте.
Шаблоны, применяемые в автоматизации тестирования
Рассмотрим шаблоны проектирования, без которых нельзя написать ни один тестовый фреймворк: Page Object и его развитие Advanced Page Object и Fluent Page Object, также применение шаблонов Facade, Singleton в тестовых фреймворках. Разберем как удобно использовать Strategy и Observer для разработки тестовых фреймворков на примерах.
Что такое хорошая архитектура?
Этот раздел посвящен обсуждениям о том, что такое хорошая и плохая архитектура кода, с каким проблемами сталкиваются разработчики, поддерживая код на протяжении длинного проекта, и как именно можно с этими проблемами справляться (с помощью рефакторинга архитектуры).
Также рассмотрим частые ошибки начинающего архитектора и как их избегать.
Приемы рефакторинга
Дополнительный раздел посвящен очень важной вещи - рефакторингу. Мы рассмотрим как именно применять рефакторинг в вашем проекте, почему его так любят разработчики и не любят менеджеры (большинство). Разберем подходы к организацию рефакторинга в вашем проекта, и некоторые приемы.
Презентация проекта
Этот раздел посвящен презентации курсовых проектов участников, обсуждению проблем, возникших во время реализации, и использованных в проектах шаблонов проектирования.
[ После курса ты ]
По-новому посмотришь на уже имеющийся у тебя опыт разработки и поддержания тестовых фреймворков
Будешь правильно пользоваться шаблонами проектирования
Сможешь аргументировано обосновывать свою точку зрения
Будешь применять принципы написания кода KISS, DRY, YAGNI, SOLID, GRASP
Каждый шаблон проектирования и принцип представлены не только объяснением, но положительными и отрицательными примерами и задачами.
[ Кто преподает ]
Более 10 лет опыта коммерческой разработки как в аутсорсинговых, так и в продуктовых компаниях.
Работал на ведущих ролях на проектах в благотворительной, автомобильной, игровой и smart-home областях.
Сейчас занимаюсь разработкой собственных проектов с технологией распознавания речи.
Андрей Круковский
[ Записаться на курс ]
Стоимость курса 999 BYN / 400$ в месяц
(Оплата в белорусских рублях по курсу доллара США, на дату платежа)
Все права защищены
В какие дни и сколько раз в неделю проходят занятия?
Занятия проходят 2 раза в неделю. Дни недели участники курса выбирают все вместе
Сколько всего занятий и их длительность?
Всего 18 онлайн занятий длительностью по 1-1.5 часа
Как проходят занятия?
Все занятия проходят онлайн на платформе Zoom, и сохраняются в вашей папке на YouTube
По окончанию курса студенты получают именной Сертификат Hard&Soft Skills