Kenapa Testing? Jenis Tes & Tes Pertamamu

Memahami manfaat testing, piramida tes (unit, integrasi, end-to-end), dan menulis tes pertama dengan node:test dan assert.

Part 1 dari 20 ± 55 menit Gratis

Pernahkah kamu "memperbaiki satu hal, merusak hal lain"?

Kamu mengubah satu fungsi untuk memperbaiki bug, lalu beberapa hari kemudian pengguna melapor bahwa fitur lain — yang tidak kamu sentuh — rusak. Ini terjadi di semua proyek yang membesar. Testing otomatis adalah jaring pengaman: kode kecil yang memeriksa kode utama setiap kali kamu menjalankannya. Perubahan yang merusak sesuatu langsung ketahuan, dalam hitungan detik, sebelum sampai ke pengguna.

Manfaat nyata

ManfaatPenjelasan
Keberanian mengubah kodeRefactor tanpa takut: tes yang masih hijau berarti perilaku terjaga.
Dokumentasi yang hidupTes menunjukkan cara memakai fungsi dan perilaku yang diharapkan — dan tidak pernah kedaluwarsa karena selalu dijalankan.
Bug ketahuan lebih awalMemperbaiki bug di laptop jauh lebih murah daripada di produksi.
Desain lebih baikKode yang sulit dites biasanya terlalu saling terikat; menulis tes mendorong desain yang rapi.
Bukti saat kolaborasiTim bisa menggabungkan kode dengan percaya diri; CI menolak perubahan yang merusak.

Piramida tes

          /\          E2E (end-to-end)
         /  \         Sedikit, lambat, mahal: seluruh sistem seperti pengguna sungguhan
        /----\
       /      \       Integrasi
      /        \      Beberapa komponen bersama: API + database, API + layanan lain
     /----------\
    /            \    Unit
   /______________\   Banyak, cepat, murah: satu fungsi/kelas diuji terpisah
JenisYang diujiKecepatanContoh backend
UnitSatu fungsi/kelas, terisolasiMilidetikhitungOngkir(berat, jarak)
IntegrasiBeberapa bagian bekerja bersamaDetikEndpoint POST /pesanan menyimpan ke database
End-to-endAlur lengkap lewat antarmukaPuluhan detikDaftar → login → beli → bayar

Aturan praktis: banyak tes unit, cukup tes integrasi, sedikit tes E2E. Tes yang lambat jarang dijalankan; tes yang tidak dijalankan tidak berguna.

Alat yang kita pakai: node:test dan assert

Node.js punya pelari tes bawaan (node:test) dan modul assert untuk memeriksa hasil. Tanpa instalasi apa pun, kamu bisa menulis:

const test = require('node:test');
const assert = require('node:assert');

function tambah(a, b) {
  return a + b;
}

test('tambah menjumlahkan dua angka', () => {
  assert.strictEqual(tambah(2, 3), 5);
});

Sebuah tes terdiri dari: nama yang menjelaskan perilaku, dan fungsi yang berisi satu atau lebih assertion. Jika semua assertion lolos, tes lulus (✔). Jika salah satu gagal, ia melempar error dan tes gagal (✖) dengan pesan yang menunjukkan nilai yang diharapkan dan yang diterima.

Di dunia nyata kamu akan sering melihat Jest atau Vitest (describe/it/expect). Konsepnya identik; di bab 18 kita bandingkan dan bahkan membuat mini-expect sendiri.

Cara latihan di course ini

  • Beberapa berkas kode sudah disediakan (mis. kalkulator.js); kamu menulis tesnya di editor dan memuatnya dengan require('./kalkulator').
  • Saat Jalankan, tesmu dieksekusi, lalu penilai memeriksa dua hal: tesmu lulus pada kode yang benar, dan tesmu gagal pada versi kode yang sengaja dirusak ("mutan"). Inilah ukuran tes yang berkualitas: tes yang tidak pernah gagal tidak melindungi apa pun.

Kesalahan umum pemula

  • Menulis tes yang selalu lulus karena tidak ada assertion (test('x', () => { tambah(1, 2); }) tidak memeriksa apa pun).
  • Mengetes banyak hal dalam satu tes sehingga sulit mengetahui yang gagal.
  • Menguji hanya jalur yang "normal"; bug sering bersembunyi di tepi (nol, kosong, negatif).

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X