Back to IF4054 Pengoperasian Sistem Perangkat Lunak

The Automated Testing Pyramid

Questions/Cues

  • Apa tiga lapis dalam testing pyramid dan bagaimana proporsinya?
  • Apa fungsi unit, integration, dan contract test?
  • Apa itu ice cream cone dan mengapa berbahaya?

Reference Points

  • IF4054 CI Automation & Shift-Left (Slides 15-19)

Piramid Testing

flowchart TB
    C["Contract tests<br/>sedikit, validasi kesepakatan API"]
    I["Integration tests<br/>lebih sedikit, menit, dependency nyata"]
    U["Unit tests<br/>banyak, detik, terisolasi"]
    C --- I --- U
LapisJumlahKecepatanFungsi
UnitBanyakDetikFungsi/kelas terisolasi
IntegrationLebih sedikitMenitDatabase dan layanan nyata
ContractSedikitCepat per sisiKesepakatan API antar-layanan

Unit Tests: Fondasi

Menguji satu fungsi, method, atau kelas sepenuhnya terisolasi (tanpa network, database, filesystem). Dependency di-mock atau di-stub agar tes hanya menguji logika yang Anda tulis. Karena jalan dalam detik, ratusan hingga ribuan tes dieksekusi di setiap commit, dan seharusnya menjadi mayoritas jumlah tes.

Integration Tests: Apakah Bagian-Bagiannya Cocok?

Memverifikasi kode bekerja terhadap dependency nyata atau realistis (test database, message queue). Menangkap kelas bug yang tidak bisa ditangkap unit test: SQL salah, ketidakcocokan serialisasi, kesalahan wiring. Lebih lambat dan sedikit; biasanya berjalan terhadap dependency container ephemeral di CI. Cakupannya sempit: uji titik integrasinya, bukan mengulang logika bisnis.

Contract Tests: Apakah Layanan Saling Sepakat?

Memverifikasi bahwa ekspektasi consumer terhadap API provider sama dengan yang benar-benar diberikan provider. Memungkinkan dua tim mengembangkan layanan secara mandiri tanpa environment end-to-end penuh. Biasanya memakai pact atau skema bersama yang divalidasi kedua sisi pada pipeline masing-masing.

Ketika Piramid Terbalik

Ice Cream ConeHealthy Pyramid
Berat di tes E2E/manual yang lambat dan rapuhDasar luas tes unit cepat dan terisolasi
Sedikit atau tanpa unit testLapisan sedang integration test
Pipeline berjam-jam, kegagalan sulit dilokalisasiLapisan tipis contract/E2E
Umum pada tim yang menempelkan testing belakanganFeedback cepat, kegagalan mudah didiagnosis

Summary

Testing pyramid menempatkan banyak unit test (cepat, terisolasi) di dasar, integration test lebih sedikit (dependency nyata) di tengah, dan contract test tipis di atas untuk menjaga kesepakatan API antar-layanan. Pola terbalik (ice cream cone) yang bertumpu pada E2E/manual membuat pipeline lambat dan kegagalan sulit dilacak; pyramid yang sehat memberi feedback cepat dan diagnosis mudah.