Выбор ответа Middle Тестирование БД через SQL обновлено

Откат тестовых данных

Вопрос

Тестировщик готовит данные в базе тестового стенда и хочет гарантированно вернуть всё как было. Что подходит лучше?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Вести подготовку и проверки в BEGIN ... ROLLBACK, если приложению данные не нужны. Транзакция с откатом бесследно убирает изменения, но работает, только если всё делается в одном соединении: приложение не увидит незафиксированные данные.

Варианты ответа

  1. Выполнить TRUNCATE затронутых таблиц после теста и заново накатить сиды
  2. Вести подготовку и проверки в BEGIN ... ROLLBACK, если приложению данные не нужныправильный ответ
  3. Удалить после прогона все строки по created_at > now() - interval '1 hour' в затронутых таблицах
  4. Ничего не убирать: стенд общий, а чужие данные тестам обычно не мешают

Разбор

Транзакция с откатом бесследно убирает изменения, но работает, только если всё делается в одном соединении: приложение не увидит незафиксированные данные. Для API-тестов данные обычно создают через API или фикстурами с уникальными метками и удаляют по ним. Удаление по времени снесёт чужие данные, а очистка таблиц сломает стенд остальным.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме