Saat membuat aplikasi, kita tidak hanya ingin memastikan setiap fitur bekerja. Kita juga ingin memastikan seluruh perjalanan pengguna berjalan lancar, mulai dari membuka aplikasi hingga menyelesaikan tugasnya. Di sinilah End-to-End (E2E) Testing berperan.
Apa Itu E2E Testing?
End-to-End (E2E) Testing adalah proses menguji aplikasi dari awal hingga akhir seolah-olah yang menggunakannya adalah pengguna sungguhan.
Contohnya pada aplikasi belanja online:
- Membuka website
- Login
- Mencari produk
- Menambahkan ke keranjang
- Checkout
- Melakukan pembayaran
- Memastikan pesanan berhasil dibuat
Jika semua langkah berhasil dilakukan, berarti alur utama aplikasi berjalan dengan baik.
Perbedaan Unit Test, Integration Test, dan E2E Test
| Jenis Testing | Apa yang Diuji? |
|---|---|
| Unit Test | Satu fungsi atau komponen kecil. |
| Integration Test | Beberapa komponen yang saling bekerja sama. |
| E2E Test | Seluruh perjalanan pengguna dari awal hingga selesai. |
Analogi Restoran
- Unit Test → Memastikan telur matang.
- Integration Test → Memastikan roti, daging, dan saus menjadi burger.
- E2E Test → Pelanggan datang, memesan makanan, membayar, menerima pesanan, lalu makan dengan nyaman.
Apa Itu Cypress?
Cypress adalah framework untuk melakukan End-to-End Testing pada aplikasi web. Framework ini menjalankan browser secara otomatis dan bertindak seperti pengguna sungguhan.
Cypress dapat melakukan berbagai aktivitas seperti:
- Membuka website
- Klik tombol
- Mengisi form
- Upload file
- Scroll halaman
- Memastikan teks tertentu muncul
Contoh Cypress
cy.visit("/login");
cy.get("#email").type("andi@gmail.com");
cy.get("#password").type("123456");
cy.contains("Login").click();
cy.contains("Dashboard");
Artinya, Cypress akan membuka halaman login, mengisi email dan password, menekan tombol Login, lalu memastikan Dashboard berhasil muncul.
Apa Itu Playwright?
Playwright juga merupakan framework End-to-End Testing yang memiliki fungsi serupa dengan Cypress. Playwright dikembangkan untuk mendukung berbagai browser modern dengan performa yang sangat cepat.
Contoh Playwright
await page.goto("/login");
await page.fill("#email", "andi@gmail.com");
await page.fill("#password", "123456");
await page.click("text=Login");
await expect(page.locator("text=Dashboard"))
.toBeVisible();
Perbedaan Cypress dan Playwright
| Cypress | Playwright |
|---|---|
| Mudah dipelajari | Lebih fleksibel |
| Debugging sangat nyaman | Performa lebih cepat |
| Komunitas besar | Popularitas terus meningkat |
| Fokus pada pengujian web | Mendukung Chromium, Firefox, dan WebKit (Safari) |
| Konfigurasi sederhana | Mendukung multi-tab dan multi-browser dengan baik |
Mengapa Banyak Developer Memilih Playwright?
- Lebih cepat dijalankan.
- Mendukung berbagai browser.
- Dapat membuka banyak tab.
- Dapat menjalankan pengujian secara paralel.
- Cocok untuk aplikasi web modern.
Contoh Penggunaan di Dunia Nyata
Misalkan sebuah aplikasi perbankan memiliki fitur transfer uang. Daripada setiap hari karyawan mengecek secara manual apakah fitur tersebut masih berfungsi, E2E Testing dapat melakukannya secara otomatis.
Robot pengujian akan:
- Login
- Memilih menu Transfer
- Mengisi nominal
- Menekan tombol Kirim
- Memastikan transfer berhasil
Jika ada perubahan kode yang menyebabkan transfer gagal, framework seperti Cypress atau Playwright akan langsung memberikan peringatan kepada developer.
Kapan Menggunakan E2E Testing?
Gunakan End-to-End Testing pada fitur-fitur yang paling penting dalam aplikasi, misalnya:
- Login
- Registrasi
- Checkout
- Pembayaran
- Upload File
- Reset Password
- Pemesanan Tiket
Karena E2E Testing menjalankan aplikasi secara penuh, prosesnya lebih lambat dibanding Unit Test sehingga biasanya hanya digunakan untuk menguji alur-alur utama aplikasi.
Kesimpulan
Bayangkan aplikasi adalah sebuah taman bermain.
- Unit Test memeriksa apakah satu ayunan berfungsi.
- Integration Test memastikan ayunan terpasang dengan benar pada rangkanya.
- E2E Test memastikan seorang anak bisa masuk, membeli tiket, bermain, dan pulang tanpa masalah.
Sementara itu, Cypress dan Playwright adalah robot yang berpura-pura menjadi pengguna. Mereka mengklik tombol, mengisi formulir, dan memastikan semua fitur aplikasi berjalan sebagaimana mestinya.
Diskusi & Komentar