Pengujian UI Android dan iOS dengan Calabash

Diterbitkan: 2022-03-11

Pengujian adalah bagian penting dari setiap proses pengembangan aplikasi seluler. Baik Anda mengotomatiskan pengujian semacam itu atau tidak, tidak ada pengembang waras yang menganggap pekerjaan mereka selesai kecuali mereka telah menguji aplikasi mereka.

Aplikasi yang teruji dengan baik biasanya melewati beberapa langkah pengujian: Pengujian unit, pengujian integrasi, pengujian penerimaan, dan sebagainya. Seiring pertumbuhan aplikasi Anda, pentingnya pengujian meningkat dan otomatisasi dalam pengujian menjadi suatu keharusan.

Pengujian penerimaan labu untuk Android dan iOS

Sementara platform lain, seperti web, telah maju secara signifikan dalam hal mekanisme pengujian dan kerangka kerja, ranah seluler tidak ketinggalan. Dalam artikel ini, Anda akan mempelajari bagaimana Anda dapat menggunakan Calabash untuk mengotomatiskan UI untuk aplikasi Android dan iOS Anda menggunakan instruksi bahasa Inggris sederhana dan membuat pengujian penerimaan semudah mungkin.

Apa Itu Pengujian UI?

Jika Anda telah menguji aplikasi secara manual, Anda mungkin membuang banyak waktu untuk melakukan tugas yang sama berulang kali. Anda membuat beberapa perubahan pada kode, membangun aplikasi, menjalankannya di perangkat atau emulator, dan mengutak-atik aplikasi untuk mencari tahu apakah itu berfungsi seperti yang diharapkan.

Dengan mengotomatiskan pengujian UI, Anda dapat melakukan langkah manual yang sama secara otomatis. Jika aplikasi Anda memiliki ukuran yang layak, ini dapat menghemat banyak waktu Anda dan juga menyelamatkan aplikasi Anda dari bug yang memalukan, terutama yang regresi.

“Kedengarannya luar biasa,” kata Anda, tetapi bagaimana Anda melakukannya untuk aplikasi Android atau iOS Anda?

Kerangka Kerja Pengujian UI untuk Android dan iOS

Jika Anda membaca dokumentasi resmi untuk Android dan iOS, mereka menyarankan Anda menulis dan menjalankan pengujian UI di IDE resmi mereka. Untuk Android, ini adalah Android Studio, dan untuk iOS, ini adalah Xcode.

Dokumentasi resmi sejauh ini merekomendasikan kerangka kerja khusus untuk pengujian. Dokumentasi resmi Android mencakup beberapa topik tentang Espresso, kerangka kerja pengujian Android UI. Demikian pula, Apple menyarankan menggunakan kerangka XCTest.

Dan jika Anda akan bekerja serius pada pengujian UI, Anda mungkin mengikuti saran ini, yang masuk akal karena Espresso dikelola oleh Google dan merupakan bagian dari Android Support Repository. Sangat mungkin bahwa Espresso akan mendukung semua fitur baru yang akan diperkenalkan Google untuk Android di masa mendatang. Anda bisa mengatakan hal yang sama tentang kerangka XCTest untuk iOS.

Namun, perlu diingat bahwa meskipun banyak manfaat dari pengujian otomatis, banyak pengembang tidak menulisnya sama sekali.

Setiap pengembang yang mengetahui otomatisasi pengujian, jauh di lubuk hatinya, tahu bahwa ini adalah ide yang bagus. Tapi, ketika harus duduk dan menulis tes ini, banyak pengembang mulai mempertanyakan apakah ini sepadan dengan waktu mereka, karena "sentuh tombol" secara manual ternyata menjadi operasi yang jauh lebih cepat daripada menulis kode yang akan "menyentuh tombol ini" secara otomatis. Terkadang, klien dan manajer, yang dengan sabar menunggu untuk mencoba aplikasi, juga tidak membantu.

Banyak pengembang, pada saat itu, memutuskan bahwa lebih baik terus mengerjakan fitur baru aplikasi daripada menulis tes UI otomatis untuk yang sudah ada.

Ketika aplikasi berkembang, menjadi lebih dan lebih memakan waktu untuk "menyentuh tombol-tombol ini" secara manual setiap kali Anda memperbarui aplikasi.

Tetapi bagaimana jika ada kerangka kerja yang membuat pengujian UI lebih mudah, dan tidak memberi Anda alasan untuk tidak menulis pengujian UI untuk aplikasi Anda?

Temui labu.

Calabash: Tes Penerimaan Otomatis untuk Aplikasi Seluler

Sekitar setahun yang lalu, saya mulai mencari kerangka pengujian yang akan mudah digunakan untuk orang-orang yang bukan pengembang perangkat lunak. Dan, saat itulah saya menemukan Calabash.

Kerangka kerja pengujian sumber terbuka ini, yang dikembangkan dan dikelola oleh tim Xamarin, berfungsi untuk Android dan iOS. Ini memungkinkan Anda menulis dan menjalankan tes penerimaan otomatis untuk aplikasi seluler.

Pengujian penerimaan biasanya dilakukan setelah pengujian sistem yang menentukan apakah aplikasi Anda memenuhi persyaratan bisnis. Mengingat bahwa ini beroperasi pada tingkat UI, ini berfungsi dengan baik sebagai kerangka kerja otomatisasi pengujian UI pilihan kami.

Calabash dapat berinteraksi dengan aplikasi Anda seperti yang dilakukan Espresso atau XCTest. Namun, apa yang membuat Calabash pilihan yang sangat baik di sini adalah dukungannya untuk Mentimun.

Mentimun adalah alat yang dapat menjalankan tes otomatis yang ditulis dalam bahasa Inggris biasa (jika Anda mau, Anda dapat menyesuaikannya untuk menggunakan bahasa sederhana lainnya). Jadi untuk menulis tes otomatis pada Cucumber, penguji tidak perlu tahu Java, Objective-C, atau bahasa pemrograman lainnya.

Apa yang Membuat Calabash Centang?

Kerangka kerja Calabash terdiri dari pustaka yang dapat berinteraksi dengan aplikasi Android dan iOS. Itu dapat dijalankan di perangkat nyata. Sehingga dapat melakukan hal-hal yang tester lakukan secara manual.

Ada dua proyek berbeda di GitHub yang memungkinkan Calabash:

  • labu-android - untuk Android

  • calabash-ios - untuk iOS

Calabash dapat bekerja dengan kerangka pengujian berbasis Ruby apa pun. Pada artikel ini, kita akan membahas Mentimun - cara paling populer dan nyaman untuk menulis tes untuk Calabash.

Sebelum melanjutkan, jika Anda ingin mencoba Calabash sambil mengikuti artikel selanjutnya, pastikan Anda telah menginstal Ruby di mesin Anda. Anda dapat menemukan petunjuk rinci instalasi di sini.

Selanjutnya, instal Calabash untuk platform favorit Anda dengan mengikuti tautan GitHub di atas.

Menulis Tes Pertama Anda di Calabash

Menulis tes di Calabash cukup mudah. Mari kita lihat bagaimana pengujian sederhana untuk aplikasi iOS terlihat:

 Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "tstuser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Username you entered is incorrect" Scenario: Successful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "testeruser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Hey testeruser!"

Di sini, aplikasi sedang diuji dengan nama pengguna dan kata sandi yang salah, dan kemudian diuji dengan nama pengguna dan kata sandi yang benar. Pengujian mengharapkan aplikasi gagal login untuk skenario pertama, tetapi berhasil di skenario kedua.

Anda dapat membuat skenario sebanyak yang Anda butuhkan, dan yang perlu Anda lakukan hanyalah memecah langkah-langkah/petunjuk menjadi kalimat bahasa Inggris sederhana. Sama seperti Anda akan menulis cerita!

Siapa pun yang tahu tentang pengembangan yang digerakkan oleh perilaku (BDD) pasti sudah terbiasa dengan ini.

Bagaimana Cara Kerja Labu?

Untuk melihat apa yang terjadi di balik langkah-langkah yang digunakan penguji, Anda dapat membuka proyek di GitHub dan memeriksa file berikut:

 calabash-cucumber/features/step_definitions/calabash_steps.rb

Mari kita lihat definisi dari langkah berikut:

 When I enter "testeruser" into the "Username" field
 Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name| touch("textField marked: '#{field_name}'") wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Cuplikan kecil kode Ruby ini mencari bidang tertentu, menyentuhnya, menunggu keyboard muncul, mengetik teks dari variabel text_to_type , dan menunggu sebentar sebelum beralih ke langkah berikutnya.

Kata pertama dari langkah tersebut dapat berupa “Diberikan”, “Kapan”, “Kemudian”, “Dan”, atau “Tetapi”. Tidak masalah kata kunci apa yang akan Anda gunakan. Anda dapat menggunakan salah satu dari mereka untuk membuat cerita lebih jelas.

Bagaimana Menambahkan Langkah Kustom

Jika Anda membutuhkan langkah yang belum diterapkan di Calabash, Anda dapat menulisnya sendiri. Sintaksnya persis sama dengan langkah-langkah yang sudah ditentukan sebelumnya.

Misalnya, jika penguji perlu mengakses bidang input dengan placeholder, alih-alih nama bidang:

 Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder| touch("textField placeholder:'#{placeholder}'") wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Definisi langkah ini hampir sama seperti yang sebelumnya, tetapi Anda mengakses bidang dengan placeholder, bukan nama bidang. Mengingat tampilan aplikasi Anda, ini dapat membuat segalanya lebih mudah bagi penguji.

Dan itu juga mudah bagi pengembang. Pengembang menerapkan langkah sekali, dan kemudian penguji menggunakannya kapan pun mereka membutuhkannya. Selain itu, Anda tidak perlu tahu banyak tentang Ruby untuk menerapkan langkah kustom Anda sendiri.

Anda dapat menemukan fungsi Ruby yang dapat Anda gunakan, di sini:

http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

Awan Uji Xamarin

Ada satu tantangan lagi saat menguji aplikasi mobile. Anda harus mengujinya di sebanyak mungkin perangkat, karena ada begitu banyak perangkat dan begitu banyak versi OS.

Di sinilah Xamarin Test Cloud sangat membantu. Ada sekitar 2.000 perangkat nyata di cloud dan kabar baiknya adalah ia mendukung tes Calabash.

Tes Calabash yang sama yang membantu Anda menghemat waktu dengan menyelamatkan Anda dari melakukan pekerjaan berulang sekarang dapat digunakan untuk menguji aplikasi Anda di banyak perangkat nyata.

Mulai Menulis Tes UI

Apakah Calabash adalah solusi pengujian yang dibutuhkan aplikasi Anda, dengan keunggulan yang dibawanya, Calabash tidak memberikan alasan untuk menulis pengujian UI otomatis untuk aplikasi seluler Anda. Calabash mungkin gagal jika aplikasi Anda sangat bergantung pada fitur perangkat tertentu (misalnya, kamera), tetapi masih membuat tes menulis untuk sebagian besar aplikasi menjadi lebih mudah.