QA Interview Hub · База знань · Тести
Manual QA
SQL для QA
перевірка даних у базі
Які базові SQL-запити має знати QA?
SELECT з фільтрацією, сортуванням і обмеженням, агрегатні функції і групування.
-- останні 10 транзакцій користувача
SELECT id, amount, currency, status, created_at
FROM transactions
WHERE user_id = 1042
ORDER BY created_at DESC
LIMIT 10;
-- кількість і сума транзакцій за статусом
SELECT status, COUNT(*) AS cnt, SUM(amount) AS total
FROM transactions
WHERE created_at >= '2026-10-01'
GROUP BY status
HAVING COUNT(*) > 0;
На співбесіді: Я впевнено використовую SELECT з фільтрацією через WHERE, сортуванням і LIMIT, а також агрегатні функції COUNT і SUM з GROUP BY. HAVING — для фільтрації вже згрупованих результатів, на відміну від WHERE, який фільтрує рядки до групування.
Які є види JOIN?
- INNER JOIN — лише рядки, що мають пару в обох таблицях.
- LEFT JOIN — усі рядки лівої таблиці, з правої — якщо є пара, інакше NULL.
- RIGHT JOIN — навпаки.
- FULL JOIN — усі рядки обох таблиць.
LEFT JOIN з перевіркою на NULL — зручний спосіб знайти «сиротів»: записи без пов'язаних даних.
-- транзакції без запису в журналі аудиту (а він має бути у кожної)
SELECT t.id, t.amount
FROM transactions t
LEFT JOIN audit_log a ON a.transaction_id = t.id
WHERE a.id IS NULL;
На співбесіді: INNER JOIN повертає лише рядки з парою в обох таблицях, LEFT JOIN — усі рядки лівої, а з правої — якщо є. Я часто використовую LEFT JOIN з перевіркою на NULL, щоб знайти записи, у яких немає обов'язкових пов'язаних даних, наприклад транзакції без запису в журналі аудиту.
Як ти використовуєш SQL для перевірки даних?
- Після дії в UI або API — перевірити, що запис з'явився з правильними значеннями.
- Знайти дублікати.
- Перевірити цілісність: немає записів без пов'язаних даних.
- Підготувати тестові дані або знайти користувача в потрібному стані.
На спільних середовищах — лише SELECT, якщо немає явного дозволу змінювати дані.
-- дублікати платежів з тим самим idempotency key
SELECT idempotency_key, COUNT(*)
FROM payments
GROUP BY idempotency_key
HAVING COUNT(*) > 1;
На співбесіді: Після дії в UI чи API я перевіряю в базі, що запис створився з правильними значеннями. Також шукаю дублікати й записи без обов'язкових зв'язків і знаходжу користувачів у потрібному стані для тестів. На спільних середовищах лише читаю, якщо немає дозволу змінювати дані.