הפעל בדיקות (Atest)

Atest הוא כלי שורת פקודה המאפשר למשתמשים לבנות, להתקין ולהריץ בדיקות אנדרואיד באופן מקומי, מה שמאיץ מאוד את ההרצות החוזרות של הבדיקות מבלי לדרוש ידע על אפשרויות שורת הפקודה של Trade Federation . דף זה מסביר כיצד להשתמש ב-Atest כדי להריץ בדיקות אנדרואיד.

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

למידע על המבנה הכללי של Atest, עיין במדריך למפתחים של Atest .

למידע על הפעלת בדיקות בקבצי TEST_MAPPING דרך Atest, ראה הפעלת בדיקות בקבצי TEST_MAPPING .

כדי להוסיף תכונה ל-Atest, עקוב אחר זרימת העבודה של Atest Developer .

הגדר את הסביבה שלך

כדי להגדיר את סביבת Atest שלך, עקוב אחר ההוראות בהגדרת הסביבה , בחירת יעד ובניית הקוד .

שימוש בסיסי

פקודות Atest בעלות הצורה הבאה:

atest test-to-run [optional-arguments]

טיעונים אופציונליים

הטבלה הבאה מפרטת את הארגומנטים הנפוצים ביותר. רשימה מלאה זמינה דרך atest --help .

אוֹפְּצִיָה אפשרות ארוכה תיאור
-b --build בונה יעדי בדיקה. (בְּרִירַת מֶחדָל)
-i --install מתקין חפצי בדיקה (APK) במכשיר. (בְּרִירַת מֶחדָל)
-t --test מריץ את הבדיקות. (בְּרִירַת מֶחדָל)
-s --serial מפעיל את הבדיקות במכשיר שצוין. ניתן לבדוק מכשיר אחד בכל פעם.
-d --disable-teardown משבית את הפירוק והניקוי של הבדיקה.
--info הוצא משימוש.
--dry-run מפעיל יבש את Atest מבלי לבנות, להתקין או להפעיל בדיקות.
-m --rebuild-module-info מאלץ בנייה מחדש של קובץ module-info.json .
-w --wait-for-debugger ממתין לסיום באגים לפני ביצוע.
-v --verbose מציג רישום ברמת DEBUG.
--iterations ריצת בדיקות לולאה עד הגעה לאיטרציה המקסימלית. (10 כברירת מחדל)
--rerun-until-failure [COUNT=10] מפעיל מחדש את כל הבדיקות עד להתרחשות כשל או הגעה לאיטרציה המקסימלית. (10 כברירת מחדל)
--retry-any-failure [COUNT=10] מפעיל מחדש מבחנים שנכשלו עד שיעבור או השגת האיטרציה המקסימלית. (10 כברירת מחדל)
--start-avd יוצר אוטומטית AVD ומריץ בדיקות במכשיר הוירטואלי.
--acloud-create יוצר AVD באמצעות פקודת acloud .
--[CUSTOM_ARGS] מציין ארגומנטים מותאמים אישית עבור רצי המבחן.
-a --all-abi מפעיל את הבדיקות עבור כל ארכיטקטורות ההתקן הזמינות.
--host מפעיל את הבדיקה לחלוטין על המארח ללא מכשיר.
הערה: הפעלת בדיקת מארח הדורשת התקן עם --host תיכשל.
--history מציג את תוצאות הבדיקה בסדר כרונולוגי.
--latest-result מדפיס את תוצאת הבדיקה האחרונה.

למידע נוסף על -b , -i ו- -t , עיין בסעיף ציין שלבים: בנייה, התקנה או הפעלה .

ציין בדיקות

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

  • שם המודול
  • מודול: כיתה
  • שם הכיתה
  • מבחן אינטגרציה של Tradefed
  • נתיב הקובץ
  • שם חבילה

הפרד הפניות לבדיקות מרובות עם רווחים, כך:

atest test-identifier-1 test-identifier-2

שם המודול

כדי להפעיל מודול בדיקה שלם, השתמש בשם המודול שלו. הזן את השם כפי שהוא מופיע במשתנים LOCAL_MODULE או LOCAL_PACKAGE_NAME בקובץ Android.mk או Android.bp של אותה בדיקה.

דוגמאות:

atest FrameworksServicesTests
atest CtsVideoTestCases

מודול: כיתה

כדי להפעיל מחלקה אחת בתוך מודול, השתמש ב-Module:Class . המודול זהה לתיאור שם המודול . Class הוא השם של מחלקת המבחן בקובץ .java , ויכול להיות שם המחלקה המלא או השם הבסיסי.

דוגמאות:

atest CtsVideoTestCases:VideoEncoderDecoderTest
atest FrameworksServicesTests:ScreenDecorWindowTests
atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests

שם הכיתה

כדי להפעיל מחלקה בודדת מבלי לציין שם מודול במפורש, השתמש בשם המחלקה.

דוגמאות:

atest ScreenDecorWindowTests
atest VideoEncoderDecoderTest

מבחן אינטגרציה של Tradefed

כדי להריץ בדיקות המשולבות ישירות ב-TradeFed (לא מודולים), הזינו את השם כפי שהוא מופיע בפלט של הפקודה tradefed.sh list configs . לדוגמה:

כדי להפעיל את מבחן reboot.xml :

atest example/reboot

כדי להפעיל את מבחן native-benchmark.xml :

atest native-benchmark

נתיב הקובץ

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

הפעל מודול

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

הפעל מ- repo-root של אנדרואיד:

atest cts/tests/video

הפעל מ-Android repo-root/cts/tests/video :

    atest .

הפעל שיעור מבחן

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

מתוך repo-root של אנדרואיד:

    atest cts/tests/video/src/android/video/cts/VideoEncoderDecoderTest.java

הפעל מבחן אינטגרציה

הדוגמה הבאה מראה כיצד להריץ בדיקת אינטגרציה באמצעות נתיב קובץ מ- repo-root של Android:

    atest tools/tradefederation/contrib/res/config/example/reboot.xml

שם חבילה

Atest תומך בחיפוש בדיקות לפי שם החבילה.

דוגמאות:

    atest com.android.server.wm
    atest com.android.uibench.janktests

ציין שלבים: בנה, התקן או הפעל

השתמש באפשרויות -b , -i ו- -t כדי לציין אילו שלבים להפעיל. אם לא תציין אפשרות, כל השלבים פועלים.

  • בניית יעדים בלבד: atest -b test-to-run
  • הפעל בדיקות בלבד: atest -t test-to-run
  • התקן apk והפעל בדיקות: atest -it test-to-run
  • בנה והרץ, אך אל תתקין: atest -bt test-to-run

Atest יכול לאלץ בדיקה לדלג על שלב הניקוי או ההפסקה. בדיקות רבות, כגון CTS, מנקות את המכשיר לאחר הפעלת הבדיקה, כך שניסיון להפעיל מחדש את הבדיקה עם -t ייכשל ללא הפרמטר --disable-teardown . השתמש -d לפני -t כדי לדלג על שלב ניקוי הבדיקה ולבדוק באופן איטרטיבי.

atest -d test-to-run
atest -t test-to-run

הפעל שיטות ספציפיות

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

atest reference-to-class#method1

בעת ציון שיטות מרובות, הפרד ביניהן באמצעות פסיקים:

atest reference-to-class#method1,method2,method3

דוגמאות:

atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors
atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval

שתי הדוגמאות הבאות מציגות את הדרכים המועדפות להפעלת שיטה בודדת, testFlagChange . דוגמאות אלו עדיפות על פני שימוש בשם המחלקה בלבד מכיוון שציון המודול או מיקום קובץ ה-Java מאפשר ל-Atest למצוא את המבחן הרבה יותר מהר.

שימוש במודול: מחלקה:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange

מתוך repo-root של אנדרואיד:

atest frameworks/base/services/tests/wmtests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange

ניתן להפעיל מספר שיטות ממחלקות וממודולים שונים:

atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors

הפעל מספר שיעורים

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

כדי להפעיל שתי מחלקות באותו מודול:

atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests

כדי להפעיל שתי מחלקות במודולים שונים:

atest FrameworksServicesTests:ScreenDecorWindowTests CtsVideoTestCases:VideoEncoderDecoderTest

הפעל את הקבצים הבינאריים של GTest

Atest יכול להריץ קבצים בינאריים של GTest. השתמש -a כדי להפעיל את הבדיקות הללו עבור כל ארכיטקטורות ההתקן הזמינות, שבדוגמה זו הן armeabi-v7a (ARM 32-bit) ו- arm64-v8a (ARM 64-bit).

מבחן קלט לדוגמה:

atest -a libinput_tests inputflinger_tests

כדי לבחור GTest בינארי ספציפי להפעלה, השתמש בנקודתיים (:) כדי לציין את שם הבדיקה, וב-hashtag (#) כדי לציין עוד יותר שיטה בודדת.

לדוגמה, עבור הגדרת הבדיקה הבאה:

TEST_F(InputDispatcherTest, InjectInputEvent_ValidatesKeyEvents)

הפעל את הפעולות הבאות כדי לציין את כל הבדיקה:

atest inputflinger_tests:InputDispatcherTest

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

atest inputflinger_tests:InputDispatcherTest#InjectInputEvent_ValidatesKeyEvents

הפעל בדיקות ב-TEST_MAPPING

Atest יכול להריץ בדיקות בקבצי TEST_MAPPING .

הפעל בדיקות מראש באופן מרומז

הפעל מבחני הגשה מראש בקבצי TEST_MAPPING בספריות הנוכחיות ובספריות האב:

atest

הפעל בדיקות מראש בקבצי TEST_MAPPING ב- /path/to/project ובספריות האב שלו:

atest --test-mapping /path/to/project

הפעל קבוצת בדיקה שצוינה

קבוצות הבדיקה הזמינות הן: presubmit (ברירת מחדל), postsubmit , mainline-presubmit all .

הפעל בדיקות לאחר הגשה בקבצי TEST_MAPPING בספריות הנוכחיות ובספריות האב:

atest :postsubmit

הפעל בדיקות מכל הקבוצות בקבצי TEST_MAPPING:

atest :all

הפעל בדיקות לאחר הגשה בקבצי TEST_MAPPING ב- /path/to/project ובספריות האב שלו:

atest --test-mapping /path/to/project:postsubmit

הפעל בדיקות ראשיות בקבצי TEST_MAPPING ב- /path/to/project ובספריות האב שלו:

atest --test-mapping /path/to/project:mainline-presubmit

הפעל בדיקות בספריות משנה

כברירת מחדל, Atest מחפש רק בדיקות בקבצי TEST_MAPPING כלפי מעלה (מהספרייה הנוכחית או הנתונה לתיקיות האב שלה). אם אתה רוצה גם להריץ בדיקות בקבצי TEST_MAPPING בספריות המשנה, השתמש --include-subdirs כדי לאלץ את Atest לכלול גם את הבדיקות הללו:

atest --include-subdirs /path/to/project

הפעל בדיקות באיטרציה

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

דוגמאות:

כברירת מחדל, Atest חוזר 10 פעמים. מספר האיטרציות חייב להיות מספר שלם חיובי.

atest test-to-run --iterations
atest test-to-run --iterations 5

הגישות הבאות מקלות על זיהוי בדיקות מתקלפות:

גישה 1: הפעל את כל הבדיקות עד שמתרחש כשל או השגת האיטרציה המקסימלית.

  • עצור כאשר מתרחש כשל או שהאיטרציה מגיעה לסיבוב העשירי (כברירת מחדל).
    atest test-to-run --rerun-until-failure
    
  • עצור כאשר מתרחש כשל או שהאיטרציה מגיעה לסיבוב ה-100.
    atest test-to-run --rerun-until-failure 100
    

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

  • נניח test-to-run יש מספר מקרי בדיקה ואחת מהבדיקות נכשלת. הפעל רק את המבחן שנכשל 10 פעמים (כברירת מחדל) או עד שהבדיקה תעבור.
    atest test-to-run --retry-any-failure
    
  • הפסק להריץ את המבחן שנכשל כאשר הוא עובר או יגיע לסיבוב ה-100.
    atest test-to-run --retry-any-failure 100
    

הפעל בדיקות על AVDs

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

הפעל AVD והפעל עליו בדיקות:

acloud create --local-instance --local-image && atest test-to-run

התחל AVD כחלק מניסוי:

atest test-to-run --acloud-create "--local-instance --local-image"

למידע נוסף, הפעל את acloud create --help .

העברת אפשרויות למודול

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

atest test-to-run -- [CUSTOM_ARGS]

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

atest test-to-run -- --module-arg module-name:option-name:option-value
atest GtsPermissionTestCases -- --module-arg GtsPermissionTestCases:ignore-business-logic-failure:true

אפשרויות מעבר לסוג רץ או לכיתה:

atest test-to-run -- --test-arg test-class:option-name:option-value
atest CtsVideoTestCases -- --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

למידע נוסף על אפשרויות לבדיקה בלבד, ראה אפשרויות מעבר למודולים .