הגדרות בדיקה מורכבות

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

  • התקנה של קובצי APK אחרים (בנוסף לקובץ ה-APK של הבדיקה)
  • דחיפת קבצים למכשיר
  • להריץ פקודות (למשל adb shell pm ...)

בעבר, צוותי רכיבים בדרך כלל כתבו בדיקה בצד המארח כדי לבצע משימות כאלה, מה שדרש הבנה של Trade Federation harness ובדרך כלל הגדיל את המורכבות של מודול בדיקה .

בהשראת CTS, הצגנו את הרעיון של הגדרת מודול בדיקה כדי לתמוך במשימות כאלה. אפשר לבצע את המשימות הנפוצות שמופיעות למעלה באמצעות כמה שורות הגדרה בלבד. כדי להשיג גמישות מקסימלית, אפשר אפילו להטמיע כלי משלכם להכנת היעד, כפי שמוגדר על ידי ITargetPreparer או ITargetCleaner, ולהגדיר אותם לשימוש בהגדרות של מודול הבדיקה שלכם.

קובץ ההגדרה של מודול בדיקה הוא קובץ XML שחובה להוסיף לתיקיית המקור של המודול ברמה העליונה, והוא נקרא AndroidTest.xml. קובץ ה-XML הוא בפורמט של קובץ הגדרה שמשמש את Trade Federation test automation harness. נכון לעכשיו, התגים העיקריים שמטופלים באמצעות הגדרות מודול הבדיקה הם התגים target_preparer ו-test.

אנשי הכנה לשידור

תג target_preparer, כפי שהשם מרמז, מגדיר target preparer (ראו ITargetPreparer) שמציע שיטת הגדרה, שמופעלת לפני שמודול הבדיקה מופעל לבדיקה. אם המחלקה שאליה יש הפניה בתג target_preparer מטמיעה גם את ITargetCleaner, שיטת הניקוי שלה תופעל אחרי שמודול הבדיקה יסיים את הפעולה.

כדי להשתמש בהגדרת מודול משותף מובנה, מוסיפים קובץ חדש בשם AndroidTest.xml בתיקייה ברמה העליונה של מודול הבדיקה, וממלאים אותו בתוכן הבא:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

לדוגמה, אפשר להוסיף את תגי האפשרויות הבאים (בתגובת ה-insert שלמעלה):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

האפשרויות יגדירו את כלי הבדיקה כך:

  1. לפני שמפעילים את מודול הבדיקה, מריצים את פקודת ה-shell ‏“settings put secure accessibility_enabled 1” במכשיר
  2. אחרי שמסיימים את מודול הבדיקה, מריצים את פקודת ה-Shell ‏“settings put secure accessibility_enabled 0”

בדוגמה הזו, הנגישות מופעלת או מושבתת לפני או אחרי ההרצה של מודול הבדיקה, בהתאמה. אחרי שראינו דוגמה פשוטה, צריך להסביר יותר על השימוש בתג option. כפי שמוצג למעלה, לתג יכולים להיות שני מאפיינים: name ו-value. ערך המאפיין name צריך להיות אחד מהערכים שהמכין מציע.

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

  • שם המחלקה: PushFilePreparer

    • short name: push-file
    • function: pushes arbitrary files under test case folder into destination on device
    • הערות:
      • הכלי הזה יכול להעביר מתיקייה לתיקייה או מקובץ לקובץ. כלומר, אי אפשר להעביר קובץ בתוך תיקייה במכשיר: צריך לציין גם את שם קובץ היעד בתיקייה הזו.
    • options:
      • push-file: מפרט push, שמציין את הקובץ המקומי ואת הנתיב שאליו צריך לדחוף אותו במכשיר. יכול להיות שיוצגו שוב. אם מוגדרים כמה קבצים להעברה לאותו נתיב מרוחק, הקובץ האחרון יועבר.
      • push: (deprecated) מפרט של push, בפורמט '/path/to/srcfile.txt->/path/to/destfile.txt' או '/path/to/srcfile.txt->/path/to/destdir/'. אפשר לחזור על הערך הזה. הנתיב הזה יכול להיות יחסי לספרייה של מודול הבדיקה או לספריית out עצמה.
      • post-push: פקודה להפעלה במכשיר (עם adb shell <your command>) אחרי שכל הניסיונות לשליחת הודעות פוש בוצעו. תרחיש שימוש טיפוסי הוא שימוש בפקודה chmod להגדרת הרשאות
  • שם המחלקה: InstallApkSetup

    • שם מקוצר:install-apk
    • function: pushes arbitrary apk files under into destination on device
    • options:
      • test-file-name: השם של קובץ ה-APK שיועלה למכשיר.
      • install-arg: ארגומנטים נוספים להעברה לפקודה pm install, כולל מקף מוביל, למשל ‎“-d". יכול להיות שיוצג שוב
  • שם הכיתה: RunCommandTargetPreparer

    • שם מקוצר: run-command
    • function: מריצה פקודות שרירותיות של מעטפת לפני או אחרי ההרצה של מודול הבדיקה
    • options:
      • run-command:פקודת adb להרצה. יכול להיות שיוצג שוב
      • teardown-command: פקודת adb shell להפעלה במהלך שלב הפירוק. יכול להיות שיוצג שוב

כיתת בדיקה

כיתת בדיקה היא הכיתה של Trade Federation שמשמשת להרצת הבדיקה.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

אלה שלוש מחלקות בדיקה נפוצות:

  • שם הכיתה: GTest

    • short name: gtest
    • function: בדיקה שמריצה חבילת בדיקה מקורית במכשיר נתון.
    • options:
      • native-test-device-path: הנתיב במכשיר שבו נמצאות בדיקות מקוריות.
  • שם הכיתה: InstrumentationTest

    • שם מקוצר: הטמעה
    • פונקציה: בדיקה שמריצה חבילת בדיקות של מכשיר נתון
    • options:
      • package: שם החבילה של אפליקציית הבדיקה ל-Android שרוצים להריץ.
      • class: השם של מחלקת הבדיקה להרצה.
      • method: שם שיטת הבדיקה להרצה.
  • שם הכיתה: AndroidJUnitTest

    • function: בדיקה שמריצה חבילת בדיקות של מכשור במכשיר נתון באמצעות android.support.test.runner.AndroidJUnitRunner. זו הדרך העיקרית להריץ בדיקת מכשור.