Чтобы понять, что решает synctest, мы должны сначала рассмотреть основную проблему: недетерминизм в конкурентных тестах. func TestSharedValue(t *testing.T) { var shared atomic.Int64 go func() { shared.Store(1) time.Sleep(1 * time.Microsecond) shared.Store(2) }() // Проверяем общее значение через 5 микросекунд time.Sleep(5 * time.Microsecond) if shared.Load() != 2 {…
Устали от нестабильных тестов?Автоматизированные тесты часто ведут себя нестабильно. Логичное решение в такой ситуации — немедленно исправить такие тесты или избавиться от них. Но что, если тестов — тысячи, инженеров, которые могут их исправить, не так много, а избавление от…
FlakyDetector — мой путь к созданию инструмента для ловли «нестабильных» тестов в PythonПривет! Меня зовут Артём Алимпиев, я Python-разработчик. Недавно я столкнулся с тем, что даже идеально написанные тесты порой ведут себя… странно. Один день они проходят, другой — падают, хотя код не…
Команда Go for Devs подготовила перевод статьи о пакете synctest, который с Go 1.25 стал частью стандартной библиотеки. Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов. Читать далее