בדף הזה יש סקירה כללית על ספריית SDV Test Framework, והוא כולל הוראות להגדרה, לקביעת תצורה ולביצוע של בדיקות. משתמשים ב-SDV Test Framework לבדיקות מקצה לקצה. הכלי מבוסס על Mobly, ואתם כותבים בדיקות ב-Python.
הגדרת הסביבה
בדף הזה מניחים שכבר הגדרתם את תחנת העבודה שלכם ל-SDV. כדי להריץ בדיקות של Framework, צריך להתקין את virtualenv.
תלות ב-Python
הגישה המומלצת לניהול יחסי תלות ב-Android היא לארוז בדיקות, Python ויחסי התלות שלהם כקובץ הפעלה באמצעות הגדרת ה-build. חובה לפעול לפי הגישה הזו במאגר הבדיקות של SDV.
ספריית SDV Test Framework מספקת את התלויות האלה כברירת מחדל:
moblyabsl-pyחובה להשתמש בפרמטר הזה כדי להשתמש בפרמטרים בבדיקות.pexpectנדרש לפונקציונליות של פקודות אינטראקטיביות.ptyprocessנדרש לפונקציונליות של פקודות אינטראקטיביות.
אם אתם צריכים יחסי תלות ספציפיים לבדיקה, אתם יכולים לכלול אותם בקובץ Android.bp של הבדיקה:
python_test_host {
…
libs: [
"<DEPENDENCY1",
"<DEPENDENCY2",
…
],
…
}
סוגים של בדיקות מערכת
יוצרים בדיקות מערכת באמצעות SDV Test Framework. המסגרת מבחינה בין הסוגים הבאים. סיווג הבדיקות בצורה נכונה:
- בדיקות לדוגמה: הפעלת שירותים לדוגמה של SDV ואימות התוצאה בהשוואה לפלט הצפוי.
- בדיקות מקצה לקצה: אל תשתמשו בשירותי SDV לדוגמה.
- בדיקות לטווח ארוך: מיועדות לתקופות הפעלה ממושכות.
- בדיקות ביצועים: אפשר להשתמש בספרייה
perfetto. - בדיקות חומרה: מיועדות להרצה רק במכשיר פיזי, ולא ב-Cuttlefish (CF).
יצירת בדיקה
כל הבדיקות שנכתבות באמצעות המסגרת צריכות להיות בתיקיית הבדיקות במאגר. המיקום המדויק של הבדיקה תלוי בסוג שלה.
הגדרת בדיקה
מגדירים את כל הבדיקות להרצה באמצעות atest ו-CATBox.
הגדרת אימות
המסגרת מספקת תבניות לבדיקות של מכונה וירטואלית אחת (VM), שתי מכונות וירטואליות ושלוש מכונות וירטואליות. מוסיפים לקובץ Android.bp את הנתונים הבאים:
One VM
python_test_host {
...
test_config_template: ":sdv_one_device",
}
שתי מכונות וירטואליות
python_test_host {
...
test_config_template: ":sdv_two_devices",
}
שלוש מכונות וירטואליות
python_test_host {
...
test_config_template: ":sdv_three_devices",
}
תבנית ברירת המחדל מספיקה לרוב הבדיקות. מומלץ להימנע מיצירת הגדרות מותאמות אישית, אלא אם יש סיבה משכנעת לכך.
עדכון ברירת המחדל של הזמן הקצוב לתפוגה
זמן הקצוב לתפוגה שמוגדר כברירת מחדל אמור להספיק להרצת הבדיקות באופן מקומי.
אם הבדיקה נכשלת באופן מקומי בגלל פסק זמן, כדאי לפצל אותה לבדיקות שונות. בדיקות ארוכות מאוד עם הרבה מקרי בדיקה עלולות לגרום לצוואר בקבוק בהרצה.
אם אתם צריכים להגדיר זמן קצוב לתפוגה ארוך יותר מברירת המחדל, המשיכו לקרוא.
שינוי ברירת המחדל של הזמן הקצוב לתפוגה
ה-framework לא תומך בהרחבת התבנית לביצוע של atest.
לכן, כדאי להשתמש בתבניות שסיפקנו, שכוללות הגדרת זמן קצוב ארוך יותר לתפוגה.
בדיקה ארוכה של מכונה וירטואלית אחת
python_test_host {
...
test_config_template: ":sdv_one_device_long_test",
}
Two VMs long test
python_test_host {
...
test_config_template: ":sdv_two_devices_long_test",
}
מוסיפים תגובה שמציינת בבירור את המטרה של השימוש בתבנית הזו ומסבירה למה נדרש זמן נוסף (לדוגמה, אם הבדיקה מחייבת הורדה של ארטיפקט שלוקחת פרק זמן מסוים).
העברת קבצים למכשיר
בשלבים הבאים מוסבר איך לשלוח קבצים למכשיר עבור הגדרות של atest.
העברת קבצים למכשיר
ה-framework לא תומך בהרחבת התבנית לביצוע של atest.
לכן, צריך ליצור קובץ AndroidTest.xml שמחליף באופן מלא את תבנית ברירת המחדל וכולל את האפשרויות המתאימות של target_preparer למכשירים.
מעתיקים את התוכן של התבנית:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
מעדכנים את
{MODULE}בשם המודול של הבדיקה.מוסיפים את
com.android.tradefed.targetprep.PushFilePreparerלכל מכשיר.
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
הגדרת CATBox
כדי להריץ את הבדיקה כחבילה, נדרשת הגדרה של CATBox.
יוצרים קובץ הגדרות חדש ב-
libraries/sdv/sdv_catbox/res/config/ופועלים לפי מוסכמות השמות האלה:- בדיקה לדוגמה:
sdv-sample-<NAME>-test.xml - בדיקת E2E:
sdv-e2e-<NAME>-test.xml - בדיקה שפועלת לאורך זמן:
sdv-long-running-<NAME>-test.xml - בדיקת ביצועים:
sdv-performance-<NAME>-test.xml - בדיקת חומרה:
sdv-hw-<NAME>-test.xml
- בדיקה לדוגמה:
מוסיפים את המידע המתאים לפי סוג הבדיקה:
הגדרת בדיקה אחת של VM
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/one-device" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
הגדרת בדיקה של שתי מכונות וירטואליות
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/two-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
הגדרת בדיקה של שלוש מכונות וירטואליות
<!-- Copyright 2025 Google LLC -->
<configuration description="SDV <NAME> Test">
<!-- Template for Device Configuration -->
<template-include name="device-config" default="sdv-device-config/three-devices" />
<!-- Plan. Use the same name as the file name -->
<option name="plan" value="<CONFIG_FILE_NAME>"/>
<!-- Test: mobly-par-file-name should match the module name -->
<option name="mobly-host:mobly-par-file-name" value="<ModuleName>" />
</configuration>
תבנית ברירת המחדל מספיקה לרוב הבדיקות. מומלץ להימנע מיצירת הגדרות מותאמות אישית, אלא אם יש סיבה משכנעת לכך.
עדכון ברירת המחדל של הזמן הקצוב לתפוגה
אם הזמן הקצוב לתפוגה שמוגדר כברירת מחדל לא מספיק לבדיקה שלכם, אתם יכולים לשנות אותו.
שינוי ברירת המחדל של הזמן הקצוב לתפוגה
כדי לשנות את הגדרת ברירת המחדל של הזמן הקצוב לתפוגה, מוסיפים את השורות הבאות לסוף קובץ ההגדרות. בבדיקות ארוכות, הזמן הקצוב לתפוגה צריך להיות 10 דקות לכל היותר.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
העברת קבצים למכשיר
בקטע הבא מוסבר איך להעביר קבצים למכשיר כשמגדירים את CATBox.
העברת קבצים למכשיר
כדי לדחוף קבצים למכשיר המתאים, מוסיפים את ההגדרה הבאה אחרי האפשרות plan:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
אם אתם צריכים את הקבצים בכל מכשיר, מוסיפים את התצורה לכל מכשיר (לדוגמה, name=device1, name=device2).
ביצוע בדיקה
ההוראות האלה מניחות שהשלמתם את ההגדרה של סביבת SDV פעילה.
הגדרת הסביבה
המסגרת לא מפעילה מופעים של מכשיר וירטואלי ב-Cloud (CVD), ולכן צריך להפעיל אותם לפני שמריצים את הבדיקות.
מגדירים את הסביבה ומפעילים את יעד ה-SDV:
. build/envsetup.sh lunch <TARGET>מפעילים את מופע ה-CVD הראשון:
cvd create --config=sdv_core_instance1מפעילים את מופע ה-CVD השני (לבדיקות של כמה מכונות וירטואליות):
cvd create --config=sdv_core_instance2מפעילים את מופע ה-CVD השלישי (לבדיקות של כמה מכונות וירטואליות):
cvd create --config=sdv_core_instance3
הרצת atest
atest <TestModuleName>
הפעלת CATBox
הפקודות האלה מניחות שאתם נמצאים בספריית הבסיס של המאגר.
- יצירת CATBox:
m catbox - (אופציונלי) כדי לראות את כל תוכניות הבדיקה הזמינות של SDV ב-CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
מריצים בדיקה:
הפעלת בדיקה של מכונה וירטואלית אחת
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520
הרצת בדיקה של שתי מכונות וירטואליות
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521
הרצת בדיקה של שלוש מכונות וירטואליות
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522