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