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

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

Ответ

Активно использую запросы к базам данных для валидации состояния системы, проверки целостности данных и создания тестового окружения.

Опыт с SQL (PostgreSQL, MySQL):

  • Верификация данных: Сравнение данных в UI/API с фактическим состоянием в БД.
    -- Проверка, что заказ пользователя сохранился с правильным статусом
    SELECT id, status, total_amount 
    FROM orders 
    WHERE user_id = 42 
    AND status = 'paid';
  • Проверка связей: Использование JOIN для проверки корректности отношений между таблицами.
  • Агрегация: COUNT, SUM для проверки бизнес-логики (например, общего количества товаров на складе).
  • Подготовка данных: INSERT для создания тестовых данных и DELETE/TRUNCATE для очистки после тестов в рамках транзакций (BEGIN, ROLLBACK).
  • Анализ производительности: Использование EXPLAIN ANALYZE для оптимизации медленных запросов.

Опыт с NoSQL (MongoDB):

  • Основные запросы: Использовал find(), updateOne(), deleteMany().
  • Агрегации: Строил пайплайны для сложных выборок и проверок.
    // Проверка количества активных пользователей в MongoDB
    db.users.aggregate([
    { $match: { status: "active" } },
    { $count: "active_users_count" }
    ]);