Retry в Go автотестах: как перестать бояться flaky-тестов

Flaky-тесты в Go — неизбежны, но наивные ретраи делают только хуже. Разбираем, почему retry — это не цикл и как правильно реализовать повторный запуск автотестов.

Семь раз оттесть, один раз деплой

Flaky-тесты в Go — неизбежны, но наивные ретраи делают только хуже. Разбираем, почему retry — это не цикл и как правильно реализовать повторный запуск автотестов.

Всем привет! Меня зовут Алена, и я продолжаю свой цикл статей про применение ИИ в тестировании. Следующий этап в shift-left подходе — это автоматизация. А в нашем случае — генерация автотестов с помощью ИИ.
После успехов с требованиями и тестовой документацией мне казалось, что дальше всё будет ещё проще. Однако первый pull request оказался настолько «удачным», что его разбор занял почти две недели.

Меня зовут Даниил Никольский, я бэкенд-инженер команды Trisigma. В создании статьи участвовали Искандер Мирмахмадов, руководитель продуктового направления, и Александр Кузнецов, старший аналитик. В этой статье я расскажу про Switchback-эксперименты, рассмотрим как они устроены, почему для него не подходит обычный t-тест, и какая инфраструктура нужна, чтобы проводить такие эксперименты в промышленном масштабе.
Решение доступно всем желающим по ссылке, а тут можно познакомиться с подробной технической документацией.

Увы, в июне индекс активности IT-найма никаких особо хороших новостей не показывает. Число нанимающих компаний для роли Manual QA после роста в 2024 году и стабилизации в 2025 году падает уже 7-й месяц подряд. Для Automation и Senior QA продолжается постоянное небольшое снижение. Единственный рост, пусть и небольшой — у AI QA и ML Evaluation, но там рынок еще не сформирован.

Что с наймом в IT?
Есть множество способов узнать ответ на вопрос.
Субъективные – наблюдение за делами в своей компании, получение апдейтов от знакомых в других IT-компаниях или отслеживание новостей о сокращениях.
Объективные – анализ макроэкономических показателей или изучение статистики с числом вакансий на job-сайтах.
Обычно ориентируются именно на последний индикатор – на число открытых сейчас IT-вакансий. Но это относительный параметр (1000 открытых вакансий для конкретной IT-роли – это много или мало?), который не учитывает, что рост как числа IT-компаний, так и соискателей продолжается и во время кризиса (поэтому год назад 1000 открытых вакансий – это хорошо, а сейчас – плохо).
Год назад мы создали более точный индикатор активности найма.
Ежедневно AI-агенты сканируют напрямую тысячи источников: сайты компаний, ATS-системы и job-сайты. Миллионы накопленных записей о датах открытия и закрытия вакансий по каждой IT-роли в каждой из тысяч компаний позволяют видеть тренд роста или падения найма по конкретным IT-ролям.
При помощи этого индикатора можно узнать, когда (если) кризис закончится.

Не каждый сценарий, который можно покрыть автотестом, выгодно автоматизировать. Разбираю, какие тесты чаще всего не окупаются, почему длинные и хрупкие E2E быстро превращаются в источник затрат и как смотреть на автоматизацию с точки зрения бизнеса.
19 июля 2024 года в 04:09 UTC CrowdStrike выкатил обновление контентного файла для своего антивируса Falcon Sensor. За следующие 78 минут 8,5 миллиона Windows-машин по всему миру ушли в бесконечный BSOD-loop. Встали аэропорты (>5000 отменённых рейсов только в США), больницы, банки, биржи, 911-диспетчерские. Прямой ущерб корпоративных клиентов — около $5,4 млрд по оценке Parametrix; одна только Delta потеряла ~$500 млн.
Самое неприятное для нас, инженеров: баг был тривиальный. Не гонка потоков на проде под нагрузкой, не хитрый UB в компиляторе — а банальный выход за границу массива, который ловится unit-тестом за пять секунд. Ниже — как именно это произошло и почему ни один уровень защиты не сработал.

Всем привет, на связи Роман Бобков, тестировщик из проекта Wibes. В своей новой статье я решил поделиться личным опытом тестирования верстки и layout на Android и теми инструментами, которые можно использовать для этого.

Недавно мне понадобился консольный HTTP-клиент для отладки сайта, который закрыт TLS 1.3 на ГОСТ-алгоритмах. Из доступных средств почти не было вариантов. В итоге я разработал на Java небольшую консольную утилиту gost-curl, которая может быть полезна разработчикам, devops-инженерам, администраторам и QA.
gost-curl самодостаточен, не требует установки openssl или каких-то крипто-провайдеров. Бинарные файлы есть для разных ОС. Скачал, запустил, профит.

Всем привет! Продолжаю цикл статей про применение ИИ в тестировании. В первой я рассказывала о том, зачем мы пошли в пилот по применению ИИ в тестировании. Во второй — как собирать контекст. В третьей — как тестировать требования, когда контекст уже готов.
Сегодня про следующий этап: генерацию тестовой документации: тест-кейсы, чек-листы, матрица покрытия и т.д. Небольшой спойлер: в конце статьи вас ждет ссылка на репозиторий с инструкциями и промтами.

Я провёл несколько лет в роли Leadа нагрузочного тестирования. И если честно, долгое время это была специализация из разряда “да зачем оно надо, это ваше НТ, купим ещё серваков и железа клевого”. Сейчас всё изменилось. Расскажу почему.
Железо подорожало. И всё подходы перестали работать Ещё пару лет назад в компаниях была простая и рабочая логика: сервис начинает тормозить под нагрузкой, не беда, докидываем железо. CPU не справляется меняем на лучшее! Память кончается, add плашек или буст. Не дорого, быстро и предсказуемо.
Потом серверное железо резко подорожало. Развитие ИИ, санкции, курс $, логистика и всё это потянуло цены вверх. Но не важно почему, важнее что это произошло. И внезапно оказалось, что “докинуть железа” перестало быть дефолтным решением. Бюджеты компаний не резиновые, а проблемы с производительностью никуда не делись.
И вот тут команды начали задавать вопросы, которые раньше не задавали.
Новые вопросы, новые задачи Раньше вопрос звучал так: “Сколько серверов докупить?”
Сейчас он звучит иначе: “А насколько эффективно то, что уже есть?”
Это принципиально другая постановка задачи. И она требует принципиально другой работы.
Конкретно команды начали смотреть на вещи, которые раньше просто игнорировались:
Конфигурация. Один и тот же сервис на одном и том же железе может вести себя кардинально по-разному в зависимости от конфига. Размер пула потоков, таймауты, параметры GC, настройки connection pool — всё это влияет на производительность под нагрузкой. Раньше эти параметры часто оставляли дефолтными. Сейчас их начали трогать осознанно.

Привет! На связи команда QA Automation СВОЙ Тех. Сегодня мы хотим поднять тему, которая за последний год превратилась из хайпового «вайб-кодинга» в суровую инженерную реальность. Мы поговорим об агентной разработке (AI Agents) в автоматизации тестирования.

Тридцать зелёных юнит‑тестов ещё не означают, что код готов к продакшену. Баги часто прячутся в данных, которые никто не догадался проверить вручную: пустых строках, дубликатах, редком Unicode и неожиданных последовательностях операций.
Разбираемся, как Hypothesis генерирует такие случаи, проверяет свойства вместо отдельных примеров и сводит падение к минимальному контрпримеру.

В статье представлена пошаговая инструкция, которая поможет вам настроить SMTP-сервер на Windows Server 2019 для работы с шифрованием TLS на порту 587 и аутентификацией по протоколу Negotiate.

Почему, несмотря на накопленный опыт и современный инструментарий, число флаки‑тестов растёт год от года? Исследование BitRise 2025 года показало, что доля команд, которым приходится сталкиваться с флаки-тестами, выросла с 10% в 2022-м до 26% в 2025-м.
Нестабильные тесты сильно бьют по рабочим процессам: из опроса 1600 человек в 2023 году стало ясно, что флаки-тесты съедают 8% рабочего времени, почти столько же, сколько занимает наладка и поддержка тестовых сред. Но реальный вред флаков гораздо больше: они подрывают доверие к здоровым тестам и ставят под вопрос всю автоматизацию.
Вряд ли количество флаков растёт из-за того, что люди разучились писать атомарные тесты и правильно проектировать архитектуру приложений. Скорее проблема в том, что усложняется среда разработки и тестирования:
- Больше этапов в пайплайнах
- Более сложные рабочие процессы
- Больше сторонних зависимостей
Сложность среды, сторонние зависимости - всё это бьёт в первую очередь по E2E-тестам. Проблема в том, что компенсировать эти источники сложности может быть очень дорого. И именно об этом я хочу поговорить сегодня: насколько дорого обеспечить стабильность E2E-тестов?

В первой части я ускорил большой интеграционный pytest-сьют с получаса до полутора минут за счёт инфраструктурных правок. Во второй проверяю следующий очевидный слой оптимизации — pytest-xdist.
Результат оказался не магическим, но полезным: -n auto дал ещё ×3.4 локально и около ×2.7 в CI. В статье показываю, почему xdist не заменяет дешёвый setup, а только домножает его; как разводить БД и Redis по воркерам; где упираются соединения Postgres; и почему память Docker VM и тюнинг Postgres не сдвинули потолок.

Практически каждый современный веб-сервис, мобильное приложение или микросервис использует API для обмена данными между компонентами системы. В большинстве случаев речь идет именно о REST API.

Сразу честно, чтобы вы понимали, с кем имеете дело: я из тех душнил, которые закатывают глаза, когда в сотый раз слышат «а давайте это все сделает нейросеть». Я видел слишком много красивых демок, где ИИ за минуту генерит сотню тест-кейсов – из которых добрая половина про кнопки, которых в продукте нет, а вторая половина дублирует друг друга разными словами, не говоря уже о глубине тестирования бизнес-логики.
Поэтому когда у нас возникла задача как следует протестировать внутренний калькулятор трудозатрат, и я взялся ее решать, то открыл инструмент, проскроллил его вниз… и понял, что мне предстоит либо несколько недель монотонного ада, либо надо что-то придумывать.
Спойлер: придумал. ИИ реально помог, но не так, как обещают на конференциях. Ниже – подробный разбор: какие инструменты и модели я использовал, какие промпты сработали, как рисовалась матрица покрытия и, самое главное, как побороть галлюцинации в расчётах. Ведь в калькуляторе это не смешная оплошность, а неправильное число, на котором кто‑то потом посчитает стоимость проекта.

Продолжаем рассказывать об альтернативном способе подтверждения возраста на веб-ресурсах без использования биометрии, интеграции с ЕБС и раскрытия персональных данных. О том, как это можно сделать, мы подробно писали в прошлой статье. Теперь разберемся, как реализовать подобный сценарий с помощью WebAssembly и какие возможности это открывает для веб-платформ. В этом материале показываем код, ищите под катом.

Есть устойчивое поверье: интеграционные тесты медленные, потому что ходят в настоящую базу. «Подними SQLite в памяти», «замокай репозитории», «не гоняй Postgres в CI» — стандартный набор советов. Мокать я не люблю, но крыть упрёк «настоящая база — это медленно» было нечем. Поэтому я сел, спрофилировал и померил: 3316 интеграционных тестов, прогон 30 минут. После трёх правок инфраструктуры — 109 секунд. База оказалась ни при чём, а совет «чисти базу через TRUNCATE, это быстрее DELETE» у меня работал ровно наоборот — обидно вдвойне, потому что эта рекомендация уже лежала в черновике моей следующей статьи.