Airtest IDE - cara baru dalam pengujian otomatisasi game mobile?

Hari ini saya ingin memberi tahu Anda tentang alat open-source yang cukup baru untuk pengujian otomatis yang disebut Airtest . Di masa depan saya akan membuat beberapa artikel lagi dengan cerita terperinci tentang elemen-elemen individual dari toolkit ini dan bagaimana cara bekerja dengannya, tetapi sekarang saya memiliki tujuan untuk memperkenalkan Anda kepadanya dan memberikan gambaran umum tentangnya.


Ini adalah yang pertama dari tiga artikel. Bagian kedua menjelaskan kerangka kerja untuk pengenalan gambar (Pengenalan Gambar) - AirTest , dan bagian ketiga dan terakhir dikhususkan untuk Poco - kerangka kerja otomatisasi UI dengan menulis kode .


AirTest IDE dikembangkan oleh NetEase dan ditujukan untuk aplikasi "sulit-untuk-otomatis", seperti, misalnya, game. Sebenarnya mereka adalah fokus utama pengembang, meskipun ini tidak berhenti menggunakan AirTest untuk aplikasi lain.


AirTest IDE berjalan pada Windows, MacOS X dan Linux dan berisi 2 kerangka kerja: AirTest dan Poco. Perkembangan ini dipresentasikan oleh Xin Liu di Android Game Developer Summit 2018 . Python 2.7 dan Python 3.3+ digunakan untuk menulis tes. Hal-hal penting seperti dukungan untuk menjalankan tes segera pada sejumlah besar perangkat, kode sumber terbuka dan aplikasi gratis, serta tes tertulis yang mudah - ini adalah kelebihan yang disoroti oleh pengembang. Aplikasi ini dapat digunakan pada Windows dan MacOS dan memungkinkan Anda untuk mengotomatiskan aplikasi dari OS berikut: Windows, iOS, Android.


Proyek AirTest di GitHub berisi 4 proyek: Airtest , Poco , iOS-Tangent , multi-device-runner .
Perlu juga disebutkan bahwa NetEase menyediakan farm perangkat fisiknya sendiri untuk pengujian otomatis yang disebut AirLab .


gambar

Secara singkat tentang kerangka kerja.


Airtest adalah kerangka kerja lintas platform pengenalan gambar untuk game dan aplikasi seluler berdasarkan kepemilikan gambar . AirTest IDE memungkinkan Anda untuk berinteraksi dengan aplikasi menggunakan perintah berikut:
sentuh, tunggu, geser, ada, teks, keyevent, snapshot, sleep, assert_exists, assert_not_exists, assert_equal, assert_not_equal. Saya akan berbicara tentang fitur dan parameter perintah dalam artikel terpisah yang ditujukan untuk studi yang lebih rinci tentang frame AirTest dan Poco. Sekarang perlu disebutkan bahwa perintah keyevent bertanggung jawab untuk "menekan tombol fisik" perangkat, seperti Home, Power, Menu, Back. Saat menggunakan sebagian besar perintah, pengguna diminta untuk menyorot bagian layar perangkat yang berfungsi, tangkapan layar yang akan digunakan untuk perintah yang sesuai (sentuh, geser, tegaskan, dll.).


gambar

Keuntungan Airtest yang bisa saya sorot setelah bekerja:


  1. Menulis kode dengan cepat dan jelas. Semuanya dilakukan, dalam praktiknya, dalam mode otomatis, Anda hanya perlu memilih parameter yang diperlukan, menyesuaikan timing dan berhati-hati dengan pilihan gambar.
  2. Definisi tepat dari gambar, yang digunakan dalam kode, pada perangkat yang aktif bekerja. Plus, laporan menunjukkan persentase kebetulan (perbandingan) dari gambar yang digunakan dalam kode dan gambar dari layar perangkat yang berfungsi.
  3. Berbicara tentang laporan. Setelah setiap peluncuran, Anda dapat membuat laporan menggunakan pintasan keyboard Ctrl \ Cmd + L. Laporan praktis memberikan informasi seperti: jenis menegaskan hasil mereka, serta setiap langkah uji disorot dalam sub-bagian terpisah dengan informasi tentang di mana AirTest diklik, di mana ia mengharapkan gambar, persentase gambar yang cocok, dll.
  4. Setelah Anda menulis kode, Anda dapat menggunakannya pada perangkat apa pun.
  5. Multithreading: sambungkan beberapa perangkat uji dan jalankan secara paralel.

Cons Airtest, yang dapat saya sorot setelah bekerja:


  1. Jika dalam prosesnya terdapat elemen-elemen yang secara visual terlihat sama, misalnya slider, tombol, dll. Maka dengan probabilitas tinggi AirTest tidak akan mengerti kontrol mana yang ingin Anda gunakan. Ini akan ditunjukkan dalam kesalahan yang sesuai. Tetapi minus ini mudah ditiadakan dengan menggunakan kerangka kerja kedua (Poco), yang akan dibahas di bawah ini.
  2. Perbandingan gambar (dari kode dan yang sebenarnya di layar) terjadi dalam warna hitam dan putih. Perlu dipertimbangkan jika Anda penting, misalnya, penampilan visual karakter (warnanya, pakaian yang berbeda, dll). Jika karakter secara visual berbeda, tetapi mereka ditampilkan di layar dengan cara yang sama (satu pose, dll.), Maka cek kemungkinan besar akan berhasil. Opsi pengenalan gambar memiliki tanda centang "rgb" yang dapat Anda gunakan, tetapi tidak berfungsi dengan baik jika Anda memiliki gambar kecil.
  3. Anda tidak dapat "membekukan" layar saat menggunakan aplikasi untuk secara akurat mengambil tangkapan layar yang Anda butuhkan. Dari waktu ke waktu Anda perlu "menangkap" bingkai yang Anda butuhkan.
  4. Karena aplikasi dalam versi beta terbuka, maka Anda mungkin menghadapi berbagai kesalahan atau ketidaktepatan yang mengganggu, misalnya, seperti ketidakmampuan untuk mengubah ukuran jendela dengan aplikasi bawaan pada Windows. Penulis sekarang memperbarui IDE AirTest setiap beberapa bulan sekali, dan saya berharap kelalaian ini akan segera diperbaiki.

Poco adalah kerangka kerja universal untuk mengotomatiskan antarmuka pengguna (UI), yang menyediakan API yang kuat terlepas dari mesin (game). Mereka, pada gilirannya, mengambil hierarki elemen UI saat runtime. Berkat ini, pengguna dapat "mencapai" seluruh hierarki elemen pada halaman saat ini dengan beberapa klik pada elemen yang ia butuhkan, dll. Kerangka kerja ini juga memungkinkan Anda untuk "membekukan" layar saat ini untuk menulis kode berdasarkan hirarki elemen dari jendela saat ini. Poco dirancang untuk membantu AirTest memahami elemen UI seperti apa yang dibicarakan, tetapi tidak ada yang mengganggu Anda untuk menulis semua tes hanya dengan menggunakan kerangka ini.
Semua tes ditulis dalam Python. Implementasi perintah dapat ditemukan di API yang sesuai: modul airtest.core.api , paket airtest.core.android , paket airtest.core.ios , paket airtest.core.win


gambar


Keuntungan Poco yang dapat saya soroti setelah bekerja:


  1. Ada dukungan untuk sejumlah mesin gim penting, termasuk Unity3D, cocos2dx-js, cocos2dx-lua, mesin internal NetEase, serta dukungan untuk aplikasi Android / iOS asli. Jika Anda ingin menggunakan mesin yang tidak ada dalam daftar "yang didukung", maka Anda dapat menulis sendiri dengan mengikuti instruksi yang sesuai . Dalam dokumentasi resmi disebutkan ada Unreal Engine, tetapi sejauh ini, semuanya terbatas pada frasa "Segera hadir".
  2. Hirarki elemen UI di layar kembali dalam waktu nyata.
  3. Mulai cepat dan jalankan tes.
  4. Seperti di AirTest, saya menulis kode sekali - menggunakannya di mana-mana. Dukungan Python 2.7 dan 3.3+
  5. Dimungkinkan untuk menghubungkan perpustakaan eksternal ke proyek Anda
  6. Dilihat oleh dokumentasi, ada dukungan untuk GPS, accelerometer dan sensor gyro, serta dukungan untuk mode tampilan potret dan lansekap.

Kontra Poco yang bisa saya sorot setelah bekerja:


  1. Selama bekerja di Windows 7 saya tidak menemukan masalah mendasar. yang akan mengganggu pekerjaan penuh, tetapi mereka, saat ini, adalah ketika bekerja dengan Windows 10. Hal utama adalah pergerakan objek yang salah (perintah swipe) dalam beberapa kasus. Sebagai contoh, saya menunjukkan objek yang akan dipindahkan dan koordinat dari objek kedua, yang merupakan titik akhir. Dalam kasus yang jarang terjadi ini, Poco merindukan lokasi akhir, tetapi laporan menunjukkan data perpindahan yang benar (vektor) dan langkah tersebut dianggap berhasil.
  2. Saat Anda memilih beberapa elemen dengan tata letak besar (tata letak), pemilihan mungkin tumpang tindih jendela Poco Assistant dan Anda tidak akan dapat memilih elemen lain sampai pemilihan dihapus dari yang sekarang. Untuk menghapus pilihan, Anda dapat menggunakan pintasan keyboard Alt + F4

Untuk melengkapi gambar, perlu disebutkan bahwa Airtest IDE memiliki plug-in Selenium sendiri, yang dengannya Anda dapat mengotomatiskan proyek web Anda, tetapi hanya menggunakan browser Chrome. Sisanya, saat ini, tidak didukung. Secara pribadi, saya belum bekerja dengannya, jadi saya tidak bisa mengatakan tentang pekerjaannya, tetapi tidak mungkin untuk merindukannya dalam uraian singkat ini.


gambar


Sebagai hasilnya, saya akan mengatakan bahwa AirTest IDE adalah pengembangan yang sangat menjanjikan yang dirancang untuk mengotomatiskan UI dalam game, tetapi, saat ini, tidak cocok untuk menguji proses game seperti itu. Jika Anda memiliki banyak elemen UI dan / atau banyak perangkat untuk diperiksa dan Anda tidak ingin menghabiskan banyak waktu, maka IDE ini mungkin menjadi penyelamat Anda. Untuk mulai menulis tes paling sederhana, Anda tidak perlu pengetahuan mendalam tentang otomatisasi dan pemrograman, cukup pahami dasar bekerja dengan Python. Tentu saja, dengan cara ini Anda tidak akan pergi jauh dan Anda harus belajar bahasa pemrograman ini, tetapi untuk memulai dan memahami betapa realistisnya program ini cocok untuk Anda, itu sudah cukup bagi mata Anda. Satu-satunya hal yang membuat frustrasi sekarang adalah berbagai kesalahan menjengkelkan yang terkait dengan, misalnya, ketidakmampuan untuk mengubah ukuran jendela dengan perangkat yang berfungsi (aplikasi Windows) setelah menyematkannya, tumpang tindih dengan objek besar yang disorot dari antarmuka program utama, dll., Tetapi sangat mungkin datang untuk berdamai, terutama mengingat kenyataan bahwa aplikasi ini dalam tahap Beta.


gambar

Source: https://habr.com/ru/post/id461773/


All Articles