Appium — apa itu, prinsip kerja dan pengujian lintas platform

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

Appium adalah kerangka kerja lintas platform untuk otomatisasi pengujian aplikasi mobile, web, dan desktop, yang didasarkan pada protokol WebDriver. Ini memungkinkan penulisan pengujian dalam bahasa pemrograman apa pun dan menjalankannya di Android, iOS, dan Windows tanpa mengubah kode. Menurut data Appium Foundation, 2025, protokol WebDriver menyediakan antarmuka terpadu untuk interaksi dengan aplikasi di berbagai platform.

Poin Utama

  • Appium — kerangka kerja lintas platform untuk otomatisasi pengujian berbasis WebDriver
  • API terpadu memungkinkan penulisan pengujian di Java, Python, JavaScript, Ruby, C# dan bahasa lainnya
  • Dukungan platform mencakup iOS, Android, Windows, dan aplikasi web
  • Pendekatan Black-box tidak memerlukan akses ke kode sumber aplikasi
  • Appium Server bertindak sebagai proxy antara pengujian dan driver native platform

Apa itu Appium

Appium adalah kerangka kerja sumber terbuka untuk otomatisasi pengujian aplikasi mobile, dibangun di atas arsitektur klien-server. Server Appium menerima perintah dari klien melalui protokol WebDriver dan mendelegasikannya ke driver native: XCUITest untuk iOS, UiAutomator2 untuk Android, dan WinAppDriver untuk Windows.

Sejarah dan komunitas

Appium diciptakan pada tahun 2013 dan sejak itu menjadi standar industri untuk pengujian lintas platform. Proyek ini dikelola oleh Appium Foundation dan didukung oleh perusahaan besar: Sauce Labs, HeadSpin, Microsoft. Setiap bulan, lebih dari 500 ribu penguji di seluruh dunia menggunakan Appium.

Jenis aplikasi yang didukung

Appium mendukung tiga jenis aplikasi: native (iOS, Android, Windows), browser web mobile (Safari, Chrome), dan aplikasi hybrid (WebView di dalam shell native). Setiap jenis menggunakan konteksnya sendiri: NATIVE_APP, WEBVIEW, atau CHROMIUM.

Arsitektur Appium dan WebDriver

Arsitektur Appium terdiri dari empat lapisan: kode klien → Appium Client Library → Appium Server → driver native. Pustaka klien mengimplementasikan protokol WebDriver dan mengirim permintaan HTTP ke server. Server mengubahnya menjadi perintah driver native platform.

Protokol WebDriver

WebDriver adalah standar W3C untuk otomatisasi browser, yang diadaptasi oleh Appium untuk perangkat mobile. Setiap tindakan — menemukan elemen, klik, memasukkan teks — dikirim sebagai permintaan HTTP ke server. Misalnya, POST /session/{id}/element membuat sesi pengujian baru.

Sesi dan Desired Capabilities

Setiap pengujian dimulai dengan membuat sesi melalui objek Desired Capabilities. Di dalamnya ditentukan: platformName, deviceName, appPath, automationName, dan parameter tambahan. Appium menggunakan data ini untuk memilih driver native yang sesuai dan mengonfigurasi perangkat.

python
# Contoh Desired Capabilities untuk Android
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Pixel_4',
    'app': '/path/to/app.apk',
    'automationName': 'UiAutomator2',
    'appPackage': 'com.example.app',
    'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Instalasi dan konfigurasi Appium

Instalasi Appium dilakukan melalui npm: npm install -g appium. Setelah instalasi, driver native untuk setiap platform harus dikonfigurasi: appium driver install xcuitest dan appium driver install uiautomator2. Untuk bekerja dengan iOS diperlukan Xcode, dan untuk Android — Android SDK.

Appium Inspector

Appium Inspector adalah alat grafis untuk inspeksi elemen antarmuka. Alat ini terhubung ke server Appium yang berjalan dan menampilkan hierarki komponen UI, atribut, dan locator-nya. Inspector memungkinkan pemeriksaan selektor sebelum menulis pengujian.

Menjalankan server

Server Appium dijalankan dengan perintah appium dengan parameter opsional: port, alamat, pencatatan log. Secara default, server mendengarkan di port 4723. Untuk menjalankan beberapa perangkat secara paralel, digunakan port yang berbeda atau kluster Appium.

bash
# Menjalankan server Appium dengan pencatatan log
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Menulis pengujian di Appium

Pengujian Appium menggunakan pola Page Object untuk organisasi kode. Setiap layar aplikasi dijelaskan oleh kelas terpisah dengan locator elemen dan metode interaksi. Model Page Object menyederhanakan pemeliharaan pengujian saat perubahan antarmuka dan menggunakan kembali selektor antar skenario pengujian.

Locator elemen

Appium mendukung banyak strategi pencarian elemen: id, xpath, accessibilityId, className, androidUIAutomator, dan iOSClassChain. Yang paling disarankan adalah accessibilityId dan id — keduanya stabil terhadap perubahan tata letak. XPath hanya boleh digunakan jika tidak ada locator lain.

java
// Page Object untuk layar masuk
public class LoginPage {
    private AppiumDriver driver;

    private MobileElement emailField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("emailInput"));
    private MobileElement passwordField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("passwordInput"));
    private MobileElement loginButton =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("loginButton"));

    public void login(String email, String password) {
        emailField.sendKeys(email);
        passwordField.sendKeys(password);
        loginButton.click();
    }
}

Bekerja dengan gerakan dan tindakan

Appium mendukung gerakan kompleks melalui kelas TouchAction atau W3C Actions API: geser, multitouch, tekan lama, gulir ke elemen. W3C Actions API yang baru direkomendasikan untuk proyek baru karena terstandarisasi dan bekerja lebih stabil di berbagai versi platform.

Perbandingan Appium dengan alternatif

Appium sering dibandingkan dengan Detox, XCUITest, dan Espresso. Keunggulan utama Appium adalah kemampuan lintas platform: satu pengujian dapat dijalankan di iOS dan Android tanpa perubahan. Namun, Detox memberikan sinkronisasi yang lebih baik untuk React Native, dan XCUITest/Espresso memberikan eksekusi yang lebih cepat untuk pengujian native.

Kapan memilih Appium

Appium cocok untuk proyek yang membutuhkan kerangka kerja terpadu untuk iOS, Android, dan web. Ini sangat diperlukan dalam tim dengan penguji yang menulis di Java atau Python. Untuk proyek React Native dengan banyak pengujian E2E, lebih baik mempertimbangkan Detox karena sinkronisasi otomatisnya.

Kerangka KerjaPendekatanKecepatanLintas Platform
AppiumBlack-boxSedangiOS, Android, Windows
DetoxGray-boxTinggiiOS + Android (React Native)
XCUITestWhite-boxTinggiHanya iOS

Appium Grid dan pengujian cloud

Appium Grid adalah ekstensi untuk menjalankan pengujian secara paralel di banyak perangkat secara bersamaan. Appium Grid dibangun di atas Selenium Grid dan memungkinkan distribusi pengujian di antara beberapa server Appium, yang masing-masing mengelola kumpulan perangkat atau emulator sendiri. Ini sangat penting untuk proyek besar di mana pengujian regresi pada satu perangkat memakan waktu berjam-jam — Grid mengurangi waktu menjadi menit secara proporsional dengan jumlah node.

Konfigurasi Grid

Untuk konfigurasi Grid, digunakan file konfigurasi dalam format JSON, yang mendeskripsikan node dengan perangkat. Setiap node menentukan: port server, daftar perangkat dengan platform, versi OS, dan jumlah maksimum sesi. Hub mendistribusikan pengujian ke node yang tersedia, memastikan beban maksimum infrastruktur.

json
{
  "capabilities": [
    {
      "browserName": "android",
      "platformName": "Android",
      "deviceName": "Pixel_4",
      "platformVersion": "14.0",
      "maxInstances": 2
    }
  ],
  "configuration": {
    "port": 4724,
    "registerCycle": 5000
  }
}

Layanan cloud

Jika infrastruktur perangkat sendiri tidak tersedia, ada layanan cloud: Sauce Labs, BrowserStack, LambdaTest. Mereka menyediakan ratusan perangkat nyata dan emulator di cloud. Integrasi dengan Appium minimal: cukup dengan menentukan URL hub cloud dan kredensial di Desired Capabilities, bukan localhost.

Eksekusi paralel

Appium mendukung eksekusi paralel pengujian dengan TestNG (Java) atau pytest-xdist (Python). Paralelisasi memerlukan port unik untuk setiap sesi dan data pengujian yang terisolasi. Setiap thread menjalankan sesi Appium sendiri pada perangkat atau emulator terpisah. Saat menggunakan layanan cloud, paralelisasi bersifat otomatis — platform sendiri mendistribusikan pengujian ke perangkat yang tersedia dan membebaskannya setelah selesai.

Diagnostik dan debugging Appium

Saat mengalami masalah dengan Appium, langkah pertama adalah memeriksa log server (appium --log-level debug). Kesalahan umum: port sibuk (tentukan --port lain), versi driver tidak kompatibel, Android SDK atau Xcode tidak ditemukan. Untuk iOS, pastikan WebKitAgent berjalan dan memiliki akses ke simulator.

Masalah menemukan elemen

Jika Appium tidak menemukan elemen, periksa: apakah konteksnya benar (NATIVE_APP vs WEBVIEW), apakah elemen terlihat di layar, apakah perlu digulir, dan apakah locator benar. Gunakan Appium Inspector untuk pencarian interaktif dan pemeriksaan ekspresi XPath sebelum memasukkannya ke dalam pengujian. Juga berguna untuk mengaktifkan penantian munculnya elemen melalui WebDriverWait — ini menyelesaikan masalah sinkronisasi saat pemuatan UI lambat.

Manajemen sesi

Pengakhiran sesi yang tidak benar adalah penyebab umum ketidakstabilan pengujian Appium. Selalu tutup driver di blok finally atau melalui AutoCloseable. Saat terjadi kesalahan, gunakan driver.quit() secara paksa. Untuk iOS, pastikan WebKitAgent (WDA) dimulai ulang di antara sesi, jika tidak, kesalahan session not created dapat terjadi. Untuk memantau status sesi di CI, berguna untuk menghubungkan plugin Appium Dashboard yang memvisualisasikan status semua pengujian yang berjalan secara real-time.

Flag stabilitas

Untuk meningkatkan stabilitas pengujian, gunakan: shouldTerminateApp (menutup aplikasi di antara pengujian), noReset (menyimpan data di antara sesi), autoGrantPermissions (memberikan izin sistem secara otomatis). Juga disarankan untuk menonaktifkan animasi pada perangkat melalui Developer Options.

Pertanyaan yang Sering Diajukan

Bahasa pemrograman apa saja yang didukung Appium?

Appium mendukung semua bahasa populer melalui pustaka klien: Java, Python, JavaScript, Ruby, C#, PHP, dan Kotlin. Setiap pustaka mengimplementasikan protokol WebDriver yang sama, memungkinkan penulisan pengujian lintas platform dalam bahasa apa pun.

Apakah perlu ponsel asli untuk Appium?

Tidak, Appium bekerja baik dengan perangkat asli maupun emulator dan simulator. Untuk Android digunakan emulator Android Studio, untuk iOS — simulator Xcode. Perangkat asli hanya diperlukan untuk menguji fungsi perangkat keras: sensor, NFC, kamera.

Apa perbedaan antara Appium 1 dan Appium 2?

Appium 2 sepenuhnya ditulis ulang dengan arsitektur modular dengan plugin dan driver terpisah. Di Appium 1, semua driver terintegrasi ke dalam server. Appium 2 menggunakan perintah appium driver install untuk menginstal driver dan appium plugin install untuk plugin.

Bagaimana Appium menemukan elemen di layar?

Appium menggunakan strategi pencarian: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator, dan By.iOSClassChain. Untuk kecepatan, disarankan menggunakan accessibilityId — ini stabil dan tidak tergantung pada perubahan tata letak.

Bisakah aplikasi web diuji di Appium?

Ya, Appium mendukung pengujian browser mobile — Safari di iOS dan Chrome di Android. Untuk ini, digunakan konteks WEBVIEW atau CHROMIUM. Pengujian dijalankan di browser melalui WebDriver standar, mirip dengan Selenium.

Kesimpulan

  • Appium — kerangka kerja E2E lintas platform berbasis WebDriver dengan dukungan iOS, Android, dan Windows
  • Arsitektur klien-server memungkinkan penulisan pengujian di Java, Python, JavaScript, Ruby, dan C#
  • Desired Capabilities mengonfigurasi sesi pengujian untuk platform dan perangkat tertentu
  • Model Page Object direkomendasikan untuk organisasi kode pengujian dan penggunaan kembali selektor
  • Appium Inspector membantu menginspeksi elemen antarmuka dan memilih locator
  • Pendekatan Black-box tidak memerlukan akses ke kode sumber aplikasi
  • Appium 2 menggunakan arsitektur modular dengan driver dan plugin yang dapat dipasang

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