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

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

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

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

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

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

מכיני מטרה

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

כדי להשתמש בתצורת המודול המשותף המובנה, הוסף קובץ חדש '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>

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

    <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. לפני הפעלת מודול הבדיקה, בצע את פקודת המעטפת "הגדרות לשים גישה מאובטחת 1" במכשיר
  2. לאחר סיום מודול הבדיקה, בצע את פקודת המעטפת "settings put secure accessibility_enabled 0"

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

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

  • שם המחלקה: PushFilePreparer

    • שם קצר : push-file
    • פונקציה : דוחפת קבצים שרירותיים תחת תיקיית מקרה הבדיקה ליעד במכשיר
    • הערות :
      • מכין זה יכול לדחוף מתיקיה לתיקיה, או מקובץ לקובץ; כלומר, אינך יכול לדחוף קובץ מתחת לתיקיה במכשיר: עליך לציין את שם קובץ היעד גם תחת התיקיה הזו
    • אפשרויות :
      • push-file: מפרט push, המציין את הקובץ המקומי לנתיב שבו יש לדחוף אותו במכשיר. עשוי לחזור על עצמו. אם קבצים מרובים מוגדרים לדחיפה לאותו נתיב מרוחק, הקבצים האחרון יידחף.
      • push: (הוצא משימוש) מפרט דחיפה, המעוצב כ' /path/to/srcfile.txt->/path/to/destfile.txt ' או ' /path/to/srcfile.txt->/path/to/destdir/ '. עשוי לחזור על עצמו. נתיב זה עשוי להיות יחסי לספריית מודול הבדיקה או לספריית היציאה עצמה.
      • post-push: פקודה להפעלה במכשיר (עם ` adb shell <your command> `) לאחר ניסיון כל הדחיפות. מקרה שימוש טיפוסי יהיה שימוש ב-chmod עבור הרשאות
  • שם מחלקה: InstallApkSetup

    • שם קצר: install-apk
    • פונקציה: דוחפת קבצי apk שרירותיים מתחת ליעד במכשיר
    • אפשרויות:
      • test-file-name: שם ה-apk שיותקן במכשיר.
      • install-arg: ארגומנטים נוספים שיש להעביר לפקודת pm install, כולל מקף מוביל, למשל "-d". ניתן לחזור על עצמו
  • שם המחלקה: RunCommandTargetPreparer

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

שיעור מבחן

מחלקת מבחן היא מחלקה של 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

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

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

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