Были ли проблемы несовместимости данных после миграций
Что проверяют
Проверяли ли вы данные после миграции как отдельный объект тестирования, а не только интерфейс поверх них. Интервьюер хочет услышать конкретную проблему, как вы её нашли и что поменялось в процессе после неё. Следом обычно спрашивают, как вы убедились, что данные перенеслись полностью.
Как отвечать
Каркас: где была миграция (изменение схемы в релизе или перенос между системами), что сломалось, как нашли, как предотвратили повтор. Типичные классы несовместимости, которые стоит назвать на своём примере:
- форматы и типы: даты в разных форматах и часовых поясах, деньги во
floatвместоdecimal, обрезанные строки после уменьшения длины колонки; - кодировки: кириллица, превратившаяся в «кракозябры» при переносе из старой базы;
- пустые значения:
NULLпротив пустой строки, новая колонкаNOT NULLбез значения по умолчанию; - справочники и коды: старые значения статусов, которых нет в новой системе;
- связи: записи, ссылающиеся на удалённые или непереданные строки;
- совместимость версий: при поэтапном деплое старая версия приложения какое-то время работает с уже новой схемой.
Как проверяют: сравнивают количество записей и контрольные суммы по таблицам, ищут SQL-запросами сироты и дубли, сверяют выборку записей поле в поле, прогоняют миграцию на обезличенной копии прода, а не на пустом стенде. Если в проекте Flyway или Liquibase, отдельно проверяют откат.
Опыт нужен свой: объём данных, что именно разъехалось, сколько записей пришлось исправлять. Если с миграциями не сталкивались, скажите честно и опишите, как построили бы проверку по этому списку. Это лучше выдуманной истории, которая развалится на втором уточнении.
Где спотыкаются
Проверяют только интерфейс: страница открылась, значит, данные на месте. Ошибки в редких записях так не видны.
Тестируют на стенде с десятком аккуратных записей. Несовместимость живёт в старых грязных данных, которых на тестовом стенде нет.
Рассказывают историю без результата и выводов. Интервьюеру важно, что вы поменяли в процессе, чтобы проблема не повторилась.