Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Konfigurasikan Sharding

Halaman ini menjelaskan apa yang mungkin untuk lagu untuk modul suite ( AndroidTest.xml ) melalui sharding dan mendapatkan performa kecepatan terbaik selama eksekusi terus menerus di laboratorium. Kami akan mencoba untuk menggambarkan opsi secara umum dengan rasional untuk menggunakan masing-masing.

Saat menjalankan suite secara terus-menerus di lab, suite biasanya dibagi ke beberapa perangkat untuk mengurangi waktu penyelesaian keseluruhan. Harness biasanya mencoba untuk menyeimbangkan waktu eksekusi setiap shard untuk meminimalkan waktu penyelesaian keseluruhan (ketika shard terakhir selesai); tetapi karena sifat dari beberapa tes, kami tidak selalu memiliki cukup introspeksi dan membutuhkan pemilik modul untuk menyesuaikan beberapa perilaku.

Dapat di-shardable atau tidak dapat di-shardable?

Hal ini dimungkinkan untuk menandai modul ( AndroidTest.xml ) dengan <option name="not-shardable" value="true" /> untuk memberitahu harness bahwa hal itu tidak harus sharded.

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

  • Ketika pengaturan modul Anda mahal:

Membagi hasil modul dalam persiapan (instal APK, file push, dll.) mungkin dijalankan sekali per perangkat yang terlibat. Jika penyiapan modul Anda panjang dan mahal serta tidak layak untuk direplikasi dibandingkan dengan runtime pengujian, Anda harus menandai modul Anda sebagai tidak dapat di-shardable.

  • Ketika jumlah tes dalam modul Anda rendah:

Membagi hasil modul dalam semua kasus uji 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 uji biasanya tidak sepadan, misalnya.

Tes instrumentasi: Jumlah pecahan maksimum?

Tes berjalan instrumentasi melalui AndroidJUnitTest tidak mengekspos ke baju zirah berapa banyak tes adalah bagian dari instrumentasi sampai kita benar-benar menginstal dan menjalankan APK tersebut. Operasi ini mahal dan tidak dapat dijalankan pada waktu sharding untuk semua modul bagian dari suite.

Harness mungkin terlalu merusak tes instrumentasi dan berakhir dengan beberapa pecahan kosong; sharding tes instrumentasi dengan lima tes dalam enam shard menghasilkan lima shard dengan satu tes dan satu shard tanpa tes. Masing-masing pecahan ini akan membutuhkan instalasi APK yang mahal.

Jadi, ketika jumlah tes di APK uji instrumentasi rendah, penandaan modul dengan <option name="not-shardable" value="true" /> akan memungkinkan harness untuk mengetahui sharding modul yang tidak layak.

The AndroidJUnitTest pelari memiliki opsi khusus yang memungkinkan untuk menentukan jumlah max pecahan itu diperbolehkan untuk pecahan menjadi: <option name="ajur-max-shard" value="5" /> .

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

Misalnya, jika Anda APK instrumentasi uji hanya dua kasus uji tetapi Anda masih ingin beling itu, memiliki ajur-max-shard nilai 2 akan memastikan Anda tidak menciptakan pecahan kosong.