Pengujian integrasi dalam pengembangan seluler — esensi, jenis, dan cara melakukannya

Penulis: IT Sectr Diterbitkan: 2026-04-06 Waktu membaca: 8 mnt

Pengujian integrasi memeriksa kebenaran interaksi antara komponen aplikasi seluler — modul, layanan, basis data, dan API eksternal. Tidak seperti pengujian unit yang mengisolasi setiap komponen, pengujian integrasi mendeteksi kesalahan pada titik sambung: ketidakcocokan format data, kegagalan saat transmisi parameter, dan pemrosesan respons server yang tidak benar. Menurut data Martin Fowler, 2018, pengujian integrasi mencakup hingga 40% cacat kritis yang terlewatkan oleh pemeriksaan unit dan memberikan keyakinan akan stabilitas sistem sebelum rilis.

Poin utama

  • Pengujian integrasi — proses pemeriksaan interaksi antara komponen sistem: basis data, layanan jaringan, dan modul internal.
  • Big Bang — pendekatan di mana semua komponen dihubungkan dan diuji secara bersamaan, cocok untuk proyek kecil.
  • Bottom-Up — strategi di mana komponen tingkat rendah diuji terlebih dahulu, kemudian secara bertahap komponen yang lebih tinggi ditambahkan.
  • Top-Down — pendekatan yang dimulai dengan pemeriksaan antarmuka tingkat tinggi menggunakan stub untuk modul di bawahnya.
  • MockWebServer — pustaka untuk emulasi server HTTP dalam pengujian Android, memungkinkan pemeriksaan permintaan jaringan tanpa backend nyata.

Apa itu pengujian integrasi?

Pengujian integrasi — adalah tahap verifikasi perangkat lunak di mana kebenaran interaksi antara modul atau subsistem individual aplikasi dievaluasi. Sementara pengujian unit memeriksa setiap komponen secara terisolasi, pengujian integrasi menggabungkan komponen-komponen ini bersama-sama dan memeriksa bagaimana mereka bekerja dalam satu kesatuan. Skenario tipikal meliputi transfer data antara lapisan jaringan dan repositori, penulisan ke basis data melalui ORM, dan pemrosesan respons dari API pihak ketiga.

Dalam konteks pengembangan seluler, pengujian integrasi mencakup interaksi antara lapisan UI, logika bisnis, dan sumber data. Misalnya, sebuah pengujian dapat memeriksa bahwa setelah menekan tombol “Masuk”, aplikasi mengirimkan permintaan ke server, menerima token, dan menyimpannya di penyimpanan lokal. Pemeriksaan semacam itu mengonfirmasi bahwa rantai komponen berfungsi tanpa kegagalan.

Menurut laporan World Quality Report 2023, perusahaan yang secara teratur menerapkan pengujian integrasi mengurangi jumlah insiden produksi sebesar 35% dibandingkan dengan proyek yang hanya mengandalkan pengujian unit. Hal ini menjadikan pemeriksaan integrasi sebagai elemen wajib dalam strategi jaminan kualitas di pengembangan komersial.

Mengapa pengujian integrasi penting dalam aplikasi seluler

Aplikasi seluler terdiri dari banyak komponen yang saling terhubung: permintaan jaringan, basis data lokal, notifikasi push, layanan sistem, dan SDK pihak ketiga. Masing-masing komponen ini dikembangkan secara terpisah, tetapi saat runtime mereka bertukar data secara real-time. Pengujian integrasi mendeteksi cacat yang tidak dapat ditemukan saat pemeriksaan modul secara terisolasi.

Di antara masalah tipikal yang ditemukan oleh pengujian integrasi adalah ketidakcocokan tipe data antara API dan model aplikasi, kesalahan serialisasi JSON, pemrosesan batas waktu jaringan yang tidak benar, dan kegagalan saat akses paralel ke basis data melalui Room atau Core Data. Tanpa pemeriksaan integrasi, cacat semacam itu masuk ke produksi dan hanya muncul pada pengguna nyata.

Penelitian Google Testing Blog (2021) menunjukkan bahwa biaya perbaikan cacat yang ditemukan pada tahap pengujian integrasi 5 kali lebih rendah daripada setelah rilis. Ini karena pada tahap awal, pengembang memiliki konteks kesalahan yang lengkap dan dapat memperbaikinya tanpa siklus hotfix yang mendesak. Investasi waktu dalam menulis pengujian integrasi terbayar melalui pengurangan biaya pemeliharaan dan peningkatan kepercayaan pengguna.

Pendekatan pengujian integrasi

Ada tiga pendekatan utama untuk mengorganisir pengujian integrasi: Big Bang, Bottom-Up, dan Top-Down. Pemilihan strategi tergantung pada ukuran proyek, arsitektur aplikasi, dan ketersediaan komponen pada saat penulisan pengujian. Setiap pendekatan memiliki kelebihan dan keterbatasan yang penting untuk dipertimbangkan saat merencanakan cakupan pengujian.

Big Bang

Big Bang — pendekatan di mana semua komponen sistem dihubungkan secara bersamaan, setelah itu dilakukan pengujian secara keseluruhan. Metode ini sederhana dalam implementasi: tidak memerlukan penulisan stub atau emulasi modul individual. Namun, saat mendeteksi kesalahan, sulit untuk menentukan komponen mana yang menjadi sumbernya. Big Bang dibenarkan dalam proyek kecil dengan arsitektur sederhana, di mana jumlah modul tidak lebih dari lima.

Bottom-Up

Bottom-Up — strategi di mana pengujian integrasi dimulai dengan komponen tingkat rendah: basis data, lapisan jaringan, layanan sistem. Setelah memeriksa setiap tingkat, pengujian secara bertahap menghubungkan modul yang lebih tinggi — repositori, kelas Use Case, dan ViewModel. Keuntungan utama adalah deteksi dini cacat pada lapisan fundamental aplikasi, yang mengurangi risiko kesalahan berantai pada tahap pengembangan selanjutnya.

Top-Down

Top-Down — pendekatan di mana pengujian dimulai dengan komponen tingkat tinggi — layar UI dan navigasi, sementara modul tingkat rendah ditiru menggunakan stub atau mock. Ini memungkinkan pemeriksaan skenario pengguna sebelum bagian server atau basis data sepenuhnya diimplementasikan. Top-Down sangat berguna dalam pengembangan paralel bagian klien dan server, ketika backend belum siap untuk integrasi nyata.

Alat untuk pengujian integrasi

Untuk pengujian integrasi aplikasi seluler digunakan sejumlah alat khusus yang dibagi menjadi tiga kategori: pustaka untuk emulasi server, kerangka kerja untuk bekerja dengan basis data, dan alat pemeriksaan layanan sistem. Pemilihan alat tertentu tergantung pada platform — Android atau iOS — dan tumpukan teknologi proyek.

  • MockWebServer — pustaka Square untuk Android yang mengemulasi server HTTP di lingkungan pengujian. Memungkinkan pengaturan respons yang diharapkan, pemeriksaan isi dan header permintaan, simulasi kesalahan jaringan.
  • OHHTTPStubs — pustaka untuk iOS yang mencegat permintaan jaringan pada tingkat NSURLProtocol dan mengembalikan respons yang telah disiapkan sebelumnya. Mendukung penundaan dan kesalahan koneksi.
  • Room Testing — mekanisme bawaan Android untuk menguji basis data: pembuatan instance Room in-memory, pelaksanaan operasi tulis dan baca, pemeriksaan migrasi dan pemicu.
  • Core Data Testing — pendekatan untuk iOS di mana wadah Core Data in-memory dibuat, memungkinkan pengujian kueri, hubungan antar entitas, dan penyimpanan data tanpa penyimpanan permanen.

Contoh kode pengujian integrasi

Mari kita lihat contoh praktis pengujian integrasi untuk Android dan iOS. Untuk platform Android kita menggunakan MockWebServer bersama dengan JUnit, untuk iOS — XCTest dengan pustaka OHHTTPStubs. Kedua contoh memeriksa skenario pengambilan data dari API dan penyimpanannya di repositori lokal.

Android: menguji lapisan jaringan dengan MockWebServer

Pengujian ini memeriksa bahwa permintaan Retrofit ke server yang diemulasi mengembalikan JSON yang benar, dan repositori mengubah respons menjadi model domain. MockWebServer mencegat permintaan dan mengembalikan JSON yang ditentukan, setelah itu pengujian membandingkan hasil yang diharapkan dengan hasil aktual.

kotlin
class UserRepositoryTest {
    private val mockServer = MockWebServer()

    @Before
    fun setup() {
        mockServer.start()
    }

    @Test
    fun fetchUser_returnsCorrectData() {
        val json = "{ \`"id\`": 1, \`"name\`": \`"Alice\`" }"
        mockServer.enqueue(MockResponse()
            .setBody(json)
            .setResponseCode(200))

        val repository = UserRepository(
            createRetrofit(mockServer.url("/").toString()))
        val user = repository.fetchUser(1)

        assertEquals(1, user.id)
        assertEquals("Alice", user.name)
    }

    @After
    fun tearDown() {
        mockServer.shutdown()
    }
}

iOS: menguji permintaan API dengan OHHTTPStubs

Untuk iOS, pengujian serupa menggunakan OHHTTPStubs untuk mencegat permintaan URL. Pustaka ini mengganti respons server pada tingkat kerangka kerja sistem URL Loading System, memungkinkan pengujian pustaka jaringan apa pun — URLSession, Alamofire, atau Moya.

swift
import XCTest
import OHHTTPStubs
import OHHTTPStubsSwift

class UserRepositoryTests: XCTestCase {
    func testFetchUser_returnsCorrectData() {
        stub(condition: isPath("/users/1")) { _ in
            return HTTPStubsResponse(
                jsonObject: ["id": 1, "name": "Alice"],
                statusCode: 200,
                headers: nil
            )
        }

        let repository = UserRepository()
        let expectation = expectation(description: "fetch user")

        repository.fetchUser(id: 1) { user in
            XCTAssertEqual(user.id, 1)
            XCTAssertEqual(user.name, "Alice")
            expectation.fulfill()
        }

        waitForExpectations(timeout: 2.0)
    }
}

Praktik terbaik pengujian integrasi

Pengujian integrasi yang efektif memerlukan kepatuhan terhadap sejumlah praktik yang meningkatkan stabilitas pengujian dan mengurangi biaya pemeliharaannya. Isolasi dependensi eksternal: gunakan basis data in-memory alih-alih instance produksi dan emulasikan API eksternal melalui pustaka stub pengujian. Ini menghilangkan kegagalan non-deterministik yang disebabkan oleh ketersediaan jaringan atau status layanan eksternal.

Jaga independensi pengujian: setiap pengujian integrasi harus bekerja secara terisolasi, tanpa ketergantungan pada hasil pengujian lain. Gunakan anotasi @Before dan @After di JUnit atau setUp dan tearDown di XCTest untuk persiapan dan pembersihan lingkungan pengujian. Ini mencegah saling mempengaruhi antar pengujian dan menyederhanakan diagnostik kesalahan.

Cakup kasus batas: pengujian integrasi harus memeriksa tidak hanya skenario sukses (happy path), tetapi juga penanganan kesalahan — batas waktu, kode HTTP 4xx dan 5xx, respons kosong, JSON rusak. Menurut data Google Testing Blog (2022), 60% insiden produksi terkait dengan penanganan kasus batas yang tidak benar yang tidak tercakup oleh pengujian.

Pertanyaan yang sering diajukan

Apa perbedaan pengujian integrasi dengan pengujian unit?

Pengujian unit memeriksa satu kelas atau fungsi dalam isolasi, menggantikan dependensi dengan stub. Pengujian integrasi memeriksa interaksi beberapa komponen nyata — misalnya, koneksi jaringan dan basis data secara bersamaan.

Berapa lama waktu yang dibutuhkan untuk menjalankan pengujian integrasi?

Menjalankan pengujian integrasi biasanya memakan waktu 2 hingga 15 menit tergantung pada jumlah pengujian dan kompleksitas lingkungan. Untuk proyek besar, disarankan untuk membagi pengujian menjadi job paralel di sistem CI untuk mengurangi total waktu pemeriksaan sebelum merge.

Komponen apa yang wajib dicakup oleh pengujian integrasi?

Pertama-tama, pengujian integrasi ditulis untuk lapisan jaringan, basis data, dan layanan sistem — notifikasi, kamera, geolokasi. Permintaan API ke backend dan operasi dengan penyimpanan lokal memberikan ROI tertinggi, karena komponen ini paling sering menjadi sumber regresi.

Apakah pengujian integrasi diperlukan untuk satu layar?

Untuk satu layar, pengujian unit ViewModel dan pengujian UI sudah cukup. Pengujian integrasi untuk satu layar hanya dibenarkan jika layar berinteraksi dengan beberapa sumber data — misalnya, menggabungkan respons dari dua API berbeda atau menulis data secara bersamaan ke jaringan dan basis data lokal.

Seberapa sering pengujian integrasi harus dijalankan?

Pengujian integrasi dijalankan pada setiap pull request di pipeline CI dan sebelum rilis utama. Juga disarankan untuk menjalankan set lengkap pengujian integrasi di malam hari (nightly build) untuk mendeteksi cacat terkait perubahan dependensi atau lingkungan pengujian.

Ringkasan

  • Pengujian integrasi memeriksa interaksi antara komponen aplikasi — lapisan jaringan, basis data, dan layanan.
  • Big Bang cocok untuk proyek kecil, Bottom-Up dan Top-Down — untuk sistem dengan arsitektur kompleks.
  • MockWebServer dan OHHTTPStubs adalah alat emulasi server utama untuk Android dan iOS secara berurutan.
  • Pengujian integrasi mendeteksi hingga 40% cacat yang terlewatkan oleh pengujian unit, menurut Martin Fowler.
  • Isolasi dependensi melalui basis data in-memory dan stub meningkatkan stabilitas pengujian dan menghilangkan kegagalan non-deterministik.
  • Biaya perbaikan pada tahap pengujian integrasi 5 kali lebih rendah daripada setelah cacat masuk ke produksi.
  • Sertakan pengujian integrasi dalam pipeline CI di setiap pull request dan dalam proses malam untuk cakupan penuh.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga