Вопрос с собеседования · Тестирование (QA)
Зачем тестировщику SQL и какие запросы нужно уметь писать?
JuniorSQL для тестировщикаSQL
Ещё спрашивают так:
- Какие SQL-запросы спрашивают у тестировщика?
- Как проверить данные в базе после действия в интерфейсе?
Коротко
SQL нужен, чтобы проверять данные в базе после действий, готовить тестовые данные и искать причину бага.
- Минимум: SELECT с WHERE, ORDER BY, LIMIT; JOIN; GROUP BY с COUNT/SUM и HAVING
- Плюс INSERT, UPDATE, DELETE — осторожно и только на тестовом стенде
А ещё Типовая задача: «найти пользователей без заказов» — LEFT JOIN и IS NULL
Подробно
Где тестировщик использует SQL:
- проверка результата — после оформления заказа в базе есть запись с правильной суммой и статусом;
- подготовка данных — найти пользователя в нужном состоянии или создать его;
- локализация бага — данные сохранились неверно или фронтенд их неверно показывает.
Что нужно знать на уровне junior:
SELECT ... FROM ... WHEREс условиями=,>,IN,LIKE,BETWEEN,IS NULL;ORDER BY,LIMIT,DISTINCT;- агрегаты
COUNT,SUM,AVG,MIN,MAXсGROUP BYиHAVING; INNER JOINиLEFT JOIN— разницу и когда какой нужен;INSERT,UPDATE,DELETE— и привычку всегда писатьWHEREи сначала проверять условие черезSELECT.
Подробнее о JOIN, индексах и транзакциях — в разделе «Базы данных».
Пример
-- заказы пользователя за последнюю неделю
SELECT id, total, status FROM orders
WHERE user_id = 42 AND created_at >= now() - interval '7 days'
ORDER BY created_at DESC;
-- пользователи без заказов
SELECT u.id, u.email FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;
-- клиенты, сделавшие больше трёх заказов
SELECT user_id, COUNT(*) AS orders FROM orders
GROUP BY user_id HAVING COUNT(*) > 3;Что хотят услышать
- Зачем SQL тестировщику — с примерами из работы.
- Уверенный SELECT с фильтрами, сортировкой, агрегатами.
- Разница INNER и LEFT JOIN.
- Осторожность с изменяющими запросами.
Частые ошибки
- UPDATE или DELETE без WHERE.
- Путать WHERE и HAVING.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗SQL тестировщику не нужен — данные видны в интерфейсе
- ✓Проверка данных; без заказов — LEFT JOIN и IS NULL
- ✗Пользователей без заказов находят через INNER JOIN с таблицей заказов и WHERE IS NULL
- ✗DELETE можно смело выполнять на продакшене, если есть бэкап
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.