Ответ
Веб-сервис (бэкенд) обычно выступает посредником между клиентом и БД. Проверить факт записи можно несколькими способами.
Стратегии проверки:
-
Прямая проверка в БД:
- Выполнить запрос к целевой таблице до и после вызова сервиса.
-- До вызова SELECT COUNT(*) FROM users WHERE email = 'test@example.com'; -- После успешного POST /users SELECT * FROM users WHERE email = 'test@example.com';
- Выполнить запрос к целевой таблице до и после вызова сервиса.
-
Анализ логов:
- Логи приложения: Искать записи об успешном выполнении SQL-операторов
INSERT/UPDATE. - Логи базы данных: Включить general log или slow query log (для MySQL) для отслеживания всех входящих запросов.
- Логи приложения: Искать записи об успешном выполнении SQL-операторов
-
Инструменты мониторинга:
- Использовать APM-системы (например, Datadog, New Relic), которые трассируют запросы от API до SQL.
- Настроить алерты на увеличение количества операций записи (
Writes/sec).
-
Тестовый сценарий (на примере Python с
requestsиpytest):import requests import psycopg2 # для прямого подключения к БД для проверки def test_user_creation_writes_to_db(): # 1. Исходное состояние initial_count = get_user_count_from_db() # 2. Вызов сервиса payload = {"name": "Alice", "email": "alice@example.com"} response = requests.post("https://api.example.com/users", json=payload) assert response.status_code == 201 # 3. Проверка результата в БД final_count = get_user_count_from_db() assert final_count == initial_count + 1 new_user = get_user_from_db("alice@example.com") assert new_user["name"] == "Alice"
Важно: Если сервис реализует CQRS или использует кэширование, запись в БД и чтение из неё могут быть разнесены во времени. Также существуют сервисы, предназначенные только для чтения (read-only), которые не производят запись.