Dari menguji hubungan antar komponen, seluruh sistem, hingga penerimaan oleh pengguna akhir.
Integration Testing adalah pengujian yang menguji interaksi antar komponen/modul yang sudah diuji secara individual (unit test). Tujuannya memastikan komponen-komponen tersebut bisa bekerja sama dengan benar.
Unit testing = tes setiap pemain bola satu per satu (dribble, tendangan). Integration testing = tes apakah pemain-pemain ini bisa kerja sama (passing, strategi). Masing-masing pemain mungkin jago sendiri, tapi belum tentu bisa kompak.
Semua komponen digabung sekaligus dan diuji bersama-sama.
Komponen digabung dan diuji satu per satu secara bertahap. Ada 2 sub-pendekatan:
Pengujian dimulai dari modul paling atas (level tertinggi), lalu turun ke modul di bawahnya.
Modul bawah yang belum siap digantikan oleh Stub (komponen tiruan sederhana).
Urutan: Main Module → Sub-Module → Detail Module
Pengujian dimulai dari modul paling bawah (level terendah), lalu naik ke atas.
Modul atas yang belum siap digantikan oleh Driver (komponen yang memanggil modul bawah).
Urutan: Detail Module → Sub-Module → Main Module
Test Double adalah objek pengganti yang digunakan saat testing untuk menggantikan komponen asli yang belum siap atau sulit diakses. Ada 4 jenis:
| Jenis | Penjelasan | Contoh |
|---|---|---|
| Dummy | Objek yang dikirim tapi tidak benar-benar digunakan. Hanya sebagai pengisi parameter. | Mengirim objek kosong ke fungsi yang butuh parameter tapi isinya tidak penting untuk tes ini |
| Fake | Implementasi nyata tapi disederhanakan. Berfungsi, tapi tidak untuk production. | In-memory database (database palsu yang hidup di memori, bukan database sungguhan) |
| Stub | Mengembalikan data statis/hardcoded yang sudah ditentukan sebelumnya. Untuk state verification. | Fungsi yang selalu return "LUNAS" tanpa cek apapun |
| Mock | Objek dinamis yang bisa memverifikasi apakah method dipanggil dengan benar (parameter, frekuensi). Untuk behavior verification. | Memverifikasi bahwa method send_email() dipanggil tepat 1 kali dengan parameter yang benar |
Ini yang paling sering keluar di soal dan paling sering membingungkan:
| Aspek | Stub | Mock |
|---|---|---|
| Sifat | Statis (hardcoded) | Dinamis (berdasarkan ekspektasi) |
| Apa yang diverifikasi? | State — "Apakah HASIL-nya benar?" | Behavior — "Apakah METHOD-nya dipanggil dengan benar?" |
| Mengembalikan | Nilai tetap yang sudah ditentukan | Bisa bervariasi + mencatat pemanggilan |
| Contoh di kode | return "LUNAS" (selalu) | verify(mock).sendEmail("user@mail.com") |
verify() atau assert_called() → itu MockSystem Testing adalah pengujian terhadap keseluruhan sistem yang sudah terintegrasi. Sistem diuji sebagai satu kesatuan yang utuh.
| Jenis | Menguji Apa? | Contoh |
|---|---|---|
| Functional Testing | Apakah fitur-fitur berfungsi sesuai requirement | Login, checkout, search berjalan benar |
| Performance Testing | Kecepatan dan kemampuan sistem | Response time < 2 detik |
| Security Testing | Keamanan sistem dari ancaman | SQL Injection, XSS tidak bisa dilakukan |
| Compatibility Testing | Kompatibilitas dengan berbagai platform | Berjalan di Chrome, Firefox, Safari |
| Usability Testing | Kemudahan penggunaan | User bisa menyelesaikan task tanpa kebingungan |
| Recovery Testing | Kemampuan sistem pulih dari kegagalan | Sistem bisa restart setelah crash |
Acceptance Testing adalah pengujian terakhir sebelum software dianggap siap digunakan. Tujuannya memastikan software memenuhi kebutuhan bisnis dan diterima oleh pengguna/stakeholder.
Ada 2 jenis utama:
Pengujian oleh pengguna akhir (end user) untuk memastikan software sesuai kebutuhan mereka.
Skenario: Seorang mahasiswa mencoba fitur pengisian IRS (Isian Rencana Studi) di SIAKAD — menambah mata kuliah, menyimpan, dan mencetak KRS. Jika semua berjalan lancar dan sesuai kebutuhan, UAT berhasil.
Pengujian oleh tim operasional/IT untuk memastikan software siap di-operasikan di production.
OAT menguji aspek operasional seperti:
Skenario: Admin IT melakukan restart server aplikasi, melakukan backup database, lalu memulihkan data dari backup tersebut. Jika semua berhasil, OAT lolos.
Integration testing juga bisa digunakan untuk menguji keamanan di level interaksi antar komponen. Contoh paling umum:
Menguji apakah form login bisa menangkal SQL Injection saat frontend mengirim data ke backend.
Perhatikan kode berikut:
Kode di atas adalah contoh dari...
A. Mock
B. Fake
C. Stub
D. Driver
Jawaban: C (Stub) — Karena selalu mengembalikan nilai statis "LUNAS" tanpa logika apapun.
Seorang mahasiswa mencoba menambahkan mata kuliah di sistem IRS, menyimpan, dan mencetak KRS. Pengujian ini termasuk jenis apa?
A. Unit Testing
B. OAT (Operational Acceptance Testing)
C. UAT (User Acceptance Testing)
D. Regression Testing
Jawaban: C (UAT) — Karena dilakukan oleh pengguna akhir (mahasiswa) untuk memvalidasi kebutuhan mereka.
Admin IT melakukan restart server dan memulihkan database dari backup. Ini termasuk pengujian apa?
A. UAT
B. Integration Testing
C. Unit Testing
D. OAT (Operational Acceptance Testing)
Jawaban: D (OAT) — Karena dilakukan oleh tim operasional untuk memastikan kesiapan sistem di production.
Kerjakan 15 soal berikut, lalu klik Submit untuk melihat hasilnya.