Маєте flaky-тести? Розкажіть про них до Дня тестувальника та отримайте мерч від DOU! 🐞🎁

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Привіт, спільното! 👋

Сьогодні, 9 вересня, в світі традиційно відзначається День тестувальника, з чим ми вас і вітаємо!

Найдивніші баги ми вже з вами обговорювали нещодавно, тому, на честь цього свята, сьогодні давайте поспілкуємося про ваші flaky-тести.

Розкажіть в коментарях:

  • Що саме перевіряв ваш тест
  • Як він «флейкав»
  • І як ви з цим впоралися (фікс, обхід, додатковий моніторинг etc)

Конкурс триватиме до 23:59 9 вересня 2025 року, тож не зволікайте і надсилайте свої історії! 😉

🏆 Вкінці дня редакція обере автора найцікавішої історії, якому ми подаруємо мерч від команди DOU. Тож коментуйте та діліться своїм досвідом!

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Маєте тести, розкажіть про це :-)

Дякуємо всім за ваші історії! ❤️

Редакція вже визначила фаворита, тож подивіться у свої інбокси 😎

Хоч конкурс і завершився, але ми й надалі чекаємо на ваші захопливі розповіді! Тож пишіть, публікуйте та дискутуйте!

Ще коли проходив курси, багато намучився зі StaleElementReference на чистому Селеніумі. Причина була в тому, що сторінка якогось дива надсилала ріквест на бекенд двічі — і динамічно перезавантажувала контент. Пофіксав хитрими try-catch з retryCount за пару днів до демо...

А вже на роботі багато крові попив Safari на віртуалках LambdaTest. Тести падали зі схожими помилками, але кожен раз різні. Аж потім второпав, що налаштування Сафарі можуть трохи відрізнятися від машини до машини. Тому виборов нам real device, який вже точно завжди мав однакові налаштування. Але все одно на старті довелося обгорнути retry, якщо раптом SessionNotCreated.

Історія доволі прозаїчна.
Прийшло якось 1ше число місяця, і з самого ранку CI/CD крешає. Білди не білдяться, деплої не деплояться, SaaS на 20k+ b2b клієнтів не рухається.
Почали розбиратись і найшли багу в тестах де брали «завтра» додаючи один день до сьогодні і порівнювали місяці чи шось таке, і ці тести почали падати.
Все б нічого, але і master бранча не білдається, і мердж ріквест з фіксом неможливо вмерджити бо тести не проходять.
Виявилось що чомусь на CI/CD була встановлена часова зона Гаваї, а там ще попередній місяць і 31ше число. В результаті, всі просто сиділи і чекали коли в обід на Гаваях настане 1ше число 🤷‍♂️🙃

Колись я почав писати практично з нуля автотести для десктоп проекту. Коли щось локально почало бігать — почався етап зробить пайплайн в ажур девопсі і щоб воно підіймало віртуалку, ресторило чистий снепшот, запускався агент і починався ран.
Коли врешті решт все це було зроблено — нарешті тести почали бігать самостійно.
Але перший же вже заскедулений нічни ран впав. Причина не ясна, на скріншоті з машини де женуться тести — відкритий аплікейшн і ніяких крешів.
Перевіряю знову вручну локально — все ок.
Йду на віртуалку, запускаю паралельно пайплайн, наблюдаю — все біжить просто чудово.
Думаю якого фіга.. ладно, фіг з ним, може завтра пройде.
Наступний день — все те саме. Наступний — те саме.
Думаю, так , блет, зараз зміню заскедулений ран шоб стартанув через 5 хв — буду дивитись ну прям все що відбувається і хвй тільки спробує пройти. І воно таки впало)
Короче шо це було: коли стартує вінда і запускається ажурівський ран — то відкривається цмдшка в якій типу логи зі статусами ажурівських пайплайн тасок. Phase 1 Start VW: Successful. Phase 2 Install application: Successful. І тд.
Так от виявилось, що оце вікно перекривало мій аплікейшн, коли він запускався. І тест не міг залогінитись в апплікейшн, бо умовна кнопка логін по якій намагався клікнуть курсор — знаходилась якраз під цим клітим чорним цмдшним вікном) а скріншот робився саме вікна аплікейшна, тому я не бачив в чому причина)
Короче пофіксив тим що вже запусав той цмд згорнутим)

Была интересная история.
Был в небольшой продуктовой конторе, писали аппликуху для Forex трейдинга.
Всё стандартно: web-морда с React (или Node.js) снаружи, Java внутри.
И вот написал я пачку backend тестов на Groovy, запускаю — всё хорошо.
Загоняю в CI, запускаю весь сьют — начинают рандомно падать с таймаутом.
В логах аппликухи — пусто, ничего интересного.
Начинаю чесать репу мол что ж такое: я ж зависимые тесты крайний раз году в 2013-м писал ))) Как бы много лет прошло, чтоб такой ляп сделать. Ну мож что-то провтычил, где-то есть неочевидная зависимость. Окей. Рандомизирую запуск (по сути отключаю приоритеты), запукаю — тот же эффект. Тупо падают по рандому. Ну то есть дело не в том, кто прошёл до этого, а кто — нет. Окей. Изучаю дальше. Дохожу до мысли, что 1-е тесты не падают никогда. Т.е., если зафейленный в прошлом запуске тест запустить в этот раз 1-м — он не упадёт. Проверил несколько раз — эффект 100%. Прикинул, что в среднем тесты начинают падать после 50-го примерно. Собираю вот это всё, прихожу к разрабам. Собираем стенд с мониторами метрик аппликухи (память, процессор, кеш Java и т.д.). Запускаем — опа. Заканчивается память, и аппликуха попросту не успевает отдать тяжёлые запросы вовремя, ибо начинает безбожно тормозить.
Уже вместе пытаемся найти причину, запуская тесты по нескольку штук и проверяя состояние аппликухи после каждого прогона. Тесты, которые вызывают проблему гарантированно, нашли. Репродьюс проблемы — соответственно, тоже. Достаточно 1 и тот же «проблемный» тест (любой из нескольких на выбор) прогнать раз 30 по кругу. И где-то раза после 20-го он гарантированно свалится. Уже проще: из flaky проблемы, которую непонятно, как воспроизвести, получили стабильно воспроизводящуюся проблему. Через 3 дня причину таки находим: утечка памяти при работе с elastic search. Фиксим. Проверяем прогоном 200 раз — параметры в норме. Перезапускаем сьют: падения пропали, всё гут.

у нас дуже багато завʼязок на пермішинах існує і по класиці жанру вийшло так, що найпримітивніший функціонал comment секція пасалась в тестах, хоч мала фейлитись, і того ніхто не відловив вчасно що є проблема, а тести проходили як успішні, бо опирались на пермішини. От так в нас тест пасався, коли ми мали насправді 400 і на додачу до того додалась інша проблема на стороні конфігурації, де потрібно було пустий масив задавати, щоб апка не крашилась і це все на передодні PEN тесту. Потім додали перевірки на стороні API, а в тестах ввели додатковий чек, щоб стабілізувати флоу, провели RCA одразу та визначили ще раз пріоритети в перевірках і пішли релізити хотфікс

ой, була невеличка історія ще роки 3 тому, як Клопотенко наш автотест надурив 😆
мою групу QA Automation вчили писати швиденькі автотести, і моніторити як консоль, так і юайку (і потім скріни юайки кидати як рішення домашньої задачі)
і ми працювали з сайтом Клопотенка — бейзік: завантаження, пошук елемента, клік
і в якийсь момент в усіх почав крашитись тест ран, оскільки Клопотенко, якого ми шукали по xpath, просто перестав з’являтись 😁
осточортіла йому ця кагала клікающих невменяшек

потім пройшов якийсь рантайм і стало краще, але всеодно було смішно — повинні були знайти Клопотенка, а він ховався від нас

Підписатись на коментарі