Как вы применяете SQL-запросы SELECT в тестировании?

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

Ответ

В тестировании SQL-запросы SELECT используются для верификации данных и подготовки/очистки тестового окружения.

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

  1. Проверка корректности операций: После тестового действия (например, создания пользователя через UI/API) выполняется запрос к БД, чтобы убедиться, что данные записаны правильно.
    SELECT * FROM users WHERE email = 'test@example.com';
  2. Извлечение тестовых данных: Получение ID или других параметров для использования в последующих запросах.
    SELECT id FROM products WHERE stock > 0 LIMIT 1;
  3. Проверка сложной бизнес-логики: Использование JOIN, агрегатных функций и подзапросов для проверки корректности отчетов или сводных данных.
    SELECT u.name, COUNT(o.id) as order_count
    FROM users u
    LEFT JOIN orders o ON u.id = o.user_id
    WHERE u.created_at > '2024-01-01'
    GROUP BY u.id;
  4. Анализ производительности: Проверка выполнения запросов с помощью EXPLAIN или EXPLAIN ANALYZE для выявления проблем с индексами.

Ключевые моменты при тестировании с SQL:

  • Изоляция: Использование транзакций с последующим ROLLBACK для неизменяющего тестирования.
  • Чистота данных: Обеспечение предсказуемого состояния БД перед тестом (фикстуры).
  • Безопасность: Никогда не использовать SELECT * в продакшн-коде, а в тестах — с осторожностью, явно указывая нужные поля.