הגדרת חבילות

חבילה ב-Trended מתייחסת להגדרה שבה רצה כמה בדיקות במסגרת מריץ בדיקה נפוץ שמפעיל את הביצוע הכולל.

ב-Trendified, הסוויטות עוברות דרך ITestSuite שמאפשר להוסיף ולהסיר בדיקות ללא תלות באופן שבו הן לרוץ.

הגדרות

  • חבילה: קבוצה של מודולים לבדיקה שהוגדרו לפעול ברמה העליונה של שירותים דומים כדי לדווח על התוצאות שלהם בהפעלה אחת.
  • הגדרה ברמה העליונה: ההגדרה חלה על המכשירים לפני הרצה של את המודולים לבדיקה.
  • תצורה ראשית: תצורת ה-XML של Tradeified ברמת החבילה, מתאר אילו מודולים צריך לפעול ואיזו הגדרה ברמה העליונה צריכה להיות בשימוש.
  • הגדרה ברמת המודול: ההגדרה חלה על המכשירים מיד לפני ההפעלה של של מודל טרנספורמר. הן נקראות גם הגדרות ספציפיות למודול.
  • הגדרת המודול: מתייחסת ל-XML בתחום המסחר האלקטרוני AndroidTest.xml הגדרה שמתארת את המודולים ואת ההגדרה ברמת המודול צריך לבצע.
  • מודול: יחידת בדיקה שמורכבת משלב הגדרה (הגדרה ברמת המודול), בדיקה ביצוע ושלב של פירוק.
  • ניסיון חוזר בתוך המודול: ניסיון חוזר אוטומטי מתבצע על ידי הרתמה שבתוך המודול.
  • ניסיון חוזר לחבילה: הרצה מחדש מלאה של הבדיקות שנכשלו בעבר.

מבנה ב-ITestSuite

ITestSuite ב-טרייד-פיד הכוונה למחלקה הבסיסית (base class) שמובילה לביצוע של חבילה. זו שמשותף לכל חבילות הבדיקה העיקריות, ובמיוחד לבדיקת התאימות ל-Android Suite (CTS) וחבילת בדיקה של ספקי Android (VTS), כדי להבטיח חוויית ביצוע עקבית בכל הסוויטות.

אנחנו מתייחסים לפעמים ל-ITestSuite בתור Suite Runner.

הפקודה 'חבילה' פועלת לפי השלבים הבאים במהלך ביצועה:

  1. טוענים את הגדרות המודול וקובעים איזו קבוצה צריכה לפעול.
  2. מפעילים כל אחד מהמודולים:

    1. הרצת הגדרה ברמת המודול.
    2. להריץ בדיקות מודול.
    3. הרצת פירוק ברמת המודול.
  3. מדווחים על התוצאות.

הגדרה ברמה העליונה

מנקודת מבט של פרופיל עסק, ITestSuite הוא רק עוד בדיקה. זה מורכב אחד אבל הוא עדיין בדיקה כמו כל IRemoteTest אחר. כך שכשמציינים חבילת המסחר האלקטרוני (בסוויץ) בתצורה של רכיב המסחר האלקטרוני (Trended), הפעולה הרגילה דפוס ההגדרה: הרצה של build_provider, target_preparer, בדיקה (החבילה שלנו במקרה הזה) ו-target_cleaner.

הרצף הזה בתצורה של TradeFedEx שמכילה את ITestSuite הוא להגדרה ברמה העליונה.

דוגמה:

<configuration description="Common config for Compatibility suites">

    <build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" />
    <!-- Setup applied before the suite: so everything running in the suite will
    have this setup beforehand -->
    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put global package_verifier_enable 0" />
        <option name="teardown-command" value="settings put global package_verifier_enable 1"/>
    </target_preparer>

    <!-- Our ITestSuite implementation -->
    <test class="com.android.compatibility.common.tradefed.testtype.suite.CompatibilityTestSuite" />

    <result_reporter class="com.android.compatibility.common.tradefed.result.ConsoleReporter" />
</configuration>

מטא-נתונים של מודול

אנחנו קוראים למטא-נתונים של המודול מידע נוסף שצוין במודול הבדיקה AndroidTest.xml. מטא-נתונים אלה מאפשרים לציין מידע נוסף על את המודול, וניתן לסנן את המודולים באמצעות המטא-נתונים.

מטא-נתונים לדוגמה:

<option name="config-descriptor:metadata" key="component" value="framework" />
<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

דוגמה לסינון לפי מטא-נתונים:

--module-metadata-include-filter component=framework

הפקודה שלמעלה תריץ את כל המודולים עם framework כמטא-נתונים של רכיב.

דוגמה מלאה ל-AndroidTest.xml:

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <!-- Metadata -->
    <option name="config-descriptor:metadata" key="component" value="framework" />
    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
    <!-- End: metadata -->
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

מודול עם פרמטרים

סוג מיוחד של מטא-נתונים הוא parameter.

<option name="config-descriptor:metadata" key="parameter" value="instant_app" />

שדה המטא-נתונים הזה מציין שצריך להפעיל את המודול mode, למשל כאפליקציה ללא התקנה, במקום כמצב אפליקציה רגיל.

כל המצבים או הפרמטרים האפשריים מתוארים לפי ModuleParameters ויש להם handler משויך ModuleParametersHelper שמאפשר לשנות את הגדרת המודול כך שתתבצע במצב המסוים.

לדוגמה, מצב האפליקציה ללא התקנה אוכף את התקנת ה-APK ללא התקנה במצב תצוגה.

כדי שהפרמטר יתבצע, צריך להפעיל אותו בשורת הפקודה עם:

--enable-parameterized-modules

אפשר גם להריץ מצב נתון באמצעות:

--enable-parameterized-modules --module-parameter <Mode>

--enable-parameterized-modules --module-parameter INSTANT_APP

כשמופעלת גרסה של מודול עם פרמטרים, התוצאות שלה מדווחות שם של מודול עם פרמטרים, לדוגמה CtsGestureTestCases[instant] לעומת בבסיס CtsGestureTestCases.