22 правила тестування, які ми додали в AGENTS(.md)
Більшість dbt-проєктів провалюються з дуже простої причини — ніхто не визначив чіткі правила тестування.
Якщо у вашому проєкті немає задокументованих стандартів тестування, у вас немає надійності даних.
Ми зафіксували такі правила в AGENTS(.md), щоб і люди, і AI-агенти працювали за однаковими стандартами.
👇
1. Усі моделі повинні мати тест первинного ключа (not_null + unique).
2. Якщо у моделі немає природного первинного ключа — створюємо surrogate key через dbt_utils.generate_surrogate_key і тестуємо його.
3. Staging-моделі тестуємо максимально ретельно, бо вони є фундаментом для всього проєкту.
4. Якщо колонка не змінює значення між шарами (staging → intermediate → mart), тестуємо її в staging і не дублюємо тести далі.
5. Mart-моделі завжди повинні мати тест первинного ключа. Якщо його немає — модель не готова до продакшну.
6. У marts можна повторно тестувати критичні бізнес-поля. Краще перестрахуватися.
7. Колонки, які ніколи не повинні бути NULL, повинні мати тест not_null. Upstream-джерела можуть змінити свої обмеження будь-якої миті.
8. Колонки, які повинні бути унікальними, мають мати тест unique.
9. Для boolean колонок додаємо accepted_values з TRUE і FALSE, щоб уникнути значень 0/1 або "TRUE"/"FALSE".
10. Якщо boolean ніколи не може бути NULL, додаємо також not_null.
11. Для категоріальних значень (status, state, category) завжди додаємо accepted_values.
12. Якщо категорія створена через CASE WHEN, також додаємо accepted_values, щоб уникнути неочікуваних змін у логіці.
13. Колонки з CASE WHEN зазвичай повинні мати not_null (якщо тільки NULL не очікується).
14. Для складних CASE-виразів варто писати unit-тести, щоб зміни не ламали логіку.
15. Relationship-тести можуть бути дорогими (часто роблять full scan). Використовуйте їх обережно, бажано на staging.
16. Для великих таблиць використовуйте WHERE-обмеження, щоб зменшити час виконання тестів.
17. Custom (singular) тести — для специфічної бізнес-логіки. Але спочатку перевірnt готові dbt пакети, там є багато корисного.
18. dbt_utils.expression_is_true — для перевірки SQL-виразів, наприклад: net_amount + tax_amount = gross_amount.
19. dbt_utils.not_empty_string — для перевірки, що рядок не порожній.
20. dbt_utils.accepted_range — для перевірки числового діапазону.
21. dbt_utils.recency — для перевірки актуальності даних.
22. dbt_utils.not_null_proportion — якщо допускається невеликий відсоток NULL.

LinkedIn
🔥 dbt data testing rules we added to AGENTS.md 🤖
Most dbt projects fail because nobody defined clear testing rules. If your project…
🔥 dbt data testing rules we added to AGENTS.md 🤖
Most dbt projects fail because nobody defined clear testing rules. If your project doesn’t have written testing standards, you don’t have data reliability.
We documented the following rules in AGENTS.md so…
8
5March 5, 2026 801 4 21