Какой у вас опыт написания SQL-запросов для тестирования?

«Какой у вас опыт написания SQL-запросов для тестирования?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Активно использую SQL для проверки целостности и корректности данных в базах (MySQL, PostgreSQL) в ходе тестирования.

Основные сценарии применения:

  1. Верификация данных после операций: Проверка, что запись создалась, обновилась или удалилась корректно.
  2. Анализ сложных связей: Использование JOIN для проверки консистентности данных между связанными таблицами.
  3. Подготовка тестовых данных: Наполнение БД специфичными данными для воспроизведения сценариев.
  4. Проверка бизнес-логики: Написание запросов, реализующих сложные условия, которые должны быть отражены в приложении.

Пример запроса для проверки целостности заказов пользователя:

-- Найти пользователей, зарегистрированных после 1 января 2023, 
-- у которых более 5 заказов, и вывести детали
SELECT 
    u.id AS user_id,
    u.email,
    u.registration_date,
    COUNT(o.id) AS total_orders,
    SUM(o.amount) AS total_spent
FROM users u
INNER JOIN orders o ON u.id = o.user_id  -- Используем INNER JOIN, чтобы отсечь пользователей без заказов
WHERE u.registration_date > '2023-01-01'
GROUP BY u.id, u.email, u.registration_date
HAVING COUNT(o.id) > 5  -- Фильтрация по результату агрегации
ORDER BY total_spent DESC;
  • Оптимизация: Использование EXPLAIN для анализа плана выполнения запроса, создание индексов для ускорения проверок в больших базах.