להקים סוויטות

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

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

הגדרות

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

מבנה ITestSuite

ITestSuite ב-Tradefed מתייחס למחלקת הבסיס הנפוצה המניעה ביצוע של חבילה. זה משותף לכל חבילות הבדיקה הגדולות, במיוחד ל- Android Compatibility Test Suite (CTS) ו- Android Vendor Test Suite (VTS) , ומבטיח חווית ביצוע עקבית בכל הסוויטות.

לפעמים אנו מתייחסים ל- ITestSuite כאל רץ החבילות .

רץ החבילות מבצע את השלבים הבאים בעת ביצוע:

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

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

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

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

רצף זה בתצורת Tradefed המכילה את 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

האמור לעיל יריץ את כל המודולים עם מסגרת כמטא נתונים של רכיבים .

דוגמה מלאה של 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" />

מטא נתונים אלה מציינים שיש להפעיל את המודול במצב אחר, למשל כאפליקציה מיידית, במקום במצב אפליקציה רגיל.

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

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

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

--enable-parameterized-modules

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

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

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

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