Data Testing

Menengah

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 TestContoh KonkretTujuan
Not NullKolom user_id nggak boleh NULLDeteksi missing values kritis
Uniqueorder_id harus unik per barisDeteksi data duplikat
Accepted ValuesStatus hanya boleh: "active", "inactive", "pending"Validasi nilai kategorikal
Referential Integritycustomer_id harus ada di tabel customersCek foreign key konsistensi
Range CheckRating harus antara 1 sampai 5Validasi domain nilai
Freshness CheckData harus diperbarui dalam 24 jam terakhirMonitor kebaruan data
Volume CheckJumlah baris nggak boleh kurang dari 1000Deteksi pipeline failure atau kehilangan data
Distribution CheckRata-rata transaksi nggak boleh turun lebih dari 50% dalam 1 hariDeteksi 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.

Lanjut Latihan

Udah paham Data Testing? Lanjut latihan SQL dan Excel yuk!

Latihan interaktif, langsung di browser.

Mulai Latihan →