Какой у вас опыт тестирования, связанного с базами данных?

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

Ответ

Имею опыт тестирования приложений, взаимодействующих с реляционными (SQL) и нереляционными (NoSQL) базами данных. Основные активности:

1. Проверка целостности и корректности данных (Data Validation Testing):

  • Валидация CRUD-операций: Убедиться, что создание, чтение, обновление и удаление записей через API/UI корректно отражаются в БД.
  • Проверка связей и консистенности: Внешние ключи, каскадные удаления.
  • Поиск аномалий: Дубликаты, NULL в обязательных полях, неверные форматы.

Пример SQL-запроса для поиска дубликатов email:

SELECT email, COUNT(*) as duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

2. Проверка производительности запросов: Анализ выполнения медленных запросов с помощью EXPLAIN (в PostgreSQL) или EXPLAIN ANALYZE.

3. Тестирование миграций и скриптов: Проверка корректности применения ALTER TABLE, обновления данных, отката (rollback) при ошибке.

4. Работа с разными типами БД:

  • SQL (PostgreSQL, MySQL): Сложные JOIN-запросы, транзакции, хранимые процедуры.
  • NoSQL (MongoDB): Проверка структуры документов, работы индексов, агрегационных пайплайнов.

Используемые инструменты:

  • GUI-клиенты: DBeaver, pgAdmin, MySQL Workbench, MongoDB Compass.
  • Командная строка: psql, mysql.
  • Языки и фреймворки: Написание скриптов на Python (с библиотеками psycopg2, pymysql, pymongo) для автоматизации проверок данных. Использование ORM, таких как SQLAlchemy, для взаимодействия с БД в автотестах.

Такой подход позволяет находить дефекты на уровне данных, которые не всегда видны в интерфейсе.