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 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.
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.
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 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.
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.
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.
# 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 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 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.
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.
# Menjalankan server Appium dengan pencatatan log
appium \
--port 4723 \
--log-level debug \
--use-plugins images \
--base-path /wd/hub
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.
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.
// 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();
}
}
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.
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.
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 Kerja | Pendekatan | Kecepatan | Lintas Platform |
|---|---|---|---|
| Appium | Black-box | Sedang | iOS, Android, Windows |
| Detox | Gray-box | Tinggi | iOS + Android (React Native) |
| XCUITest | White-box | Tinggi | Hanya iOS |
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.
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.
{
"capabilities": [
{
"browserName": "android",
"platformName": "Android",
"deviceName": "Pixel_4",
"platformVersion": "14.0",
"maxInstances": 2
}
],
"configuration": {
"port": 4724,
"registerCycle": 5000
}
}
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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.
Baca juga