Otomatisasi uji membantu menyelesaikan beberapa masalah sekaligus - termasuk ketika menyangkut aplikasi seluler. Alih-alih melakukan prosedur padat karya rutin secara manual, spesialis dapat mendelegasikan sebagian besar dari mereka ke dalam kerangka kerja. Otomasi menyederhanakan pengujian dan membantu mempercepat pengujian regresi, dan juga memungkinkan untuk menggunakan jenis pengujian yang sebelumnya tidak dapat diakses.
Kami akan membandingkan beberapa alat yang telah memantapkan diri di pasar dan terus berkembang. Pengetahuan ini akan membantu Anda memilih solusi mana yang akan digunakan untuk menguji aplikasi seluler tertentu.

Artikel ini tidak mungkin membuka cakrawala baru bagi para profesional, tetapi mungkin bermanfaat bagi pemula yang telah memutuskan untuk mempelajari dasar-dasar pengujian seluler, dan sampai batas tertentu, spesialis tingkat menengah.
Klasifikasi alat
Hal pertama yang harus Anda bangun adalah platform tempat aplikasi berjalan. Berdasarkan ini, kami mengklasifikasikan daftar alat sebagai berikut:
AndroidiOSUniversal- Detoksifikasi
- Appium
- Ranorex
- TestComplete Mobile
Otomasi Tes Aplikasi Android
Pengotomasi UI
Alat pengujian yang kuat dengan integrasi eksternal yang canggih. Ini berarti bahwa kerangka kerja ini tidak hanya memungkinkan Anda untuk menguji aplikasi itu sendiri, tetapi juga dapat "berkomunikasi" dengan sistem operasi dan aplikasi lain - misalnya, mengaktifkan dan menonaktifkan Wi-Fi, GPS, membuka menu pengaturan selama pengujian dan membuat interaksi eksternal lainnya.
Tujuan UI Automator adalah pengujian kotak hitam. Ini berarti bahwa analisis dilakukan dari posisi pengguna eksternal tanpa akses ke kode.
Fitur utama meliputi:
- UI Automator Viewer untuk melacak dan menganalisis komponen yang ditampilkan di layar selama pengujian. Ini memberikan informasi tentang elemen dan sifat-sifatnya, yang membuatnya lebih mudah untuk membuat tes yang lebih relevan.
- API untuk mendapatkan informasi tentang status perangkat dan menjalankan proses di atasnya.
- API Automator UI untuk pengujian lintas platform.
Tautan ke dokumentasi .
Espresso
Alat yang lebih ringan daripada UI Automator, tidak cocok untuk berinteraksi dengan aplikasi eksternal, tetapi nyaman untuk menguji kotak putih dengan akses ke kode sumber aplikasi tertentu atau menguji kotak abu-abu, dengan yang memiliki akses ke beberapa proses dan struktur internal.
Namun, Espresso menonjol dengan API yang kuat
https://github.com/hamcrest . Antarmuka menambahkan metode yang nyaman untuk pemeriksaan autotests, misalnya:
assert_that (1, less_or_equal (2)). Untuk menguji tampilan web, metode
khusus digunakan.
UI Automator dan Espresso saling melengkapi dan dapat digunakan dalam kombinasi dalam proyek yang sama.
Tautan ke dokumentasi .
Otomasi Uji untuk Aplikasi iOS
XCUITest
Alat untuk pengujian kotak hitam tanpa mengakses kode aplikasi. Ini hanya berfungsi dengan produk asli - sayangnya, tes lintas-aplikasi tidak akan berfungsi.
Di sisi lain, sifat asli kerangka kerja ini adalah keuntungan dari sudut pandang bahwa ketika menggunakan XCUITest, tingkat saling pengertian pengembang dan penguji berada pada tingkat yang jauh lebih tinggi daripada dalam kasus di mana satu dan yang lainnya menggunakan bahasa yang berbeda.
Tambahan yang berguna adalah perekam uji, yang memungkinkan untuk menulis tes dengan merekam tindakan dalam aplikasi bahkan kepada mereka yang tidak bekerja dengan kode.
Alat ini memungkinkan Anda untuk menghindari kesalahan umum dan manipulasi dengan kode yang tidak perlu, tidak dapat diakses oleh pengguna. Namun, XCUITest juga memiliki beberapa kelemahan.
XCUITest, tidak seperti Espresso, bekerja di utas terpisah, selama pengujian Anda perlu menunggu kemunculan elemen dan parameter tertentu. Keadaan aplikasi saat ini tidak terbaca, dan keterlambatan memperbarui data dapat menyebabkan ketidakmampuan untuk mendeteksi elemen yang diminta.
Dokumentasi XCTest dan XCUITest .
Earlgrey
Penekanan EarlGrey adalah pada mereproduksi pengalaman pengguna. Selama elemen-elemen pada layar tidak disajikan secara visual, simulasi bekerja dengan aplikasi tidak akan dimulai.
Pada saat yang sama, sejumlah fasilitas dan keunggulan dicatat. Pertama-tama, para ahli menyukai cara kerangka kerja menyinkronkan permintaan, UI, dan utas. Tidak perlu menunggu dan menunggu.
Kedua, seperti yang telah disebutkan, perhatian khusus diberikan untuk melacak visibilitas elemen. Alat ini memiliki lapisan tambahan untuk memeriksa pemuatan antarmuka dan mereproduksi gerakan pengguna - geser, klik - langsung di tingkat peristiwa aplikasi.
Tautan repositori:
github.com/google/EarlGrey dan
google.imtqy.com/EarlGrey .
Alat universal
Alat universal (atau "kombinasikan") memungkinkan Anda untuk tidak membatasi pilihan hanya untuk Android atau iOS, tetapi untuk bekerja dengan kedua platform.
Alat tersebut berlaku untuk menguji aplikasi dari jenis berikut:
- Aplikasi asli (aplikasi asli) - ditulis langsung di bawah Android, iOS dan Windows SDK.
- Aplikasi web seluler - Tersedia melalui browser seluler, seperti Safari atau Chrome.
- Aplikasi hibrid (aplikasi hibrid) - pengguna bekerja dengan shell aplikasi web, yaitu, berinteraksi dengan konten web melalui antarmuka aplikasi asli.
Detoksifikasi
Menurut pendapat kami, Detox nyaman untuk aplikasi yang ditulis dalam React Native. Tes ditulis dalam JavaScript, sementara aplikasi iOS dan Android dihasilkan dari kode JavaScript yang sama dan semirip mungkin. Ini memungkinkan Anda untuk menggunakan tes yang sama untuk kedua platform.
Fitur utama Detox adalah pengujian kotak abu-abu. Dalam hal ini, kerangka kerja memiliki beberapa akses ke mekanisme internal, yang memungkinkan Anda untuk mengkorelasikan perilaku eksternal aplikasi dengan apa yang terjadi di tingkat yang lebih dalam.
Detox dapat mengakses memori dan melacak proses yang sedang berjalan. Prinsip kotak abu-abu membantu memerangi ketidakstabilan, yang tercermin dalam fakta bahwa selama pengujian ujung-ke-ujung:
- Tes dapat crash secara acak bahkan tanpa perubahan kode;
- Hasilnya tidak deterministik - karena banyaknya fungsi dan proses heterogen dalam aplikasi, hasil dari setiap peluncuran dapat berbeda satu sama lain secara tak terduga.
- Penguji dipaksa untuk melakukan sinkronisasi secara manual, yang mensyaratkan penurunan keandalan dan kualitas hasil.
Anehnya, "kotak abu-abu" tidak hanya menunjukkan stabilitas yang lebih baik, tetapi juga kecepatan yang lebih tinggi dibandingkan dengan "kotak hitam". Menghindari semua jenis jeda, tunggu sampai, kotak abu-abu bisa 5-10 kali lebih cepat.
Detox tidak perlu WebDriver, bekerja dengan driver asli melalui JSON. Ini menggunakan metode asli langsung di perangkat. Di dalam kerangka ini, EarlGrey untuk iOS dan Espresso untuk Android digunakan.
Kerangka kerjanya bekerja dengan baik emulator dan perangkat fisik.
Tautan ke dokumentasi .
Appium
Keuntungan dari Appium adalah memungkinkan untuk menulis tes untuk setiap platform menggunakan API tunggal, tanpa harus mengubah aplikasi menjadi bentuk khusus apa pun yang kompatibel dengan kerangka kerja.
Saat menguji, kerangka kerja dari vendor digunakan - yaitu, Anda bekerja dengan aplikasi asli. Untuk Android 4.2+, masing-masing, UiAutomator / UiAutomator2 digunakan, dan untuk iOS 9.3+ - XCUITest. WebDriver (alias Selenium WebDriver) digunakan sebagai kerangka kerja kerangka kerja.
Prinsip Appium:
- Tidak perlu mengkompilasi ulang aplikasi atau memodifikasinya untuk pengujian otomatis.
- Tidak perlu dilampirkan ke satu bahasa atau kerangka kerja.
- Tidak perlu menemukan kembali roda ketika menyangkut API otomatisasi.
Menggunakan Appium dibenarkan ketika Anda membutuhkan alat untuk mengotomatisasi pengujian pada beberapa platform sekaligus. Ini berguna jika Anda memiliki spesialis dengan pengalaman dalam menguji aplikasi web, tetapi tidak memiliki pengalaman dalam mengotomatisasi pengujian aplikasi seluler.
Secara umum, ini adalah alat yang fleksibel yang dapat dimodifikasi agar sesuai dengan kebutuhan proyek tanpa perlu beradaptasi dengan seperangkat bahasa pengembangan yang terbatas.
Tautan ke dokumentasi .
Ranorex
Alat komprehensif berbayar untuk menguji aplikasi desktop, seluler, dan web. Ini memungkinkan pengujian baik menggunakan pemrograman maupun tanpa menggunakan skrip sama sekali. Memberikan kemampuan untuk menguji tidak hanya melalui emulator, tetapi juga pada perangkat langsung.
Alat ini memungkinkan Anda untuk membuat dan mengonfigurasi tes, serta mengelolanya secara terpusat. Anda dapat membuat tes di pusat kontrol dan menjalankannya di berbagai lingkungan eksternal dan pada perangkat apa pun.
Mudah diintegrasikan dengan lingkungan CI Anda yang ada: dengan sistem manajemen aplikasi seperti Jira dan TFS, serta sistem kontrol versi seperti Git dan SVN.
Ranorex memiliki pengujian berbasis data dengan pemuatan data dari SQL, CSV, dan Excel.
Alat ini cocok untuk perangkat apa pun, mendukung pengujian paralel pada masing-masing perangkat.
Ini menggabungkan ketiga pendekatan pengujian: kotak hitam, kotak putih dan kotak abu-abu.
Tautan ke dokumentasi .
Testcomplete
Lingkungan berbayar untuk pengujian otomatisasi aplikasi seluler, web, dan desktop. Ini mendukung Android dan iOS, dan dalam konteks jenis aplikasi: asli, aplikasi web dan hybrid.
Berfokus terutama pada pengujian fungsional dan unit, alat ini juga menyediakan kemampuan untuk melakukan banyak jenis pengujian lainnya:
- Regresi;
- Pengujian berbasis data;
- Pengujian terdistribusi dan banyak lagi.
Ada Perekam di TestComplete - di dalamnya tes dibuat dengan merekam tindakan dan mengatur perintah di editor. Kemudian mereka dapat diluncurkan baik secara langsung di alat itu sendiri atau diekspor ke aplikasi pihak ketiga.
Alat ini mengenali objek dan kontrol dengan menawarkan perintah khusus untuk meniru interaksi pengguna dengan mereka. Terintegrasi dengan Jenkins, Git, dan Jira, memungkinkan Anda untuk menjalankan pengujian tanpa henti yang berkelanjutan.
Tautan ke dokumentasi .
Untuk meringkas
Saat berencana menguji aplikasi seluler ini atau itu, perhatikan alat yang tercantum di atas. Masing-masing memiliki karakteristik sendiri, dan kadang-kadang keterbatasan.
Mari kita lihat sebuah contoh. Jika Anda dihadapkan dengan tugas menguji aplikasi kecil dalam waktu singkat, pertama-tama Anda perlu mempertimbangkan faktor-faktor akun seperti jenis aplikasi yang sedang diuji dan pengalaman spesialis Anda. Jika pengembang menulis tes, lebih baik memilih bahasa asli dan alat untuk platformnya (lihat tabel di bawah). Jika tes dilakukan oleh spesialis SDET yang terbiasa dengan bahasa lain (Java, JavaScript, Python, dll.) Dan telah bekerja dengan Selenium, akan lebih mudah untuk menggunakan Appium. Jika tidak ada SDET berpengalaman dalam tim, dan para ahli QA akan menulis tes, lebih baik untuk memilih kerangka kerja berbayar, karena mereka memiliki utilitas untuk merekam tes dan dukungan teknis yang lebih stabil daripada kerangka kerja sumber terbuka.
Dari latihan kami:
Kami bekerja dengan satu toko online, yang memiliki dua aplikasi seluler - di iOS dan Android. Untuk menguji skenario pengguna utama dengan tes, kami memilih Appium karena beberapa alasan:
- cross-platform, kemampuan untuk menggunakan kembali sebagian kode
- cocok untuk tes ujung ke ujung, dapat bekerja dengan web
- kehadiran di tim spesialis yang sangat menyadari Selenium, yang berfungsi sebagai kerangka kerangka kerja ini.
Hasilnya, Appium sepenuhnya memenuhi harapan, kami berhasil melakukan tes untuk iOS dan Android. Harus diingat bahwa pengujian end-to-end dengan Appium seperti itu tidak dilakukan pada setiap permintaan penggabungan, karena membutuhkan banyak waktu.Sebagai kesimpulan, kami memberikan kepada Anda sebuah tabel yang akan membantu Anda memilih alat untuk proyek Anda. Perlu dicatat bahwa dalam beberapa kasus, pembagian dalam tabel bersyarat. Di suatu tempat untuk kesederhanaan, generalisasi dibuat dan hanya parameter paling dasar yang diberikan. Alat pengujian terus berkembang, jadi ketika memilih kerangka kerja, penting untuk memeriksa dokumentasi saat ini.

Terima kasih atas perhatian anda!