↓Lewati ke konten utama
  1. Pengujian & Kualitas/

Testing Pyramid: Unit Test, Integration Test, dan End-to-End Test

·334 kata·2 menit·
Testing Kualitas Perangkat Lunak Unit Test Integration Test
Ifarra
Penulis
Ifarra
Hey gunner in the rain
Daftar isi

Test paling berguna saat menjawab pertanyaan yang jelas: apakah perilaku ini bekerja, dan jika rusak, apakah test membantu menemukan penyebabnya? Testing pyramid membantu menyeimbangkan feedback. Ini panduan tentang cakupan test, bukan aturan bahwa setiap proyek harus memakai persentase yang sama.

Testing pyramid: banyak unit test yang fokus, lebih sedikit integration test, dan sedikit end-to-end test
Cakupan test makin luas dan makin lambat di bagian atas pyramid.

Unit test: periksa satu keputusan dengan cepat
#

Unit test memeriksa bagian kecil dari logika tanpa menjalankan sistem lain yang tidak diperlukan. Contohnya kalkulator harga, parser, atau konversi tanggal. Test sebaiknya cepat dan menunjukkan lokasi penyebab saat gagal.

Unit test yang berguna mencakup nilai umum, nilai batas, dan input yang tidak valid. Test seperti ini tidak perlu memakai database sungguhan atau koneksi jaringan.

Integration test: periksa komponen yang bekerja bersama
#

Integration test memeriksa batas antara komponen. Contohnya repository yang menyimpan data ke database test, route API yang memvalidasi request, atau komponen UI yang berkoordinasi dengan state form. Test ini menemukan masalah konfigurasi dan koneksi antarkomponen yang tidak terlihat dalam unit test.

Gunakan kolaborator nyata jika murah dan hasilnya konsisten, seperti database sementara. Ganti layanan eksternal yang lambat atau tidak dapat diprediksi pada batas integrasinya.

End-to-end test: periksa alur pengguna
#

End-to-end test menjalankan aplikasi melalui browser atau API publik, misalnya membuat akun lalu melihat halaman sambutan. Cakupannya luas dan memberi keyakinan bahwa bagian penting bekerja bersama, tetapi prosesnya lebih lambat dan dapat terganggu setup atau timing.

Batasi test ini pada alur bernilai tinggi. Tidak perlu mengulang setiap kasus batas unit test lewat browser.

Menjaga suite tetap seimbang
#

Sebagian besar proyek terbantu oleh banyak test cepat yang fokus, sekelompok integration test yang lebih kecil, dan beberapa end-to-end test. Jika test sering gagal secara acak, periksa apakah test itu melewati terlalu banyak batas sistem. Test perhitungan tidak perlu browser; test alur pembelian penting sebaiknya tidak meniru semua komponen yang justru perlu diperiksa.

Pilih tingkat test berdasarkan pertanyaannya. Mulai dari perilaku yang bisa diamati, lalu gunakan cakupan tersempit yang cukup untuk membuktikannya. Tambahkan test yang lebih luas saat kegagalan lintas komponen akan berdampak besar.

Terkait

Dasar pytest: Test, Fixture, dan Assertion yang Jelas
·293 kata·2 menit
Python pytest Testing Unit Test
Buat fungsi test yang mudah ditemukan, susun setup dengan fixture, dan tulis assertion yang membantu memahami kegagalan.