این صفحه توضیح میدهد که چه چیزی برای تنظیم یک ماژول مجموعه امکانپذیر است
(AndroidTest.xml) ازطریق شاردینگ و دریافت بهترین عملکرد سرعت در طول
اجرای مداوم در آزمایشگاه. ما تلاش خواهیم کرد گزینهها را به روشی کلی و با ذکر دلیل استفاده از هریک توضیح دهیم.
وقتی مجموعهای بهطور پیوسته در آزمایشگاه اجرا میشود، مجموعه معمولاً در چندین دستگاه توزیع میشود تا زمان تکمیل کلی کاهش یابد. مهار معمولاً تلاش میکند زمان اجرای هر تکه را متعادل کند تا زمان تکمیل کلی (زمانی که آخرین تکه تمام میشود) را به حداقل برساند؛ اما بهدلیل ماهیت برخیاز آزمایشها، همیشه اطلاعات کافی نداریم و نیاز داریم مالک واحد برخیاز رفتارها را تنظیم کند.
قابلتقسیم یا غیرقابلتقسیم؟
میتوانید واحد (AndroidTest.xml) را با
<option name="not-shardable" value="true" /> برچسبگذاری کنید تا به مهار اطلاع دهید که
نباید تکهتکه شود.
در یک ماژول معمولی، اجازه دادن به مهار برای تقسیم ماژول شما (رفتار پیشفرض) کار درستی است. اما در برخی موارد، ممکن است بخواهید آن رفتار را لغو کنید:
- وقتی راهاندازی واحدتان پرهزینه است:
تکهتکه کردن یک واحد منجر به آمادهسازی (نصب APK، انتقال فایل، و غیره) میشود که احتمالاً یکبار برای هر دستگاه درگیر اجرا میشود. اگر راهاندازی واحد شما طولانی و گران است و در مقایسه با زمان اجرای آزمایش ارزش تکثیر شدن را ندارد، باید واحدتان را بهعنوان واحد غیرقابلتکه کردن برچسبگذاری کنید.
- وقتی تعداد آزمونها در واحد شما کم است:
تکهتکه کردن یک واحد منجر به اجرای مستقل همه موارد آزمایشی در دستگاههای مختلف میشود. این موضوع به نکته اول مربوط میشود؛ اگر تعداد آزمایشهایتان کم باشد، ممکن است در برخیاز تکهها فقط یک آزمایش یا اصلاً آزمایشی نداشته باشید، که این امر باعث میشود هر مرحله آمادهسازی بسیار پرهزینه شود. برای مثال، نصب فایل APK برای یک مورد آزمایشی واحد معمولاً ارزش ندارد.
آزمایشهای ابزارگری: حداکثر تعداد تکهها؟
آزمایش ابزاری که ازطریق AndroidJUnitTest اجرا میشود تا زمانی که فایل APK را نصب و اجرا نکنیم، به مهارکننده نشان نمیدهد که چند آزمایش بخشی از ابزار است. این عملیاتها پرهزینه هستند و نمیتوانند در زمان تقسیم برای همه واحدهای مجموعه اجرا شوند.
مهار ممکن است آزمایش ابزارگری را بیشازحد تکهتکه کند و درنهایت به چند تکه خالی برسد؛ تکهتکه کردن آزمایش ابزارگری با پنج آزمایش در شش تکه منجر به پنج تکه با یک آزمایش و یک تکه بدون آزمایش میشود. هریک از این تکهها به نصب پرهزینه APK نیاز دارد.
بنابراین وقتی تعداد آزمایشها در APK آزمایش ابزار دقیق کم باشد، برچسبگذاری واحد با <option name="not-shardable" value="true" /> به مهار اجازه میدهد بداند که تقسیم کردن آن واحد ارزش ندارد.
دونده AndroidJUnitTest گزینه ویژهای دارد که به آن اجازه میدهد حداکثر تعداد تکههایی را که میتواند به آنها تقسیم شود مشخص کند:
<option name="ajur-max-shard" value="5" />.
این به شما امکان میدهد صرفنظر از تعداد خردههایی که در سطح فراخوانی درخواست شده است، حداکثر تعداد دفعاتی را که ابزار دقیق میتواند خردهبندی شود مشخص کنید. بهطور پیشفرض، ابزار دقیق به تعداد تکههای درخواستی برای فراخوانی تقسیم میشود.
برای مثال، اگر فایل APK آزمایش ابزار دقیق شما فقط دو مورد آزمایشی داشته باشد اما
همچنان بخواهید آن را تکهتکه کنید، داشتن مقدار ajur-max-shard برابر با 2 تضمین میکند
تکههای خالی ایجاد نکنید.