Скачать Автоматизация тестирования API с Go [Stepik] [Никита Филонов]

Джокер

Администратор
Регистрация
1 Янв 2015
Сообщения
154.669
Реакции
79.068
Складчина: Автоматизация тестирования API с Go [Stepik] [Никита Филонов]



Вы освоите HTTP, gRPC, Resty, Protobuf, Axiom, Allure, Testify, gofakeit и CI/CD. Научитесь строить полноценную инфраструктуру API-автотестов на Go, проектировать поддерживаемую архитектуру, настраивать параллельный запуск и отчётность, применять лучшие практики и работать с реальными сценариями. В финале соберёте готовый проект — от первых API-запросов до полноценного тестового фреймворка.

Полноценная система API-автотестов на Go:

Написать несколько HTTP- или gRPC-тестов на Go несложно. Для этого достаточно Resty, Protobuf, Testify и стандартного пакета testing.
Проблемы начинаются тогда, когда тестов становится не десять, а несколько сотен.
В этот момент простые примеры перестают масштабироваться. Тесты начинают дублировать друг друга, подготовка данных занимает больше места, чем сам сценарий, API-клиенты смешиваются с бизнес-логикой, параллельный запуск ломает состояние, а диагностика падений превращается в отдельное расследование.
Ни Resty, ни Testify, ни Protobuf сами по себе не решают эти задачи. Это инструменты, а не архитектура.

В этом курсе вы не просто напишете набор API-тестов. Вы последовательно построите полноценную инфраструктуру HTTP- и gRPC-автотестов на Go и разберётесь, как сделать её:

независимой
читаемой
переиспользуемой
удобной для диагностики
безопасной для параллельного запуска
готовой к развитию вместе с проектом
Главная цель курса:

Курс формирует комплексную и фундаментальную базу для проектирования API-автотестов на Go.
Мы начнём с устройства API, клиент-серверного взаимодействия, HTTP и gRPC. Затем напишем первые тесты с использованием стандартного пакета testing, Resty, Protobuf и Testify. После этого будем постепенно развивать проект: отделять транспортный слой, создавать API-клиенты, управлять тестовыми данными, проектировать фикстуры и проверки, подключать отчётность, логирование, параллельный запуск и CI/CD.
Главный результат — понимание всей системы автоматизации: от отправки запроса до архитектуры проекта, жизненного цикла тестовых данных, диагностики ошибок и организации больших тестовых наборов.

Инструменты занимают важное место в программе, но основной фокус сделан на инженерных принципах, которые сохраняют ценность независимо от конкретной библиотеки:

разделение ответственности между слоями
изоляция тестовых сценариев от инфраструктуры
управление зависимостями и состоянием
подготовка и очистка тестовых данных
проектирование переиспользуемых клиентов
создание доменных проверок
организация параллельного выполнения
логирование и диагностика падений
масштабирование проекта вместе с ростом количества тестов
Почему автоматизация тестирования на Go требует отдельного подхода:

В Go нет единственного общепринятого стека, который полностью решает задачи большого проекта автотестов.
Стандартный пакет testing предоставляет надёжную и предсказуемую основу, но оставляет разработчику большую часть инфраструктурных решений.
Testify дополняет стандартную библиотеку удобными проверками и тестовыми наборами, однако самостоятельно не решает вопросы архитектуры проекта, управления зависимостями, метаданных, плагинов, отчётности и организации сложного параллельного запуска.

Ginkgo предлагает полноценный BDD-подход и собственный DSL, добавляя дополнительный уровень абстракции, который подходит одним командам и не соответствует требованиям других.
Поэтому тестовая инфраструктура в Go редко возникает из простого объединения нескольких библиотек. Её приходится осознанно проектировать: определять границы компонентов, жизненный цикл зависимостей, правила подготовки данных, структуру тестов и механизм их выполнения.

Многие команды годами выращивают такую инфраструктуру самостоятельно или переносят решения из Java, Python и других языков. Часть этих подходов полезна, но некоторые из них плохо сочетаются с простотой и явностью, которые приняты в экосистеме Go.
В курсе мы разберём эти особенности и построим архитектуру, которая остаётся понятной, расширяемой и естественной для Go-проекта.

Три с половиной года практики, собранные в одном курсе:

В основе курса лежат три с половиной года интенсивной работы с API-, интеграционными и изоляционными автотестами на Go.

За это время я создавал и поддерживал тестовую инфраструктуру, наблюдал за её развитием вместе с продуктами, внедрял решения в разных командах, сталкивался с ограничениями существующих инструментов и неоднократно пересматривал неудачные архитектурные подходы.

На практике мне приходилось решать ситуации, когда:

тесты невозможно безопасно запускать параллельно
подготовка данных становится сложнее самого сценария
фикстуры превращаются в набор несвязанных функций
инфраструктурный код копируется между десятками тестов
API-клиенты смешивают транспорт, модели и бизнес-логику
логирование и отчётность подключаются вручную
повторные запуски скрывают реальные причины нестабильности
тесты работают локально, но регулярно падают в CI
архитектура становится настолько сложной, что команда боится её изменять
Эти проблемы не были придуманы специально для учебных примеров. Они возникали при развитии настоящих тестовых проектов. Работа над их решением в конечном итоге привела к созданию Axiom.

Материал про Axiom из первых рук:

Я являюсь автором Axiom и знаю не только его публичный API, но и причины, стоящие за каждым архитектурным решением.

В курсе разбирается опыт, который невозможно получить из одного README или набора примеров:

какие подходы рассматривались на ранних этапах
от каких решений пришлось отказаться
какие проблемы проявились только при росте количества тестов
что пришлось переписывать после внедрения
как различные механизмы работают при параллельном запуске
как фреймворк ведёт себя на больших тестовых наборах
какие компромиссы приходится учитывать при проектировании инфраструктуры
Resty, Testify, Protobuf и Allure можно изучать отдельно по документации. В этом курсе они объединяются в одну систему вместе с архитектурой, тестовыми данными, клиентами, фикстурами, проверками, отчётностью и CI/CD.
По сочетанию авторского фреймворка, материала от его создателя и последовательного построения полноценной инфраструктуры курс не имеет прямых аналогов.

При этом программа не строится исключительно вокруг Axiom. Фреймворк помогает реализовать универсальные концепции, которые применимы и при проектировании собственной инфраструктуры:

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

В первом модуле вы не получите огромный готовый фреймворк, структуру которого останется только скопировать.
Мы начнём с простых API-автотестов на Go. По мере развития проекта будут появляться реальные проблемы: дублирование кода, сложная подготовка данных, разрозненные клиенты, неудобные проверки, смешивание транспортного и сценарного уровней.
Каждый следующий архитектурный слой будет добавляться как решение уже понятной проблемы.

Шаг за шагом в проекте появятся:

модели и генерация тестовых данных
Builders
HTTP- и gRPC-транспорты
переиспользуемые API-клиенты
Resources и Fixtures
Toolset
базовые, протокольные и доменные Assertions
Runner, Suites и Cases
метаданные и шаги
Allure Report
техническое логирование
плагины и теги
повторные запуски
параллельное выполнение
автоматизированный запуск в CI/CD
Такой подход помогает запомнить не только итоговую структуру каталогов и файлов. Вы увидите причинно-следственную связь между возникающей проблемой и архитектурным решением, которое её устраняет.
Именно это позволяет в дальнейшем самостоятельно проектировать тестовую инфраструктуру, а не зависеть от готовых шаблонов.

Практика на реальных бизнес-сценариях:

Курс строится вокруг выделенного тестового сервера с HTTP- и gRPC-интерфейсами.
Вы будете работать со связанными и вложенными данными, создавать и изменять ресурсы, передавать идентификаторы между запросами, проверять бизнес-правила, обрабатывать ошибки и восстанавливать необходимое состояние перед выполнением тестов.

К финалу вы реализуете полноценное покрытие HTTP- и gRPC API: позитивные и негативные сценарии, работу со связанными данными, проверку бизнес-правил, обработку ошибок и управление состоянием тестов.
Каждый сценарий используется не только для расширения покрытия, но и для развития инфраструктуры, проверки архитектурных решений и отработки подходов, применяемых в реальных проектах.

Что входит в курс:

Разберём устройство API, клиент-серверное взаимодействие, HTTP и gRPC
Подготовим рабочее окружение и запустим выделенный тестовый сервер
Напишем первые HTTP- и gRPC-автотесты без сложной инфраструктуры
Изучим возможности стандартного пакета testing, Resty, Testify, Protobuf и gofakeit
Познакомимся с Axiom и разберём Runner, Suite, Case, Meta, Steps, Fixtures, Resources, Toolset и Plugins
Создадим модели, Builders и генерацию тестовых данных
Спроектируем отдельные транспорты и API-клиенты для HTTP и gRPC
Организуем подготовку состояния через Resources и Fixtures
Соберём зависимости тестов в единый Toolset
Разработаем собственные базовые, протокольные и доменные Assertions
Подключим Allure Report, техническое логирование и информацию об окружении
Настроим запуск тестов по тегам, повторные и параллельные прогоны
Расширим покрытие позитивными и негативными бизнес-сценариями
Автоматизируем запуск тестов в CI/CD и публикацию отчётов
Оформим документацию и опубликуем финальный проект
Как устроено обучение:

В процессе курса вы будете:

изучать последовательные инженерные разборы
работать с примерами кода и схемами
самостоятельно реализовывать практические задания
развивать один накопительный проект от первых запросов до финальной архитектуры
Каждый урок содержит концентрированный материал с объяснением определений, архитектурных решений, нюансов реализации и возможных ошибок.

Для кого этот курс:

Для QA Automation-инженеров, которые работают с Python, Java, TypeScript или другими языками и хотят перейти на Go
Для ручных QA-инженеров, которые уже работают с API, изучили основы Go и хотят перейти к автоматизации тестирования HTTP- и gRPC-сервисов
Для инженеров, которые умеют писать отдельные тесты с testing, Resty и Testify, но хотят научиться строить масштабируемую и поддерживаемую тестовую инфраструктуру
Для QA Automation-инженеров, которые хотят глубже разобраться в архитектуре автотестов, подготовке тестовых данных, API-клиентах, фикстурах, проверках, логировании и отчётности
Для SDET, senior automation-инженеров и QA Leads, которые проектируют тестовые фреймворки, развивают существующую инфраструктуру и принимают архитектурные решения
Для Go-разработчиков, которым необходимо писать API-, интеграционные и изоляционные тесты для своих сервисов
Для инженеров, работающих с Go-сервисами и желающих одинаково уверенно тестировать HTTP- и gRPC-интерфейсы
Для специалистов, которым важно научиться проектировать независимые тесты, безопасно запускать их параллельно, диагностировать падения и интегрировать автотесты в CI/CD
Для тех, кто уже пробовал строить автотесты на Go, но столкнулся с дублированием кода, сложной подготовкой данных, разрозненными клиентами и отсутствием цельной архитектуры
Для инженеров, которые хотят не просто скопировать готовый шаблон, а понять, какую проблему решает каждый слой тестовой инфраструктуры и как развивать проект вместе с ростом количества тестов
Начальные требования:

Базовые знания Go.
Понимание синтаксиса языка, умение работать с переменными, функциями, структурами, методами, указателями, интерфейсами, коллекциями и обработкой ошибок. Также важно понимать устройство пакетов и основы работы с Go Modules. Экспертный уровень не требуется, но язык в курсе не изучается с нуля
Базовое понимание программирования.
Умение читать код, использовать условия и циклы, разбивать логику на функции, работать со структурами данных и подключать внешние библиотеки. Это поможет увереннее разбираться в архитектуре тестовой инфраструктуры
Общее понимание тестирования.
Желательно знать, что такое тестовый сценарий, предусловия, ожидаемый результат, позитивные и негативные проверки. Опыт ручного тестирования API будет полезен, но глубокие знания HTTP и gRPC до начала курса не требуются — необходимые концепции разбираются в программе
Уверенная работа с компьютером и окружением разработки.
Потребуется устанавливать программы и зависимости, работать с терминалом, запускать команды, пользоваться IDE — например, GoLand или VS Code, — редактировать конфигурационные файлы и работать с браузером
Готовность активно писать код.
Курс построен вокруг одного накопительного проекта. Вам предстоит запускать тестовый сервер, писать HTTP- и gRPC-автотесты, изменять инфраструктуру, выполнять практические задания, анализировать ошибки и самостоятельно применять изученные подходы
Программа:

1. Приветствие и инструкции:

Правила работы с курсом и коммуникации
Знакомимся
Советы по изучению материала
Инструкции по отправке заданий на проверку
Поддержка от преподавателя и вопросы
2. Создание проекта:

Создаём Go module
Публикуем проект на GitHub
Выбираем IDE для курса
Устанавливаем Go
3. Разбираемся в API:

Разбираемся, что такое API
Разбираемся, как работает HTTP API
Разбираемся, как работает gRPC API
4. Тестовый стенд:

Подготавливаем тестовый стенд
Запускаем тестовый стенд
Проверяем работоспособность тестового стенда
Разбираем архитектуру тестового стенда
Разбираем HTTP-контракт
Разбираем gRPC-контракт
Разбираем авторизацию тестового стенда
5. Первые API-тесты:

Введение в API-автотесты на Go
Подключаем библиотеки для первых API-тестов
Пишем первые HTTP API-тесты
Пишем первые gRPC API-тесты
Разбираем Go-тесты. Часть 1: фикстуры
Разбираем Go-тесты. Часть 2: жизненный цикл
Разбираем Go-тесты. Часть 3: перезапуски
Разбираем Go-тесты. Часть 4: параллельность
Разбираем Go-тесты. Часть 5: метаданные
Разбираем Go-тесты. Часть 6: плагины
6. Знакомимся с Axiom:

Что такое Axiom и зачем он нужен
Пишем первый тест с Axiom
Разбираем Runner, Case и Config
Группируем тесты в Suite
Добавляем Meta к тестам
Управляем зависимостями с помощью Fixtures, Resources
Собираем инструменты в Toolset
Управляем Retry, Parallel и Skip
Управляем жизненным циклом с помощью Hooks
Управляем контекстом выполнения тестов
Структурируем тесты с помощью Step, Setup и Teardown
Расширяем Axiom с помощью Plugins
Подводим итоги: какие проблемы решает Axiom
Параметризуем тесты с помощью Params
7. Создаём модели и тестовые данные:

Создаём модели
Создаём генератор тестовых данных
Создаём Builders
8. Создаём Runners и Suites:

Создаём Metadata
Меняем структуру тестов
Создаём корневой Runner
Создаём HTTP Runner и Suite
Создаём gRPC Runner и Suite
Обогащаем тесты Meta-информацией
9. Создаём API клиенты:

Создаём Config
Создаём HTTP Transport
Создаём HTTP API клиенты
Переводим HTTP-тесты на API клиенты
Создаём gRPC Transport
Создаём gRPC API клиенты
Переводим gRPC-тесты на API клиенты
10. Создаём Fixtures, Resources и Toolsets:

Создаём Resources
Создаём публичные HTTP Fixtures
Подготавливаем HTTP-авторизацию
Создаём приватные HTTP Fixtures
Создаём HTTP Data Fixtures
Собираем HTTP Toolset и переводим тесты
Создаём публичные gRPC Fixtures
Подготавливаем gRPC-авторизацию
Создаём приватные gRPC Fixtures
Создаём gRPC Data Fixtures
Собираем gRPC Toolset и переводим тесты
11. Создаём Assertions:

Создаём базовые Assertions
Создаём HTTP Assertions
Создаём gRPC Assertions
Подключаем Assertions к HTTP-инфраструктуре
Подключаем Assertions к gRPC-инфраструктуре
12. Подключаем Allure к проекту:

Знакомимся с Allure и устанавливаем Allure Report
Подключаем Allure к проекту
Настраиваем Allure Plugin проекта
13. Улучшаем тестовую инфраструктуру:

Подключаем логирование тестов
Запускаем тесты по тегам
Настраиваем параллельный запуск
14. Практикуемся в написании API-автотестов:

Практикуемся в написании HTTP API-автотестов. Часть 1
Практикуемся в написании HTTP API-автотестов. Часть 2
Практикуемся в написании HTTP API-автотестов. Часть 3
Практикуемся в написании gRPC API-автотестов. Часть 1
Практикуемся в написании gRPC API-автотестов. Часть 2
Практикуемся в написании gRPC API-автотестов. Часть 3
15. Запускаем автотесты в CI:

CI/CD и автотесты: Стратегия автоматизации тестирования
Разбираемся, что такое CI/CD
Знакомимся с GitHub Actions
Запускаем автотесты в GitHub Actions
16. Финальный проект:

Оформляем документацию проекта
Разбираем итоговую архитектуру
Подводим итоги курса
Автор Никита Филонов

Автор месяца Stepik 2025
Победитель Stepik Awards 2025 в номинациях «Программирование и разработка», «Лучшее сопровождение курса»
10 лет в области QA Automation, три года в должности QA Lead
Опыт автоматизации тестирования на Python, JavaScript/TypeScript, C#, Golang, Swift в боевых проектах
Автор тестового фреймворка Axiom
Цена 5980 руб.




СКАЧАТЬ СЛИВЫ КУРСОВ
 

Возможно, Вас ещё заинтересует: