UI/Application Exerciser Monkey

Monkey adalah program yang berjalan pada emulator atau perangkat dan menghasilkan aliran data pseudo-random dari peristiwa pengguna seperti klik, sentuhan, atau gestur, serta sejumlah peristiwa level sistem. Anda dapat menggunakan Monkey untuk melakukan stress test aplikasi yang sedang Anda kembangkan, secara acak tetapi berulang.

Ringkasan

Monkey adalah alat command line yang dapat Anda jalankan pada instance emulator atau perangkat apa pun. Alat ini mengirimkan aliran pseudo-random peristiwa pengguna ke dalam sistem, yang bertindak sebagai stress test pada software aplikasi yang Anda kembangkan.

Monkey menyertakan sejumlah opsi, tetapi opsi tersebut dapat dikelompokkan menjadi empat kategori utama:

  • Opsi konfigurasi dasar, seperti menyetel sejumlah peristiwa untuk dicoba.
  • Batasan operasional, seperti membatasi pengujian ke satu paket.
  • Jenis peristiwa dan frekuensi.
  • Opsi proses debug.

Ketika Monkey dijalankan, Monkey menghasilkan peristiwa dan mengirimkannya ke sistem. Monkey juga mengawasi sistem yang sedang diuji dan mencari tiga ketentuan berikut, yang diberi perlakuan khusus:

  • Jika Anda membatasi Monkey untuk dijalankan dalam satu atau beberapa paket tertentu, Monkey akan mengawasi upaya untuk menavigasi ke paket lain, lalu memblokirnya.
  • Jika aplikasi Anda error atau menerima segala jenis pengecualian yang tidak tertangani, Monkey akan berhenti dan melaporkan error tersebut.
  • Jika aplikasi Anda menghasilkan error aplikasi tidak merespons, Monkey akan berhenti dan melaporkan error tersebut.

Bergantung pada level verbositas yang telah dipilih, Anda juga akan melihat laporan progres Monkey dan peristiwa yang dihasilkannya.

Penggunaan dasar Monkey

Anda dapat meluncurkan Monkey menggunakan command line pada mesin pengembangan atau dari skrip. Karena Monkey berjalan di lingkungan emulator/perangkat, Anda harus meluncurkannya dari shell di lingkungan tersebut. Anda dapat melakukannya dengan menambahkan awalan adb shell ke setiap perintah, atau dengan memasukkan shell dan perintah Monkey secara langsung.

Sintaksis dasarnya adalah:

$ adb shell monkey [options] <event-count>

Dengan tidak adanya opsi yang ditentukan, Monkey akan diluncurkan dalam mode tenang (non-panjang), dan akan mengirimkan peristiwa ke setiap (dan semua) paket yang terinstal pada target Anda. Berikut adalah command line yang lebih umum, yang akan meluncurkan aplikasi Anda dan mengirim 500 peristiwa pseudo-random ke aplikasi:

$ adb shell monkey -p your.package.name -v 500

Referensi opsi perintah

Tabel berikut mencantumkan semua opsi yang dapat Anda sertakan pada command line Monkey.

Kategori Opsi Deskripsi
Umum --help Mencetak panduan penggunaan sederhana.
-v Setiap -v pada command line akan menambah level panjang. Level 0 (default) memberikan sedikit informasi di luar notifikasi startup, penyelesaian pengujian, dan hasil akhir. Level 1 memberikan detail selengkapnya tentang pengujian saat dijalankan, seperti peristiwa individual yang dikirim ke aktivitas Anda. Level 2 memberikan informasi penyiapan yang lebih terperinci seperti aktivitas yang dipilih atau tidak dipilih untuk pengujian.
Peristiwa -s <seed> Nilai seed untuk generator angka pseudo-random. Jika Anda menjalankan ulang Monkey dengan nilai seed yang sama, maka Monkey akan menghasilkan urutan peristiwa yang sama.
--throttle <milliseconds> Menyisipkan penundaan tetap antarperistiwa. Anda dapat menggunakan opsi ini untuk memperlambat Monkey. Jika tidak ditentukan, penundaan tidak akan terjadi dan peristiwa dibuat secepat mungkin.
--pct-touch <percent> Menyesuaikan persentase peristiwa sentuh. (Peristiwa sentuh adalah peristiwa down-up dalam satu tempat di layar.)
--pct-motion <percent> Menyesuaikan persentase peristiwa gerakan. (Peristiwa gerakan terdiri dari peristiwa bawah di suatu tempat di layar, serangkaian gerakan pseudo-random, dan peristiwa atas.)
--pct-trackball <percent> Menyesuaikan persentase peristiwa trackball. (Peristiwa trackball terdiri dari satu atau beberapa gerakan acak, terkadang diikuti dengan klik.)
--pct-nav <percent> Menyesuaikan persentase peristiwa navigasi "dasar". (Peristiwa navigasi terdiri dari atas/bawah/kiri/kanan, sebagai input dari perangkat input direksional.)
--pct-majornav <percent> Menyesuaikan persentase peristiwa navigasi "utama". (Ini adalah peristiwa navigasi yang biasanya akan menyebabkan tindakan dalam UI Anda, seperti tombol tengah di mouse 5 arah, tombol kembali, atau tombol menu.)
--pct-syskeys <percent> Menyesuaikan persentase peristiwa tombol "sistem". (Ini adalah tombol yang umumnya dikhususkan untuk digunakan oleh sistem, seperti Beranda, Kembali, Mulai Panggilan, Akhiri Panggilan, atau Kontrol volume.)
--pct-appswitch <percent> Menyesuaikan persentase peluncuran aktivitas. Pada interval acak, Monkey akan mengeluarkan panggilan startActivity(), sebagai cara untuk memaksimalkan cakupan semua aktivitas dalam paket Anda.
--pct-anyevent <percent> Menyesuaikan persentase jenis peristiwa lainnya. Ini adalah penampung semua jenis peristiwa lainnya, seperti tombol yang ditekan, tombol lain yang jarang digunakan pada perangkat, dan sebagainya.
Batasan -p <allowed-package-name> Jika Anda menentukan satu atau beberapa paket dengan cara ini, Monkey hanya akan mengizinkan sistem untuk mengunjungi aktivitas dalam paket tersebut. Jika aplikasi Anda memerlukan akses ke aktivitas dalam paket lain (misalnya untuk memilih kontak) Anda harus menentukan paket itu juga. Jika Anda tidak menentukan paket apa pun, Monkey akan mengizinkan sistem meluncurkan aktivitas dalam semua paket. Untuk menentukan beberapa paket, gunakan opsi -p beberapa kali — satu opsi -p per paket.
-c <main-category> Jika Anda menentukan satu atau beberapa kategori dengan cara ini, Monkey hanya akan mengizinkan sistem untuk membuka aktivitas yang terdaftar dengan salah satu kategori yang ditentukan. Jika Anda tidak menentukan kategori apa pun, Monkey akan memilih aktivitas yang tercantum dengan kategori Intent.CATEGORY_LAUNCHER atau Intent.CATEGORY_MONKEY. Untuk menentukan beberapa kategori, gunakan opsi -c beberapa kali — satu opsi -c per kategori.
Proses Debug --dbg-no-events Jika ditentukan, Monkey akan melakukan peluncuran awal ke dalam aktivitas pengujian, tetapi tidak akan menghasilkan peristiwa lebih lanjut. Untuk hasil terbaik, kombinasikan dengan -v, satu atau beberapa batasan paket, dan non-zero throttle agar Monkey dapat berjalan selama 30 detik atau lebih. Tindakan ini memberikan lingkungan tempat Anda dapat memantau transisi paket yang dipanggil oleh aplikasi Anda.
--hprof Jika ditentukan, opsi ini akan membuat laporan pembuatan profil tepat sebelum dan sesudah urutan peristiwa Monkey. Tindakan ini akan menghasilkan file berukuran besar (~5 MB) dalam data/misc, jadi gunakan dengan hati-hati. Untuk informasi tentang menganalisis laporan pembuatan profil, lihat Membuat profil performa aplikasi Anda.
--ignore-crashes Umumnya, Monkey akan berhenti saat aplikasi mengalami error atau mengalami segala jenis pengecualian yang tidak tertangani. Jika Anda menentukan opsi ini, Monkey akan terus mengirim peristiwa ke sistem, hingga hitungannya selesai.
--ignore-timeouts Umumnya, Monkey akan berhenti saat aplikasi mengalami segala jenis error waktu tunggu seperti dialog "Aplikasi Tidak Merespons". Jika Anda menentukan opsi ini, Monkey akan terus mengirim peristiwa ke sistem, hingga hitungannya selesai.
--ignore-security-exceptions Umumnya, Monkey akan berhenti ketika aplikasi mengalami segala jenis error izin, misalnya jika aplikasi mencoba meluncurkan suatu aktivitas yang memerlukan izin tertentu. Jika Anda menentukan opsi ini, Monkey akan terus mengirim peristiwa ke sistem, hingga hitungannya selesai.
--kill-process-after-error Umumnya, saat Monkey berhenti karena error, aplikasi yang gagal dihentikan akan dibiarkan berjalan. Jika opsi ini ditentukan, Monkey akan memberi sinyal ke sistem untuk menghentikan proses di tempat terjadinya error. Perlu diperhatikan bahwa, dalam penyelesaian normal (berhasil), proses yang diluncurkan tidak dihentikan, dan perangkat dibiarkan dalam status terakhir setelah peristiwa akhir.
--monitor-native-crashes Memantau dan melaporkan error yang terjadi dalam kode native sistem Android. Jika --kill-process-after-error ditentukan, sistem akan berhenti.
--wait-dbg Menghentikan dijalankannya Monkey sampai debugger terpasang.