SQL помогает в тестировании интеграций, потому что позволяет проверять корректность передачи и сохранения данных между системами. С его помощью QA может:
Пример.
После импорта заказов из CRM в биллинг:
SELECT COUNT(*) FROM crm_orders; SELECT COUNT(*) FROM billing_orders;
-> количество должно совпадать.
Также можно сверить конкретные поля:
SELECT id, amount FROM crm_orders EXCEPT SELECT id, amount FROM billing_orders;
-> если вернуло строки — интеграция работает с ошибками.
Интеграции связывают разные системы (CRM, биллинг, API, шлюзы и т.д.), и SQL помогает QA:
проверить корректность передачи данных,
подтвердить преобразование полей,
обнаружить несоответствия между источником и приёмником,
контролировать выполнение ETL-процессов (Extract–Transform–Load).
SQL — это основной инструмент, который позволяет “заглянуть под капот” интеграции.
Задача: проверка передачи данных.
Как помогает SQL: сравнить записи между системами.
Пример: кол-во заказов в CRM и в биллинге совпадает.
Задача: проверка преобразований.
Как помогает SQL: проверить, что поля преобразованы верно.
Пример: сумма округлена до 2 знаков.
Задача: проверка дубликатов.
Как помогает SQL: убедиться, что данные не задублировались.
Пример: GROUP BY ... HAVING COUNT(*) > 1
(см. подробнее отдельно)
Проверка, что данные дошли
SELECT COUNT(*) FROM crm_clients; SELECT COUNT(*) FROM billing_clients;
-> Если разница > 0, значит интеграция потеряла данные.
Проверка соответствия ключевых полей
SELECT c.id, c.name, b.name FROM crm_clients c LEFT JOIN billing_clients b ON c.id = b.id WHERE b.id IS NULL;
-> Покажет клиентов, которых нет в биллинге.
Проверка правильности преобразования
Например, поле total_amount должно пересчитываться в валюте при импорте:
SELECT id, crm_amount, billing_amount, ROUND(crm_amount * 90, 2) AS expected FROM crm_orders JOIN billing_orders USING (id) WHERE billing_amount <> ROUND(crm_amount * 90, 2);
-> Найдёт несоответствия после конвертации.
Проверка связей между таблицами (FK integrity)
SELECT order_id FROM billing_payments WHERE order_id NOT IN (SELECT id FROM billing_orders);
-> Есть платежи, но нет соответствующих заказов -> ошибка синхронизации.
Если данные выгружаются пакетами:
SQL помогает убедиться, что объём данных совпадает,
все обязательные поля загружены,
и нет дубликатов.
Пример:
SELECT source_id, COUNT(*) FROM dwh_transactions GROUP BY source_id HAVING COUNT(*) <> ( SELECT COUNT(*) FROM staging_transactions WHERE source_id = dwh_transactions.source_id );
-> показывает, где при загрузке “потерялись” строки.
Проверка, что невалидные данные не попали в целевую систему:
SELECT * FROM billing_orders WHERE amount < 0;
Проверка, что отклонённые транзакции не попали в отчёт:
SELECT * FROM report WHERE status = 'rejected';
(результат должен быть пустой).
SQL-запросы можно включить в автотесты (например, через Pytest + psycopg2, Java + JDBC, Postman + SQL scripts).
Пример на Python:
def test_data_integrity(db_source, db_target):
source_count = db_source.execute("SELECT COUNT(*) FROM crm_orders")[0]
target_count = db_target.execute("SELECT COUNT(*) FROM billing_orders")[0]
assert source_count == target_count, "Mismatch in orders count"
-> тест падает, если данные не совпадают.
Сценарий: интеграция между CRM и биллингом (данные о клиентах и платежах).
Задачи QA:
Проверить, что после импорта клиент из CRM появился в биллинге;
Проверить корректность расчёта суммы;
Проверить отсутствие задвоений.
SQL для проверки:
SELECT crm.id, crm.email, bill.email, bill.amount FROM crm_clients crm LEFT JOIN billing_clients bill ON crm.id = bill.id WHERE bill.email IS NULL OR crm.amount <> bill.amount;
Если вернулись строки — интеграция работает с ошибками.
SQL — ключевой инструмент тестировщика при проверке интеграций.
Он помогает:
сравнивать данные между системами,
проверять корректность преобразований,
выявлять потери, дубли и нарушения связей,
контролировать целостность после обмена.
Благодаря SQL QA может точно подтвердить, что интеграция не искажает и не теряет данные.
Чтобы пожаловаться или сообщить об ошибке, войдите в аккаунт или зарегистрируйтесь.