Catatan transl .: Saya menerjemahkan artikel ini untuk membantu mereka yang mengambil langkah pertama dalam otomatisasi pengujian dan ingin mempelajari lebih lanjut tentang alat Appium. Ini menjelaskan prinsip umum pengoperasian driver Appium, serta jenis dan tujuannya. Pada awal perjalanan, banyak penguji tidak memiliki informasi tertib, dan materi ini akan membantu menentukan pilihan alat yang tepat.
Appium adalah alat lintas platform yang memungkinkan Anda untuk mengotomatiskan pengujian aplikasi seluler (iOS dan Android) dan desktop secara bersamaan. Cara untuk mengimplementasikan model multi-platform ini adalah dengan menggunakan berbagai driver. Pada dasarnya, Appium memiliki arsitektur yang kira-kira sama dengan Selenium WebDriver, yang juga menggunakan sejumlah driver independen untuk mendukung otomatisasi pengujian lintas-browser.
Ada driver Appium yang terpisah untuk alat otomatisasi yang berbeda, yang biasanya berarti menggunakan satu driver untuk setiap platform (satu untuk iOS, satu untuk Android, dll.). Namun, ada pengecualian. Mereka terkait dengan fakta bahwa dalam otomatisasi pengujian aplikasi untuk beberapa platform (misalnya, untuk Android) beberapa alat digunakan bersama dengan Appium. Bahkan, ada tiga driver untuk Android: berdasarkan UiAutomator, UiAutomator 2, dan Espresso.
Prinsip pengoperasian pengemudi
Driver mungkin merupakan komponen paling penting dari keseluruhan alat, karena tugas mereka adalah untuk mengeksekusi perintah-perintah Appium API (dikenal sebagai Protokol WebDriver) pada platform tertentu. Intinya, driver adalah penerjemah yang mengubah kode klien Appium menjadi sesuatu yang mengeksekusi perintah di iOS, Android, dll.
Untuk kesederhanaan arsitektural, antara alasan lain, masing-masing driver itu sendiri adalah server yang kompatibel dengan WebDriver (walaupun tidak memiliki semua opsi yang dimiliki server Appium utama). Di dalam driver, perintah yang diterima diproses dengan cara yang aneh. Misalnya, mereka dapat ditransfer ke proses terpisah yang menjalankan kode Java pada perangkat Android.
Driver sendiri memiliki arsitektur internal yang agak rumit, kadang-kadang didasarkan pada seluruh jajaran teknologi. Di bawah ini adalah diagram yang menunjukkan tumpukan teknologi yang terlibat dalam driver XCUITest (driver iOS saat ini):

Seperti yang Anda lihat, prinsip driver XCUITest tidak begitu sederhana. Ini tersedia sebagai bagian dari Appium dan dimulai setiap kali Anda memulai sesi iOS. Di dalam driver, ia menggunakan alat lain, yang dikenal sebagai WebDriverAgent, yang bertanggung jawab untuk mengubah perintah Protokol WebDriver ke panggilan pustaka XCUITest.
Banyak driver memiliki arsitektur yang serupa, meskipun masing-masing dari mereka dapat mengimplementasikan sendiri, karena pada akhirnya driver diterbitkan dalam npm sebagai kelas yang mewarisi kelas Appium BaseDriver. Ini memungkinkan driver untuk dengan mudah terhubung ke Appium.
Jenis-jenis driver
Jadi ada berapa driver? Sejujurnya, sulit untuk mengatakan dengan pasti, karena, selain driver Appium resmi, ada yang tidak resmi. Tetapi jika kita melihat kode sumber Appium, kita akan melihat yang berikut:
const AUTOMATION_NAMES = { APPIUM: 'Appium', UIAUTOMATOR2: 'UiAutomator2', UIAUTOMATOR1: 'UiAutomator1', XCUITEST: 'XCUITest', YOUIENGINE: 'YouiEngine', ESPRESSO: 'Espresso', TIZEN: 'Tizen', FAKE: 'Fake', INSTRUMENTS: 'Instruments', WINDOWS: 'Windows', MAC: 'Mac', };
Nama otomasi adalah kunci untuk berbagai driver yang digunakan Appium. Bagian kode ini menentukan baris mana yang diizinkan untuk digunakan sebagai nilai untuk kemampuan automationName. Setiap driver biasanya hanya mendukung satu platform. Berikut ini adalah deskripsi singkat dari masing-masing driver berdasarkan automationName mereka:
- Appium hanyalah sebuah penunjuk ke driver default untuk platform yang dipilih dan bukan driver terpisah;
- UiAutomator2 ( repositori ) - driver saat ini untuk platform Android, digunakan secara default dan berdasarkan pada alat Google UiAutomator;
- UiAutomator1 ( repositori ) adalah driver Android lama berdasarkan versi UiAutomator yang lebih lama. Pengemudi ini tidak akan didukung di masa depan, jadi lebih baik meninggalkannya demi UiAutomator2;
- XCUITest ( repositori ) - driver default untuk iOS, berdasarkan pada alat Apple XCUITest;
- YouiEngine ( repositori ) - driver dari pengembang dari You.i Labs, yang digunakan untuk mengotomatisasi pengujian aplikasi untuk berbagai platform yang dibuat berdasarkan SDK mereka;
- Espresso ( repositori ) - driver terbaru untuk Android, berdasarkan pada alat Google Espresso;
- Tizen ( repositori ) - driver dari pengembang Samsung untuk mengotomatisasi pengujian aplikasi berbasis Xamarin yang digunakan dalam Tizen OS;
- Palsu (namanya berbicara untuk dirinya sendiri) digunakan sebagai alat pengujian internal untuk Appium. Anda tidak perlu menggunakannya;
- Instrumen ( repositori ) - driver yang sudah ketinggalan zaman yang digunakan untuk aplikasi dengan iOS 9.3 dan di bawahnya;
- Windows ( repositori ) - Microsoft telah mengumpulkan server yang kompatibel dengan Appium, menyebutnya WinAppDriver, dan driver ini menghubungkannya ke server Appium utama. Dirancang langsung untuk mengotomatisasi aplikasi desktop untuk Windows;
- Mac ( repositori ) - driver yang memungkinkan Anda untuk mengotomatiskan pengujian aplikasi desktop untuk Mac.
Seperti yang telah disebutkan, masing-masing driver ini memiliki arsitektur sendiri, yang dapat dilihat dengan melihat diagram ini:

FAQ untuk pengemudi
Jadi, bagaimana Anda tahu driver mana yang harus digunakan?
Nah, jika Anda perlu menulis
autotest untuk aplikasi untuk iOS, Windows, Mac atau Tizen , pilihannya jelas - gunakan driver default untuk masing-masing platform ini. Sedangkan untuk Android, di sini Anda harus memilih antara UiAutomator2 dan Espresso. Yang terbaik adalah mengetahui terlebih dahulu tentang masing-masing alat ini dan memahami mana yang terbaik untuk kasus Anda. Kemampuan driver UiAutomator2 dan Espresso serupa, tetapi tidak sepenuhnya identik.
Apakah semua driver mendukung perintah yang sama?Ya dan tidak Pada tingkat fundamental, kami dibatasi oleh kemampuan otomatisasi yang disediakan oleh penyedia platform. Ketuk pada perangkat Android berfungsi sama seperti pada perangkat iOS. Tetapi proses mengeksekusi perintah lain mungkin berbeda. Pengembang Appium, sejauh mungkin, mencoba memastikan perilaku pengemudi yang sama pada platform yang berbeda.
Bisakah saya beralih dari satu driver ke driver lain dan mengharapkan tes saya gagal?Ya dan tidak Itu semua tergantung pada driver apa yang kita bicarakan. Salah satu keuntungan menggunakan Appium adalah Anda dapat beralih dari satu alat otomasi ke yang lain (misalnya, dari UiAutomator2 ke Espresso) tanpa mengorbankan test suite yang sudah jadi. Meskipun demikian, Anda harus bermigrasi dengan lambat dan metodis, memastikan bahwa semuanya terjadi seperti yang Anda harapkan. Tim Appium terkadang menerbitkan panduan migrasi untuk berpindah dari satu driver ke driver lainnya - Anda harus memperhatikannya sebelum bermigrasi.
Bisakah saya membuat driver sendiri?Ya! Banyak yang sudah melakukan ini, khususnya,
Jason Huggins dan
saya (di AppiumConf 2019). Tetapi ada driver berpemilik lainnya, seperti
driver hbbtv Christian Broman .
Apakah driver akan berubah di Appium 2.0?Ini pertanyaan yang sangat bagus! Salah satu aspek negatif dari sistem driver Appium adalah bahwa mereka semua termasuk dalam ketergantungan server Appium. Tetapi kami bergerak untuk memastikan bahwa driver ada dalam sistem yang kurang kohesif, di mana Anda dapat memilih driver spesifik mana yang akan digunakan dengan Appium. Jika Anda mengatasi masalah ini, Anda tidak harus menginstal driver UiAutomator2 lama dan menghubungkan dependensinya ketika Anda menggunakan Appium hanya untuk menjalankan tes iOS. (Apakah Anda tahu bahwa ada
proposal untuk pengembangan Appium 2.0 ?)
Saya harap artikel ini bermanfaat bagi Anda. Saya akan senang membaca di komentar tentang pengalaman Anda menggunakan driver Appium.