הגדר Sharding

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

עמוד זה מתאר מה ניתן לכוונן עבור מודול חבילה ( 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 יבטיח שאתה לא יוצר רסיסים ריקים.