Текст площадки «Складчик». Упомянутые цены и обещанные результаты могут быть неактуальны; условия покупки проверяйте у продавца.
Вы освоите HTTP, gRPC, Resty, Protobuf, Axiom, Allure, Testify, gofakeit и CI/CD. Научитесь строить полноценную инфраструктуру API-автотестов на Go, проектировать поддерживаемую архитектуру, настраивать параллельный запуск и отчётность, применять лучшие практики и работать с реальными сценариями. В финале соберёте гото
Читать полное описание
Вы освоите 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 дополняет стандартную библиотеку удобными проверками и тестовыми наборами, однако самостоятельно не решает вопросы архитектуры проекта, управления зависимостями, метаданных, плагинов, отчётности и организации сложного параллельного запуска.
Поэтому тестовая инфраструктура в 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: позитивные и негативные сценарии, работу со связанными данными, проверку бизнес-правил, обработку ошибок и управление состоянием тестов.
Каждый сценарий используется не только для расширения покрытия, но и для развития инфраструктуры, проверки архитектурных решений и отработки подходов, применяемых в реальных проектах.
Понимание синтаксиса языка, умение работать с переменными, функциями, структурами, методами, указателями, интерфейсами, коллекциями и обработкой ошибок. Также важно понимать устройство пакетов и основы работы с Go Modules. Экспертный уровень не требуется, но язык в курсе не изучается с нуля
Базовое понимание программирования.
Умение читать код, использовать условия и циклы, разбивать логику на функции, работать со структурами данных и подключать внешние библиотеки. Это поможет увереннее разбираться в архитектуре тестовой инфраструктуры
Общее понимание тестирования.
Желательно знать, что такое тестовый сценарий, предусловия, ожидаемый результат, позитивные и негативные проверки. Опыт ручного тестирования API будет полезен, но глубокие знания HTTP и gRPC до начала курса не требуются — необходимые концепции разбираются в программе
Уверенная работа с компьютером и окружением разработки.
Потребуется устанавливать программы и зависимости, работать с терминалом, запускать команды, пользоваться IDE — например, GoLand или VS Code, — редактировать конфигурационные файлы и работать с браузером
Готовность активно писать код.
Курс построен вокруг одного накопительного проекта. Вам предстоит запускать тестовый сервер, писать HTTP- и gRPC-автотесты, изменять инфраструктуру, выполнять практические задания, анализировать ошибки и самостоятельно применять изученные подходы
Автор Никита Филонов
Автор месяца Stepik 2025
Победитель Stepik Awards 2025 в номинациях «Программирование и разработка», «Лучшее сопровождение курса»
10 лет в области QA Automation, три года в должности QA Lead
Опыт автоматизации тестирования на Python, JavaScript/TypeScript, C#, Golang, Swift в боевых проектах
Автор тестового фреймворка Axiom