Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Konfigurasi Sharding

Halaman ini menjelaskan apa yang mungkin dilakukan untuk menyesuaikan modul suite ( AndroidTest.xml ) melalui sharding dan mendapatkan performa kecepatan terbaik selama eksekusi berkelanjutan di lab. Kami akan mencoba mendeskripsikan opsi secara umum dengan alasan penggunaan masing-masing.

Saat menjalankan rangkaian secara terus-menerus di lab, rangkaian tersebut biasanya dibagi di beberapa perangkat untuk mengurangi waktu penyelesaian secara keseluruhan. Harness biasanya mencoba menyeimbangkan waktu eksekusi setiap pecahan untuk meminimalkan waktu penyelesaian keseluruhan (saat pecahan terakhir selesai); tetapi karena sifat dari beberapa pengujian, kami tidak selalu memiliki introspeksi yang cukup dan memerlukan pemilik modul untuk menyesuaikan beberapa perilaku.

Shardable atau tidak shardable?

Dimungkinkan untuk memberi tag pada modul ( AndroidTest.xml ) dengan <option name="not-shardable" value="true" /> untuk memberi tahu harness bahwa modul tersebut tidak boleh dipisahkan.

Dalam modul umum, membiarkan harness memecah modul Anda (perilaku default) adalah hal yang benar untuk dilakukan. Namun dalam beberapa kasus, Anda mungkin ingin mengganti perilaku itu:

  • Saat penyiapan modul Anda mahal:

Sharding hasil modul dalam persiapan (instal APK, file push, dll.) Mungkin dijalankan satu kali per perangkat yang terlibat. Jika penyiapan modul Anda lama dan mahal serta tidak layak untuk direplikasi dibandingkan dengan waktu proses pengujian, Anda harus memberi tag modul Anda sebagai tidak dapat dipecah.

  • Jika jumlah tes dalam modul Anda rendah:

Sharding hasil modul di semua kasus pengujian yang mungkin dijalankan secara independen pada perangkat yang berbeda. Ini berkaitan dengan poin pertama; jika jumlah tes Anda rendah, Anda mungkin berakhir dengan satu tes atau tidak ada tes di beberapa pecahan, yang akan membuat langkah persiapan menjadi cukup mahal. Menginstal APK untuk satu kasus pengujian biasanya tidak sepadan, misalnya.

Uji instrumentasi: Jumlah maksimal pecahan?

Pengujian instrumentasi yang dijalankan melalui AndroidJUnitTest tidak mengekspos ke harness berapa banyak pengujian yang merupakan bagian dari instrumentasi sampai kita benar-benar menginstal dan menjalankan APK. Operasi ini mahal dan tidak dapat dijalankan pada waktu sharding untuk semua bagian modul suite.

Harness mungkin over-shard pengujian instrumentasi dan berakhir dengan beberapa pecahan kosong; sharding tes instrumentasi dengan lima tes dalam enam hasil shard dalam lima shard dengan satu tes dan satu shard tanpa tes. Masing-masing pecahan ini memerlukan penginstalan APK yang mahal.

Jadi, jika jumlah pengujian dalam APK pengujian instrumentasi rendah, memberi tag modul dengan <option name="not-shardable" value="true" /> akan memungkinkan harness mengetahui bahwa <option name="not-shardable" value="true" /> modul itu tidak sepadan.

Runner AndroidJUnitTest memiliki opsi khusus yang memungkinkannya menentukan jumlah maksimum pecahan yang diizinkan untuk dipecah: <option name="ajur-max-shard" value="5" /> .

Ini memungkinkan Anda untuk menentukan berapa kali maksimum instrumentasi dapat dipecah terlepas dari jumlah pecahan yang diminta pada tingkat pemanggilan. Secara default, instrumentasi akan dibagi menjadi jumlah pecahan yang diminta untuk pemanggilan.

Misalnya, jika APK pengujian instrumentasi Anda hanya berisi dua kasus pengujian tetapi Anda masih ingin melakukan ajur-max-shard , memiliki nilai ajur-max-shard 2 akan memastikan Anda tidak membuat shard kosong.