TGViewer
Борис опять Борис опять @boris_again · 17.6K subscribers
Post #1418 1.39K
#лабораторный_журнал

Притча про пользу юнит-тестов.

У джуна была задачка. В БД лежат сущности А и Б, у обеих есть координата Х. Надо сделать API ручку, которая принимает на вход сущность А и возвращает ближайшую к ней сущность Б.

Джун сделал. Для проверки написал огромный скрипт, который скачивает все А из прода, подает в эндпоинт, сохраняет полученные Б, потом делает сопоставление отдельным SQL запросом в БД, сравнивает результаты. Приходит ко мне, говорит: двадцать пять тысяч сопоставилось верно, а четыре тысячи неверно и я не понимаю почему. Как искал проблему: смотрел на координаты, которые неправильно сопоставились, искал закономерности. Не нашел.

Я говорю: Господь дал нам грешным юнит-тесты, используй их! Делаешь тест, где для каждой Б создаешь в той же точке одну А. Запускаешь сопоставлялку. Каждой А должна сопоставится одна конкретная Б. Проверяешь, что все, что должно было сопоставиться, сопоставилось. Джун спрашивает: какой смысл проверять, что то, что я уже сопоставил, сопоставилось верно?

А вот какой. В твоем скрипте может быть проблема в трех местах: при загрузке данных из прода, в твоем коде сопоставления, в коде сопоставления через SQL запрос. В юнит-тесте ты фиксируешь входы и ожидаемые выходы: проблема может быть только в коде сопоставления. Никаких движущихся частей. И не надо перебирать тысячи примеров, чтобы поймать ошибку.

Джун мне не поверил, посмотрел на меня как на дурного, но согласился попробовать. Позже пишет: написал тест и сразу нашел проблему. Оказалось, что float координата на входе тихо конвертилась в int, поэтому иногда сущности сопоставлялись неверно.

В мире стало на одного просветленного больше.
  • 👍 55
  • 😁 6
  • 🔥 4
  • 👎 1
More from @boris_again
  1. Sep 28, 2026# RoaM: Road Machiners https://btseytlin.itch.io/road-machiners Любой мужчина в своей жизн…
  2. Sep 28, 2026photo post
  3. Sep 25, 2026На конференции Yandex Scale показали Алису AI Про: в ней обещают 120+ навыков и 20+ плагин…
  4. Sep 24, 2026Post #4112
  5. Sep 23, 2026Алексей Гусаков на deep tech night рассказал как Яндекс Музыка перешла на end-to-end генер…
  6. Sep 23, 2026Постоянная рубрика: "блекпилл недели (и как с ним быть)" После предыдущего болезненного оп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →