Testing Your Apps
Pengujian memverifikasi perilaku aplikasi pada level berbeda sebelum perubahan sampai ke pengguna.
Unit menguji fungsi kecil secara terisolasi. Integrasi menguji sambungan modul, database, dan API. Sistem menguji aplikasi utuh.
Acceptance menguji kebutuhan bisnis dari sudut pengguna pada environment mirip produksi. Lihat jenis pengujian Atlassian.
Level pengujian
Unit memanggil kode langsung dan menilai output tanpa UI, service, atau database. Test ini murah, cepat, dan cocok dijalankan setiap perubahan.
Integrasi menguji pertukaran data antar komponen, misalnya model dengan database atau method dengan API. Lihat porsi integration pada piramida.
System test menilai aplikasi lengkap yang terintegrasi. Acceptance test menilai kesiapan rilis terhadap kriteria bisnis.
Batas antar level tidak selalu tegas. Satu test tergolong integrasi bila menyentuh modul lain, sistem eksternal, network, atau I/O file dan database.
Piramida pengujian
Piramida dari buku Mike Cohn menumpuk banyak unit test di dasar, sedikit integration di tengah, dan sedikit E2E di puncak.
Acuan umum adalah 70 persen unit, 20 persen integrasi, dan 10 persen E2E. Rasio tepat bergantung pada konteks proyek. Lihat strategi piramida CircleCI.
E2E meniru klik, ketik, dan alur pengguna pada browser atau perangkat nyata. Keyakinannya tertinggi, tetapi paling lambat dan paling flaky.
Cadangkan E2E untuk alur vital seperti login, checkout, dan pembayaran. Uji sisanya dengan test yang lebih cepat.
Test-driven development
TDD menulis satu test gagal, menulis kode minimal sampai hijau, lalu refactor. Siklus ini dikenal sebagai Red Green Refactor.
Proses selalu berangkat dari daftar test eksplisit. Urutan test dipilih agar desain penting lebih dulu terbentuk.
Berpikir tentang test lebih dulu memaksa interface dirancang sebelum implementasi. Lihat bliki TDD Fowler.
Langkah refactor wajib dijaga. Tanpa itu, kode hanya menjadi tumpukan fragmen yang kebetulan lolos test.
Behavior-driven development
BDD menutup jarak bisnis dan teknis lewat kolaborasi lintas peran, iterasi kecil, dan contoh konkret perilaku sistem.
Contoh yang disepakati menjadi dokumentasi hidup yang dicek otomatis terhadap perilaku aplikasi. Lihat definisi BDD Cucumber.
BDD tidak menggantikan proses agile yang ada. Ia berperan sebagai plugin yang memperkuat delivery bertahap.
Gunakan BDD untuk fitur lintas tim dengan aturan bisnis yang mudah disalahpahami. Lihat siklus TDD IBM sebagai pembanding ritme kerja.
Pengujian di CI
Pengujian CI mengotomatisasi build dan pemeriksaan pada setiap perubahan. Setiap tahap pipeline menjawab aman tidaknya perubahan untuk lanjut.
CI memvalidasi merge ke repo bersama. Delivery menjaga kode teruji selalu siap dirilis secara aman dan terprediksi. Lihat panduan CI Harness.
Strategi berlapis memberi keyakinan bertahap: unit, integrasi, regresi, E2E, performa, dan keamanan sebelum promosi ke produksi.
Test pipeline harus cepat, deterministik, dan terisolasi. Test yang berbagi state global, port, atau database menghasilkan gagal acak.
Memilih strategi
Mulai dari piramida untuk proporsi, TDD untuk urutan penulisan unit, BDD untuk kesepakatan contoh, dan CI untuk irama eksekusi.
Jalankan unit pada setiap commit, integrasi setelah merge besar, dan E2E pada milestone rilis. Proporsi dan frekuensi menyesuaikan biaya tiap lapisan.
Coverage menunjukkan kode yang tereksekusi, bukan kualitas assertion. Angka tinggi tetap dapat menyembunyikan test yang lemah.
Batasan
Halaman ASTQB tentang test level tidak dapat diambil karena consent wall, sehingga definisi formal ISTQB belum terverifikasi di sini.
Klaim produktivitas TDD dan BDD pada sumber ini bersifat laporan praktisi dan vendor, bukan uji terkontrol. Generalisasi lintas konteks perlu bukti tambahan.
Terkait
- Small unit tests give fast feedback
- Integration tests catch contract mismatch
- E2E tests stay small and rare
- TDD starts from a failing test
- BDD agrees on examples before code
- CI gates every change early
- Jest
- Vitest
- Cypress
- Playwright
- Pengujian di React Native
- Deployment
- Linters dan Formatters
Sumber
- Jenis pengujian perangkat lunak: Atlassian, level unit, integrasi, sistem, dan acceptance.
- Piramida pengujian Semaphore: Semaphore, asal Cohn, lapisan, dan alternatif bentuk.
- Piramida pengujian CircleCI: CircleCI, rasio 70/20/10 dan irama tiap lapisan.
- Piramida praktis Fowler: Fowler, portofolio responsif dan maintainable.
- Bliki TDD Fowler: Fowler, Red Green Refactor dan atribusi Kent Beck.
- TDD menurut IBM: IBM, alur kerja dan efek biaya debugging.
- BDD menurut Cucumber: Cucumber, kolaborasi, iterasi, dan dokumentasi tereksekusi.
- Pengujian CI Harness: Harness, gerbang kualitas pipeline dan strategi berlapis.