Testing

Temporal в эксплуатации: тюнинг воркеров, наблюдаемость, тестирование, Cloud

Temporal в эксплуатации: тюнинг воркеров, наблюдаемость, тестирование, Cloud

Запустить Temporal легко, эксплуатировать — отдельная работа. Разбираем тюнинг воркеров (ёмкость, pollers, sticky cache) с замером, где расширение воркера сокращает ожидание задач почти в десять раз при неизменном сервере; наблюдаемость и два семейства метрик с похожими именами, которые нельзя путать; тестирование с промоткой времени — Sleep(24h) проходит за десятки миллисекунд; и выбор Cloud vs self-host с честной оценкой стоимости. Это статья про то, что отличает пилот от прода

Как писать тестируемый код

Как писать тестируемый код

Тестопригодность — свойство дизайна, а не тестов: если тяжело написать тест, проблема в коде. Швы и инъекция зависимостей, инъекция недетерминизма (часы, случайность, ID), functional core / imperative shell, зависимость от абстракций на границах и заход в легаси через characterization-тесты — на живом Go-стенде

TDD и BDD на практике: red-green-refactor, outside-in и цена Gherkin

TDD и BDD на практике: red-green-refactor, outside-in и цена Gherkin

TDD — это техника дизайна через обратную связь, а не про 100% покрытие; BDD — общий язык примеров, а не «TDD с Cucumber». Разбираем цикл red-green-refactor, школы Detroit и London, BDD как спеку через примеры и честную цену Gherkin — на живом Go-стенде с реальными прогонами и mutation-тестированием

Тестирование распределённых систем: уровни, границы, асинхронность

Тестирование распределённых систем: уровни, границы, асинхронность

Юнит-тесты не поймают то, что ломается между сервисами: несовместимый контракт, потерянное сообщение, гонку в eventual consistency. Как выстроить уровни для распределённой системы — юнит → интеграция (Testcontainers) → контрактные тесты (вместо хрупких e2e) → немного e2e, где тест-дубли ставить на границах, и как тестировать асинхронность и eventual так, чтобы тесты не были флаки. Стратегия, а не набор фреймворков

Тестирование в разных языках: пирамида, Testcontainers, property-based

Тестирование в разных языках: пирамида, Testcontainers, property-based

Одна дисциплина — пирамида тестов, дублёры, property-based и реальные зависимости через Testcontainers — в Go, Java и Python на одном домене. Что идиоматично, чем различаются экосистемы и почему на настройках по умолчанию property-тест находит реальный дефект ненадёжно во всех трёх сразу

Flaky-тесты: почему мигают и как чинить

Flaky-тесты: почему мигают и как чинить

Flaky-тест не «случайный» — у каждого мигания детерминированная причина: гонка, время, порядок выполнения, обход map, sleep вместо синхронизации. Разбираем пять классов на живом Go-стенде с реальной частотой мигания и настоящим детектором гонок, чиним каждый детерминизмом — а не ретраями

Отладка конкурентности в Go: race detector, утечки горутин, дедлоки

Отладка конкурентности в Go: race detector, утечки горутин, дедлоки

Как ловить конкурентные баги в Go: race detector по-настоящему (как читать отчёт, оверхед, место в CI), поиск утечек горутин через goleak и pprof, дедлоки и встроенный детектор, профили блокировок и мьютексов

Тестирование в Go: table-driven, Testcontainers, -race

Тестирование в Go: table-driven, Testcontainers, -race

Практичное тестирование Go-сервиса: стандартный пакет testing и table-driven как фундамент, httptest для хендлеров, интеграционные тесты через testcontainers-go на реальных Postgres и Redis, детектор гонок -race и честное покрытие без самообмана — на одном сквозном стенде с живыми замерами