הגדר סוויטה

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

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

הגדרות

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

  • ניסיון חוזר בתוך המודול: ניסיון חוזר אוטומטי שנעשה על ידי הרתמה בתוך המודול.

  • ניסיון חוזר בסוויטה: שידור חוזר מלא של הבדיקות שנכשלו בעבר.

מבנה ITestSuite

ITestSuite ב Tradefed מתייחס במחלקת הבסיס המשותף נהיגה ביצוע צמוד. זה משותף לכל הסוויטות המבחן העיקרי, במיוחד חבילת בדיקות תאימות אנדרואיד (CTS) ואת חבילת בדיקות Vendor אנדרואיד (VTS) , ומבטיח חוויה ביצוע עקבית בכל סוויטות.

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

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

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

התקנה ברמה הגבוהה ביותר

מנקודת מבט של Tradefed, ITestSuite הוא רק עוד מבחן. זהו אחד מורכב אך הוא עדיין רק מבחן כמו כל האחרים IRemoteTest . לכן, כאשר ציון אצן החבילה בתצורת Tradefed, Tradefed יעבור את הדפוס הרגיל של התצורה: ריצת build_provider , target_preparer , מבחן (החבילה שלנו במקרה זה), ואת 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>

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

אנו קוראים מודול Metadata מידע נוסף שצוין במודול מבחן 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

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

מלאה 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" />

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

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

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

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

--enable-parameterized-modules

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

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

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

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