Pengujian dalam Pengembangan Seluler: apa itu, jenis apa dan cara mengorganisir

Penulis: IT Sectr Diterbitkan: 2026-03-31 Waktu membaca: 9 mnt

Pengujian aplikasi seluler adalah proses verifikasi bahwa aplikasi berfungsi dengan benar, tidak crash, dan memenuhi persyaratan. Menurut Software Testing Help (2025), pengujian otomatis mengurangi waktu pemeriksaan regresi sebesar 70–80% dibandingkan dengan pengujian manual. Dalam artikel ini, kita akan membahas tingkat pengujian, alat untuk iOS dan Android, TDD dan BDD, serta CI/CD untuk pengujian.

Poin Utama

  • Pengujian unit memverifikasi fungsi dan kelas individu; pengujian integrasi memverifikasi interaksi modul; E2E mencakup skenario pengguna lengkap.
  • iOS: XCTest untuk pengujian unit, XCUITest untuk pengujian UI. Android: JUnit + Mockito + Espresso.
  • Framework lintas platform: Detox (React Native), Appium (universal), XCUITest (iOS).
  • TDD (Test-Driven Development) — uji dulu, lalu kode; BDD — skenario dalam bahasa sederhana.
  • CI/CD: pengujian berjalan otomatis pada setiap push — ini adalah standar wajib untuk pengembangan komersial.

Tingkat Pengujian: Unit, Integration, E2E

Pengujian Unit

Pengujian unit adalah fondasi pengujian aplikasi seluler. Mereka memverifikasi unit kode terkecil — satu fungsi, metode atau kelas yang terisolasi dari sistem lainnya. Dalam pengembangan seluler, pengujian unit ditulis dalam JUnit (Android) dan XCTest (iOS). Pengujian unit yang baik harus cepat, independen, dan dapat diulang — tidak boleh bergantung pada jaringan, database, atau komponen UI. Untuk isolasi, digunakan test doubles: mock, stub, dan fake.

Mockito (Java/Kotlin) dan MockK (Kotlin-first) adalah pustaka populer untuk membuat objek mock di Android. Di iOS, digunakan OCMock, Cuckoo, atau protokol manual. Aturan: pengujian unit harus mencakup logika bisnis dan model data. Pengujian UI tidak boleh menduplikasi pengujian unit — mereka memverifikasi interaksi pengguna dengan antarmuka.

Pengujian Integrasi

Pengujian integrasi memverifikasi interaksi antar komponen: repositori dengan database, ViewModel dengan layanan API, navigasi antar layar. Tidak seperti pengujian unit, pengujian integrasi menggunakan dependensi nyata atau mendekati nyata (misalnya, database dalam memori atau server mock). Robolectric adalah framework untuk menjalankan pengujian Android di JVM tanpa emulator, mempercepat pengujian integrasi hingga 10 kali lipat.

Pengujian snapshot (Golden Tests) adalah jenis khusus pengujian integrasi yang membandingkan komponen UI yang dirender dengan gambar referensi (snapshot). Jika tampilan berubah, pengujian gagal — pengembang melihat apa yang berubah. Facebook SnapshotTestCase (iOS) dan Shot (Android) adalah alat populer untuk pengujian snapshot.

Pengujian E2E dan UI

Pengujian E2E (end-to-end) memverifikasi skenario pengguna lengkap dari awal hingga akhir: meluncurkan aplikasi, login, melakukan tindakan, memeriksa hasil. Pengujian UI adalah subset dari E2E yang berfokus pada antarmuka. Alat: Espresso (Android), XCUITest (iOS), Detox (React Native). Pengujian E2E adalah yang paling lambat, sehingga dijalankan terpisah di CI — biasanya pada build malam hari.

Alat iOS: XCTest dan XCUITest

XCTest

XCTest adalah framework bawaan Apple untuk pengujian unit aplikasi seluler. XCTestRunner menjalankan pengujian di simulator atau perangkat nyata. Pengujian mewarisi dari XCTestCase, berisi setUp dan tearDown untuk persiapan dan pembersihan. XCTest mencakup XCTAssert untuk asersi (XCTAssertEqual, XCTAssertNil, XCTAssertTrue) dan XCTWaiter untuk menunggu operasi asinkron.

Contoh pengujian XCTest sederhana: membuat model User, memeriksa kebenaran inisialisasi, format nama, dan perhitungan usia. Code Coverage di Xcode menunjukkan baris kode mana yang dicakup oleh pengujian — target untuk proyek komersial: setidaknya 70–80% cakupan logika bisnis. XCTest terintegrasi dengan Xcode Server dan sistem CI melalui xcodebuild test.

XCUITest

XCUITest adalah framework Apple untuk pengujian UI. Bekerja melalui pengidentifikasi aksesibilitas: XCUIElementQuery menemukan tombol, bidang input, tabel berdasarkan label, pengidentifikasi, atau jenis. XCUITest merekam urutan tindakan (rekam/putar) dan menghasilkan kode pengujian. Penting: semua elemen UI harus memiliki accessibilityIdentifier untuk pengoperasian pengujian yang stabil.

Alat Android: JUnit, Espresso, Robolectric

JUnit dan Mockito

JUnit adalah framework dasar untuk pengujian unit aplikasi seluler di Java/Kotlin. Di Android, digunakan JUnit 4 (versi stabil terakhir 4.13.2) dan JUnit 5 untuk proyek baru. Mockito adalah pustaka untuk membuat objek mock: when(mock.method()).thenReturn(value) — pola standar untuk mengisolasi kelas yang diuji dari dependensi.

Contoh pengujian JUnit untuk Android:

java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class LoginViewModelTest {

    @Mock
    AuthRepository authRepository;

    @Test
    public void login_emptyEmail_returnsError() {
        LoginViewModel vm = new LoginViewModel(authRepository);
        String result = vm.login("", "password123");
        assertEquals("Email cannot be empty", result);
        verify(authRepository, never()).authenticate(any());
    }
}

Espresso dan UI Automator

Espresso adalah framework Google untuk pengujian UI Android. Espresso secara otomatis menyinkronkan dengan thread UI: onView(withId(R.id.button)).perform(click()).check(matches(isDisplayed())). Espresso mudah ditulis dan stabil berkat penantian status diam bawaan. UI Automator adalah framework untuk pengujian lintas aplikasi yang dapat berinteraksi dengan elemen sistem (dialog izin, bayangan notifikasi).

Alat Lintas Platform: Detox, Appium

Detox untuk React Native

Detox adalah framework E2E kotak abu-abu untuk menguji aplikasi seluler React Native dari Wix. Detox bekerja di kedua platform dari satu basis kode pengujian, menggunakan Espresso (Android) dan XCUITest (iOS) di dalamnya. Detox secara otomatis menunggu aplikasi menjadi idle (tanpa animasi, permintaan jaringan, pengatur waktu) dan baru kemudian melakukan tindakan berikutnya.

Appium

Appium adalah framework lintas platform universal yang mendukung Android, iOS, Web, dan aplikasi hybrid. Appium menggunakan protokol WebDriver dan mendukung bahasa pemrograman apa pun (Java, Python, JS, Ruby). Server Appium bekerja sebagai server HTTP yang menerjemahkan perintah menjadi perintah UI Automator / XCUITest asli. Kelemahan utama Appium adalah kecepatan: pengujian berjalan lebih lambat daripada Espresso atau XCUITest asli.

Perbandingan alat pengujian iOS dan Android
Kriteria iOS Android
Pengujian unit XCTest JUnit 4/5 + Mockito
Pengujian UI XCUITest Espresso, UI Automator
Pengujian snapshot FBSnapshotTestCase Shot, Roborazzi
Otomatisasi gerakan XCUIGesture UiAutomator touch
Cakupan kode Xcode Code Coverage Jacoco
Integrasi CI xcodebuild test Gradle connectedCheck

TDD dan BDD: Metodologi Pengujian

TDD: Test-Driven Development

TDD adalah metodologi pengujian aplikasi seluler di mana pengujian ditulis sebelum kode implementasi. Siklus Red-Green-Refactor: (1) tulis pengujian yang gagal (Red), (2) tulis kode minimal agar pengujian lolos (Green), (3) refaktor kode sambil mempertahankan pengujian lolos. TDD memberikan cakupan pengujian 100% untuk fungsionalitas baru dan arsitektur yang bersih, karena pengujian adalah spesifikasi pertama dari persyaratan.

BDD: Behaviour-Driven Development

BDD adalah perluasan dari TDD di mana pengujian ditulis dalam bahasa alami dalam format Given-When-Then. Given (konteks) — When (tindakan) — Then (hasil yang diharapkan). Pengujian BDD dapat dipahami oleh semua anggota tim: pengembang, penguji, analis, dan klien. Mock vs Stub vs Fake: Mock memverifikasi interaksi (apakah metode dipanggil), Stub mengembalikan data tetap, Fake adalah implementasi kerja yang disederhanakan (misalnya, DB dalam memori). Di IT Sectr, kami menggunakan TDD untuk logika bisnis kritis dan BDD untuk skenario penerimaan.

Test Doubles adalah nama umum untuk objek yang menggantikan dependensi nyata dalam pengujian. Ada empat jenis: Dummy (objek untuk mengisi parameter, tidak digunakan), Stub (mengembalikan nilai yang diberikan), Spy (merekam panggilan untuk verifikasi), Mock (mendefinisikan panggilan yang diharapkan sebelumnya). Memahami perbedaan sangat penting untuk desain pengujian yang tepat.

CI/CD dan Device Farm

Otomatisasi Pengujian dalam CI/CD

CI/CD — Integrasi Berkelanjutan dan Pengiriman Berkelanjutan: praktik membangun dan menguji aplikasi seluler secara otomatis pada setiap perubahan kode. Dalam pengembangan seluler, pipeline CI/CD mencakup: linting, pengujian unit, pengujian integrasi, build APK/IPA, dan pengujian UI. GitHub Actions dan Bitrise adalah platform populer untuk CI/CD seluler. Pengujian harus berjalan cepat: pengujian unit dalam 1–2 menit, integrasi dalam 5–10, UI dalam 15–30 menit.

Device Farm

Device Farm adalah kumpulan perangkat nyata untuk pengujian. Firebase Test Lab (Android) dan Xcode Cloud (iOS) menyediakan akses cloud ke ratusan model perangkat. Device Farm mengungkap masalah yang tidak terlihat di emulator: ukuran layar berbeda, kinerja pada perangkat lama, masalah kompatibilitas. Di IT Sectr, kami menggunakan Firebase Test Lab untuk Android dan Xcode Cloud untuk iOS secara teratur.

Pertanyaan Umum

Berapa persen cakupan pengujian yang dianggap normal?

Untuk proyek komersial, setidaknya 70–80% cakupan logika bisnis. Kode UI lebih sulit dicakup — 50% sudah cukup. Yang penting bukan persentasenya, melainkan kualitas pengujian: uji skenario kritis, kasus batas, dan penanganan kesalahan.

Apa perbedaan Mock dan Stub?

Mock memverifikasi interaksi — apakah metode tertentu dipanggil dengan parameter tertentu. Stub mengembalikan data yang telah ditentukan sebelumnya. Mock memeriksa perilaku, Stub memeriksa keadaan.

Haruskah saya menulis pengujian untuk UI?

Ya, tetapi hanya untuk skenario kritis: login, registrasi, penyelesaian pesanan, pembayaran. Pengujian UI lambat dan rapuh — jangan menulis pengujian untuk setiap layar. Fokus pada skenario E2E pengguna.

Apa itu Snapshot Test?

Snapshot Test (Golden Test) membandingkan komponen UI yang dirender dengan gambar referensi. Jika tampilan berubah (font, padding, warna), pengujian gagal — pengembang memeriksa apakah perubahan itu disengaja. Ideal untuk pustaka komponen.

Bagaimana cara mempercepat pengujian E2E?

Jalankan pengujian E2E secara paralel di beberapa perangkat, gunakan Cloud Device Farm, dan bagi pengujian menjadi kelompok independen. Optimalkan pengujian: minimalkan penantian, gunakan mock untuk permintaan jaringan.

Ringkasan

  • Pengujian unit — fondasi piramida pengujian: cepat, terisolasi, mencakup logika bisnis.
  • iOS: XCTest untuk unit, XCUITest untuk UI. Android: JUnit + Mockito, Espresso untuk UI, Robolectric untuk pengujian integrasi cepat.
  • Framework lintas platform: Detox (React Native), Appium (universal), XCUITest (iOS-asli).
  • TDD — uji sebelum kode, BDD — skenario dalam bahasa bisnis (Given-When-Then).
  • CI/CD — eksekusi pengujian otomatis pada setiap push wajib untuk pengembangan modern.
  • Device Farm — pengujian pada perangkat nyata di cloud untuk mengidentifikasi masalah perangkat keras.
  • Piramida pengujian: banyak unit, lebih sedikit integrasi, lebih sedikit lagi E2E — keseimbangan optimal antara kecepatan dan cakupan.

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