Data Testing
Data Testing adalah automated tests yang memvalidasi kualitas data dalam pipeline: memastikan data tidak null, unik, sesuai format, dan masuk akal secara bisnis sebelum dipakai untuk keputusan.
Di software engineering, nggak ada yang deploy kode ke production tanpa unit tests. Di dunia data, sayangnya ini masih sering terjadi: data mengalir dari sumber ke warehouse ke dashboard tanpa ada checkpoint yang memverifikasi kualitasnya.
Data Testing adalah praktik yang mengubah itu. Kamu menulis tests yang jalan otomatis di setiap pipeline run, memastikan data yang masuk ke sistem memenuhi ekspektasi kamu sebelum sampai ke tangan user.
Jenis-jenis Data Tests
| Jenis Test | Contoh Konkret | Tujuan |
|---|---|---|
| Not Null | Kolom user_id nggak boleh NULL | Deteksi missing values kritis |
| Unique | order_id harus unik per baris | Deteksi data duplikat |
| Accepted Values | Status hanya boleh: "active", "inactive", "pending" | Validasi nilai kategorikal |
| Referential Integrity | customer_id harus ada di tabel customers | Cek foreign key konsistensi |
| Range Check | Rating harus antara 1 sampai 5 | Validasi domain nilai |
| Freshness Check | Data harus diperbarui dalam 24 jam terakhir | Monitor kebaruan data |
| Volume Check | Jumlah baris nggak boleh kurang dari 1000 | Deteksi pipeline failure atau kehilangan data |
| Distribution Check | Rata-rata transaksi nggak boleh turun lebih dari 50% dalam 1 hari | Deteksi anomali statistik |
Generic Tests vs Custom Tests
Generic Tests adalah tests standar yang berlaku umum untuk hampir semua dataset: not_null, unique, accepted_values, referential_integrity. Di dbt, ini sudah tersedia by default dan bisa langsung dipakai tanpa nulis kode dari nol.
Custom Tests adalah tests yang kamu tulis sendiri untuk logika bisnis spesifik. Contoh: "total item di setiap order_id harus match dengan subtotal di header tabel orders." Nggak ada generic test yang bisa cover ini, jadi kamu perlu nulis sendiri.
Di Mana Data Tests Dijalankan?
Data tests biasanya dijalankan di beberapa titik dalam pipeline:
Source Layer: Validasi data mentah dari sumber sebelum diproses. Kalau source sudah salah, langkah selanjutnya percuma.
Transformation Layer: Setelah transformasi, cek apakah hasilnya masuk akal secara bisnis. Ini layer yang paling banyak punya custom tests.
Serving Layer: Sebelum data di-expose ke dashboard atau tim lain, pastikan semuanya beres.
Blocking vs Non-blocking Tests
Kamu bisa pilih apakah test yang gagal akan memblokir pipeline (data nggak lanjut sampai masalah diperbaiki) atau hanya memunculkan warning (pipeline tetap jalan, tapi tim langsung dapat notif).
Pilihannya tergantung seberapa kritis datanya:
- Data kritis seperti finansial dan transaksi: failing test harus block pipeline
- Data enrichment yang opsional: warning mungkin sudah cukup
Kenapa Data Testing Itu Investasi, Bukan Overhead
Sama kayak bug di kode yang makin mahal untuk diperbaiki kalau makin lama ditemukan, masalah kualitas data yang ketahuan di dashboard eksekutif jauh lebih mahal daripada yang dicatch di pipeline. Data testing memindahkan deteksi masalah ke tempat yang paling mudah dan murah untuk diperbaiki.
Udah paham Data Testing? Lanjut latihan SQL dan Excel yuk!
Latihan interaktif, langsung di browser.