Halaman ini menjelaskan apa yang mungkin dilakukan untuk menyetel modul suite ( AndroidTest.xml
) melalui sharding dan mendapatkan performa kecepatan terbaik selama eksekusi berkelanjutan di lab. Kami akan mencoba menjelaskan opsi secara umum beserta alasan penggunaannya.
Saat menjalankan suite secara terus-menerus di lab, suite tersebut biasanya dibagi ke beberapa perangkat untuk mengurangi waktu penyelesaian keseluruhan. Harness biasanya berupaya menyeimbangkan waktu eksekusi setiap shard untuk meminimalkan waktu penyelesaian keseluruhan (saat shard terakhir selesai); namun karena sifat dari beberapa pengujian, kami tidak selalu memiliki cukup introspeksi dan memerlukan pemilik modul untuk menyesuaikan beberapa perilaku.
Dapat dipecah atau tidak dapat dipecah?
Dimungkinkan untuk memberi tag pada modul ( AndroidTest.xml
) dengan <option name="not-shardable" value="true" />
untuk memberi tahu harness bahwa modul tersebut tidak boleh di-sharding.
Dalam modul pada umumnya, membiarkan harness memecah modul Anda (perilaku default) adalah hal yang benar untuk dilakukan. Namun dalam beberapa kasus, Anda mungkin ingin mengesampingkan perilaku tersebut:
- Jika pengaturan modul Anda mahal:
Berbagi modul menghasilkan persiapan (menginstal APK, file push, dll.) yang 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 pada modul Anda sebagai tidak dapat disharding.
- Ketika jumlah tes dalam modul Anda rendah:
Berbagi modul menghasilkan semua kasus pengujian yang mungkin dijalankan secara independen pada perangkat yang berbeda. Hal ini berkaitan dengan poin pertama; jika jumlah pengujian Anda sedikit, Anda mungkin akan mendapatkan satu pengujian atau tidak ada pengujian sama sekali di beberapa pecahan, yang akan membuat langkah persiapan apa pun menjadi cukup mahal. Menginstal APK untuk satu kasus uji biasanya tidak sepadan, misalnya.
Tes instrumentasi: Jumlah pecahan maksimal?
Pengujian instrumentasi yang dijalankan melalui AndroidJUnitTest tidak menunjukkan berapa banyak pengujian yang merupakan bagian dari instrumentasi hingga kami benar-benar menginstal dan menjalankan APK. Operasi ini mahal dan tidak dapat dijalankan pada waktu sharding untuk semua modul bagian suite.
Harness mungkin melebihi batas uji instrumentasi dan berakhir dengan beberapa pecahan kosong; pengujian instrumentasi dengan lima pengujian dalam enam pecahan menghasilkan lima pecahan dengan satu pengujian dan satu pecahan tanpa pengujian. Masing-masing pecahan ini memerlukan instalasi APK yang mahal.
Jadi ketika jumlah pengujian dalam APK uji instrumentasi rendah, memberi tag pada modul dengan <option name="not-shardable" value="true" />
akan memungkinkan harness mengetahui bahwa sharding pada modul tersebut tidak layak dilakukan.
Pelari AndroidJUnitTest
memiliki opsi khusus yang memungkinkannya menentukan jumlah maksimal shard yang boleh dipecah menjadi: <option name="ajur-max-shard" value="5" />
.
Hal ini memungkinkan Anda menentukan berapa kali instrumentasi dapat di-sharding secara maksimum, berapa pun jumlah shard 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 sharding, nilai ajur-max-shard
sebesar 2
akan memastikan Anda tidak membuat shard kosong.