Konfigurasikan sharding

Halaman ini menjelaskan kemungkinan 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 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 berupaya menyeimbangkan waktu eksekusi setiap pecahan untuk meminimalkan waktu penyelesaian keseluruhan (ketika pecahan terakhir selesai); tetapi karena sifat dari beberapa pengujian, kami tidak selalu memiliki introspeksi yang cukup dan membutuhkan pemilik modul untuk menyesuaikan beberapa perilaku.

Shardable atau tidak shardable?

Dimungkinkan untuk menandai modul ( AndroidTest.xml ) dengan <option name="not-shardable" value="true" /> untuk memberi tahu harness bahwa itu tidak boleh dipecah.

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

  • Ketika penyiapan modul Anda mahal:

Sharding modul menghasilkan persiapan (menginstal APK, file push, dll.) mungkin dijalankan sekali per perangkat yang terlibat. Jika penyiapan modul Anda panjang dan mahal dan tidak layak untuk direplikasi dibandingkan dengan runtime pengujian, Anda harus menandai modul Anda sebagai tidak dapat dipecah.

  • Ketika jumlah tes dalam modul Anda rendah:

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

Uji instrumentasi: Jumlah pecahan maksimum?

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

Harness mungkin over-shard uji instrumentasi dan berakhir dengan beberapa pecahan kosong; sharding pengujian instrumentasi dengan lima pengujian dalam enam pecahan menghasilkan lima pecahan dengan satu pengujian dan satu pecahan tanpa pengujian. Masing-masing pecahan ini membutuhkan pemasangan APK yang mahal.

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

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

Hal ini memungkinkan Anda untuk menentukan jumlah maksimum instrumentasi yang dapat di-sharding terlepas dari 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 shard, memiliki nilai ajur-max-shard 2 akan memastikan Anda tidak membuat shard kosong.