Встроенная поддержка тестирования в Go ставит тесты в центр любого проекта - от инструментов командной строки до сложных серверов и API. Эта книга познакомит вас со всеми возможностями тестирования в Go, научит писать тесты для самых сложных задач и передаст накопленный опыт сообщества Go по лучшим практикам тестирования программ.
Наполненная сотнями примеров кода, книга демонстрирует реальные тесты и реальные проблемы, помогая вам пошагово осваивать процесс тестирования.
"Если вы потеряете работу из-за того, что применили советы из этой книги, то это даже к лучшему. Но если это случится, я сделаю своей личной миссией помочь вам найти работу в компании, где ценят создание ПО, которое действительно работает."
Вы узнаете, как использовать тесты для проектирования программ, которые решают задачи пользователей, как создавать надёжные кодовые базы на прочной основе, а также как с помощью тестов справляться с проблемным, устаревшим кодом и превращать его в комфортную рабочую среду.
От выбора понятных и ориентированных на поведение названий тестов до мощных техник управления зависимостями, такими как базы данных и конкурентные серверы, "Мощь Go: Тестирование" содержит всё, что вам нужно для освоения искусства тестирования в Go.
Что вы узнаете:
Прочитав эту книгу и выполнив задания, вы освоите:
- Создание практичных, надёжных и удобных программ на Go с помощью тестов.
- Использование всех современных возможностей библиотек и инструментов тестирования Go.
- Стандартные техники: табличные тесты, параллельное тестирование, глубокое сравнение и золотые файлы.
- Генерацию случайных входных данных и тестирование, основанное на свойствах.
- Тестирование удобства использования и исследовательское тестирование.
- Продвинутые методы: фуззинг и мутационное тестирование с подробными примерами.
- Поддержку и упрощение исправления ошибок, рефакторинга и работы с устаревшим кодом через тесты.
- Тестирование обработки ошибок, проверки, sentinel-объектов, обёрнутых ошибок и других "печальных" путей.
- Тестирование сложных систем: взаимодействие с пользователем, базы данных, CLI и HTTP-сервера.
- Рефакторинг старых систем с неудобными зависимостями.
- Тестирование конкурентных и асинхронных API.
- Проверку безопасности конкурентного выполнения кода.
- Написание сценарных тестов для CLI с использованием языка testscript.
- Использование моков, дублей, заглушек, шпионов, фейков и адаптеров.
- Избежание хрупких, слабых и нестабильных тестов, а также их исправление.
- Подделку времени для тестирования.
- Проектирование полезных, информативных и сложных тест-кейсов.
- Написание тестов, которые рассказывают историю, понятную и увлекательную.
- Построение культуры качества в вашей организации и проведение продуктивных код-ревью.
С помощью этой книги вы научитесь создавать даже самые сложные проекты с нуля, используя простой, надёжный и стрессоустойчивый рабочий процесс для разработки качественного программного обеспечения.
Тесты - не цель, как я часто напоминаю своим ученикам: цель - программирование с уверенностью.