Как ты используешь SQL в тестировании
Вопрос
Как ты используешь SQL и базу данных в работе тестировщика? Приведи примеры запросов.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Проверка результата: запись после API-запроса, поля, статусы, связанные таблицы
Поиск дефектов в данных: дубли через GROUP BY HAVING, сироты через LEFT JOIN или NOT EXISTS, расхождения сумм
Подготовка данных: нужные состояния, которые долго создавать через интерфейс
Разбор бага: на каком шаге данные стали неверными
Осторожность: NULL-ловушки, доступ только на чтение к важным стендам, без правок в проде
Что могут спросить следом
- Чем LEFT JOIN отличается от INNER JOIN?
- Почему NOT IN опасен с NULL?
- Как не оставить мусор после своих тестов?
Разбор
База для меня второй источник правды после API. Первое: проверка результата. Создал заказ через API, затем по id смотрю в базе статус, сумму, позиции, платёж и событие в outbox, потому что ответ API могут собрать из запроса, не сохранив. Второе: поиск дефектов в данных. Дубли ищу через GROUP BY и HAVING count больше одного, сирот через LEFT JOIN с проверкой IS NULL или NOT EXISTS, расхождения сумм заказа и позиций через агрегат с COALESCE, оплаченные заказы без платежа через NOT EXISTS. Третье: подготовка данных, например заказ, который висит в оплате три дня, через интерфейс не создашь. Четвёртое: разбор бага, по времени и id видно, на каком шаге данные испортились. И аккуратность: помню про NULL, IS NULL вместо равенства, NOT IN с NULL даёт пустоту. На общих стендах пишу только в свои тестовые данные, в проде только читаю, и то если есть доступ.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.