Приведи пример тестирования операций CRUD в базе данных

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

Ответ

Пример комплексного тестирования операций CRUD (Create, Read, Update, Delete) в PostgreSQL.

Контекст: Тестирование сервиса, работающего с таблицей users.

-- 1. CREATE (Создание) - Проверка вставки данных
INSERT INTO users (id, name, email) VALUES (1000, 'Иван Иванов', 'ivan@test.com');
-- Проверка: Запись должна появиться в БД
SELECT * FROM users WHERE id = 1000;

-- 2. READ (Чтение) - Проверка выборки данных
-- Проверка точного соответствия
SELECT name, email FROM users WHERE id = 1000;
-- Ожидаемый результат: одна запись с полями 'Иван Иванов', 'ivan@test.com'

-- 3. UPDATE (Обновление) - Проверка модификации данных
UPDATE users SET name = 'Иван Петров', email = 'ivan.p@test.com' WHERE id = 1000;
-- Проверка изменений
SELECT name FROM users WHERE id = 1000;
-- Ожидаемый результат: 'Иван Петров'

-- 4. DELETE (Удаление) - Проверка удаления данных
DELETE FROM users WHERE id = 1000;
-- Проверка, что запись удалена
SELECT COUNT(*) FROM users WHERE id = 1000;
-- Ожидаемый результат: 0

Ключевые аспекты тестирования БД, которые проверяет этот пример:

  • Целостность транзакций (ACID): Операции должны выполняться атомарно. В реальном тесте их стоит обернуть в транзакцию с последующим откатом (ROLLBACK).
  • Корректность данных: Проверяется, что данные сохраняются, читаются и изменяются точно.
  • Работа с ограничениями: Неявно проверяются PRIMARY KEY и условия WHERE.

Практический совет: Для автоматизации таких тестов используйте инструменты вроде pytest с фикстурами, которые создают и очищают тестовые данные перед/после каждого теста.