Appium vs Native Frameworks: A Comparison

Oleh Kouros Aliabadi dan Rohan Janjua

Posting ini adalah ringkasan dari pengalaman kami dan belum tentu keseluruhan gambaran. Kami akan memberikan beberapa tautan dan membangunnya di pos mendatang untuk membantu Anda dalam riset Anda sendiri. Kami berharap ini akan menjadi titik awal yang baik bagi siapa pun yang ingin membuat pilihan antara beberapa pendekatan otomatisasi seluler terkemuka.

Ada alat otomatisasi alternatif di luar sana tetapi untuk konteks posting blog ini kami akan membatasi diri untuk Appium ini dan alat asli bawaan untuk iOS dan Android: masing-masing XCUITests dan Espresso.

Appium:

Appium telah menjadi alat defacto untuk otomatisasi seluler selama beberapa tahun terakhir, memberikan pengalaman seperti selenium. Hingga kini ini telah menjadi salah satu pilihan paling profesional karena sejumlah alasan.

  1. Pertama adalah agnostik bahasa, datang dengan dukungan untuk berbagai bahasa populer. Jika bahasa pilihan Anda memiliki klien webdriver, Anda dapat menggunakan Appium. Ini ke jsonWireProtocol yang dibagikan. Ini sangat nyaman karena memungkinkan pengembang pengujian untuk mengambil alat dengan cepat. Bahasa yang didukung mencakup, tetapi tidak terbatas pada Java, C #, JavaScript, Python, dan ruby.
  2. Sangat mudah untuk mengambil dan memulai dengan mudah. Demikian pula dengan poin sebelumnya, Appium memiliki banyak kesamaan dengan webdriver Selenium. Manfaat dari hal ini adalah bahwa jika pengembang tes terbiasa menulis tes web selenium webdriver maka Appium harus relatif sederhana untuk diambil dan cukup intuitif.
  3. Appium memungkinkan pengujian beberapa platform dari basis kode pengujian yang sama. Bagi mereka yang bekerja di tim pengujian terpusat atau tim yang bekerja di iOS dan Android, itu dapat mengurangi jumlah kode pelat yang diperlukan untuk bekerja dengan infrastruktur pengujian dan emulator.
  4. Selain itu dalam pengalaman beberapa insinyur pengujian kami, dukungan untuk aplikasi asli yang memanfaatkan tampilan web lebih baik di Appium daripada kebanyakan pesaing lainnya. Dukungan yang diberikan oleh Appium dapat sangat berharga dalam hal mengotomatisasi aplikasi hybrid.

Ada juga beberapa kelemahan menggunakan Appium:

  1. Dalam pengalaman kami, tes Appium berjalan jauh lebih lambat daripada tes yang ditulis dalam XCUITests atau Espresso
  2. Kode uji tidak hidup dengan kode dev. Sekarang ini mungkin untuk diperdebatkan, tetapi kami dengan tegas merasa bahwa kode uji dan kode dev harus hidup berdekatan satu sama lain.
  3. Untuk menguji aplikasi lintas platform akan selalu ada beberapa tingkat kompleksitas teknis yang terlibat dengan Appium. Anda juga harus:
  4. Pertahankan 2 set PageObjects / ScreenObjects yang mematuhi satu kontrak sehingga mereka dapat dipanggil hanya dari satu set tes.
  5. Tulis 2 set tes
  6. Pastikan pengembang menggunakan id yang sama di kedua aplikasi

Alat asli:

Dua platform utama untuk pengembangan aplikasi sekarang memiliki alat otomatisasi UI yang sangat kompetitif sendiri: XCUITest dan Espresso. Kematangan kedua alat ini telah meningkat secara dramatis dan dalam pembicaraan baru-baru ini di WWDC 2017Apple telah memperjelas bahwa mereka sangat aktif dalam meningkatkan alat otomasi UI mereka.

  1. Ada keuntungan mendasar untuk menggunakan XCUITest dan Espresso: mereka dibuat oleh penyedia platform: Apple dan Google. Alat-alat ini akan selalu berada di depan kurva untuk pengujian iOS dan Android. Setiap fitur baru dari Appium dalam banyak kasus akan dibangun di atas fungsi alat asli yang ada.
  2. Manfaat utama lain di mata kami adalah bahwa Anda akan memasukkan kode uji dengan kode sumber proyek Anda. Ini mungkin sedikit diperdebatkan tetapi kita akan membahas ini di posting mendatang. Untuk saat ini kami hanya akan menyatakan bahwa kami percaya bahwa memasukkan kode pengujian Anda dalam proyek yang sama dan dalam bahasa yang sama yang digunakan pengembang Anda memiliki manfaat besar. Ini memberi lebih banyak insentif untuk kolaborasi dalam tim dan memungkinkan setiap orang untuk dengan mudah berkontribusi pada aspek pengembangan perangkat lunak ini.
  3. Terkadang pengalaman android seharusnya berbeda dengan pengalaman iOS, dengan menulis tes Anda untuk setiap platform, Anda tidak perlu menyulitkan kerangka pengujian Anda untuk menangani situasi ini.
  4. Apalagi bersisik. Alat asli hanya kurang serpihan. Mungkin ada hubungannya dengan sejumlah kecil bagian yang bergerak dan lebih sedikit lapisan komunikasi antara kode uji dan instrumentasi, tetapi tes yang ditulis dengan alat asli tampaknya jauh lebih tidak terkelupas.
  5. Anda dapat menggunakan set alat yang jauh lebih besar daripada jika Anda menggunakan alat seperti Appium. Misalnya dengan Android Anda memiliki akses ke perpustakaan UiAutomator dan perpustakaan Espresso.

Espreso:

Alat pengujian Android Google, Espresso memiliki beberapa fitur sendiri yang layak disebut.

  1. Espresso sangat cepat, kami belum pernah melihat sesuatu yang begitu cepat dalam otomatisasi UI. Ini seperti Flash otomatisasi UI, tidak ada alat lain yang mendekati kecepatannya.
  2. Anda tidak perlu khawatir menunggu hal-hal terjadi atau menyelesaikan kode pengujian Anda karena Espresso menangani ini untuk Anda, tidak termasuk beberapa kasus luar biasa. Ini pada dasarnya mengambil hal yang paling rapuh tentang otomatisasi UI dari persamaan.
  3. Espresso mengambil pendekatan pengujian 'kotak abu-abu'. Tidak cukup kotak hitam, tidak cukup putih. Dengan espresso, penguji memiliki kontrol lebih besar atas aplikasi daripada di kotak hitam seperti appium.
  4. Espresso memungkinkan penguji memanfaatkan alat-alat seperti Robolectric, sebuah kerangka kerja untuk menjalankan Android SDK tanpa memulai simulator atau mencolokkan sebuah perangkat. Artinya, tes Anda mulai lebih cepat, dan berjalan lebih cepat juga.

Ada kerangka kerja yang mirip dengan Espresso, juga dibuat oleh Google, untuk pengujian iOS yang layak disebutkan di sini: EarlGrey. Kami belum menggunakannya, tetapi jika itu membawa beberapa manfaat Espresso ke iOS, itu layak untuk ditelusuri.

Ada juga beberapa kelemahan menggunakan alat uji asli:

  1. Jika Anda mengembangkan aplikasi lintas platform, Anda berpotensi harus mempertahankan dua kali jumlah tes dibandingkan jika Anda menggunakan alat seperti Appium.
  2. Jika Anda mengembangkan aplikasi lintas platform, Anda perlu tahu dua bahasa.
  3. Lebih banyak kompleksitas dapat terlibat dalam pendekatan ini. Ini adalah efek samping dari daya ekstra dan akses yang dapat diberikan alat seperti Espresso pada tester. Misalnya Espresso secara otomatis menunggu acara selesai dalam aplikasi yang sedang diuji menggunakan IdlingResource. Namun untuk beberapa kasus, tester harus mengimplementasikan IdlingResource secara manual.
  4. Dengan alat seperti Espresso, penguji dapat menempatkan aplikasi ke keadaan yang mungkin tidak dapat dijangkau dari perspektif pengguna. Sekali lagi, ini adalah sisi lain dari kekuatan ekstra yang Anda dapatkan.