דף זה מתאר כיצד להגדיר בדיקות ACTS.
מקורות תצורה
ל- Android Comms Test Suite (ACTS) יש שלושה מקורות עיקריים של תצורה:
- ממשק שורת הפקודה (CLI)
- קובץ התצורה של ACTS
- משתני סביבה
ערכים ממקורות אלה משולבים לתצורה אחת המשמשת להפעלת בדיקת ACTS. אם ערכים מצוינים במספר מיקומים, הערכים יוחלפו על סמך הסדר שלמעלה (כאשר ה-CLI מקבל עדיפות).
הערה על משתני סביבה
היזהר בעת שימוש במשתני סביבה עבור מבחני ACTS. ערכים אלה הם הפחות גלויים למשתמש, ואינם מומלצים לשימוש מחוץ לתחנת עבודה של מפתח. משתני סביבה מושבתים במהלך בדיקות אוטומטיות של ACTS כדי למנוע הרעלת סביבה.
משתני תצורה נדרשים
כל מבחן ACTS מחייב להגדיר את המשתנים הבאים.
נתיבי בדיקה של ACTS
ACTS פועל ממיקום כניסה ראשי יחיד. כתוצאה מכך, מיקום נתיב הבדיקה אינו ידוע לרץ.
הגדר את מיקום נתיב הבדיקה באמצעות משתנה הסביבה ACTS_TESTPATH
או עם הדגל -tp
/ --testpaths
בשורת הפקודה. הערך יכול להיות רשימה של ספריות.
שיעורי מבחן ACTS
ACTS חייב לדעת אילו שיעורי בדיקה להפעיל. זה יכול להיות ביטוי רגולרי או רשימה של שמות מחלקות מבחן.
כדי להגדיר ערך זה, השתמש בדגל -tc
/ --test_class
בשורת הפקודה. שימו לב שדגל זה מקבל גם רשימה של שמות מחלקות. שמות המחלקות חייבים להתאים לשמות הקבצים התואמים להם, לדוגמה, יש למצוא SampleTest
ב- SampleTest.py
.
נתיב יומן ACTS
ל-ACTS חייב להיות מיקום לכתוב לו יומנים מלבד STDOUT. ACTS כותב יומני ניפוי באגים מלאים המכילים נתונים שיכולים לעזור לקבוע מדוע בדיקות מסוימות נכשלות. כדי למנוע עומס, ACTS לא כותב את היומנים האלה ל-STDOUT.
כדי להגדיר את נתיב היומן, השתמש במשתנה הסביבה ACTS_LOGPATH
או בדגל -lp
/ --logpath
בשורת הפקודה.
נתיב התצורה של ACTS
כדי להפעיל את הבדיקה, ACTS חייב לדעת איזה testbed קיים. תצורת ה-ACTS מכילה את כל ההתקנים בערכת הבדיקה, וכל פרמטרי בדיקה או סביבה מיוחדים שעשויים להיות נחוצים. הגדר ערך זה בשורת הפקודה באמצעות -c
/ --config
.
אם יש ערכות בדיקה מרובות בתוך התצורה, ACTS מפעיל את הבדיקות עבור כל ערכת בדיקה. כדי להריץ את הבדיקה רק עבור מיטת בדיקה בודדת ברשימה, השתמש בארגומנט שורת הפקודה -tb/--testbed <NAME>
.
דוגמה לתחנת עבודה מקומית
רוב משתמשי ACTS מפתחים על סניף ריפו יחיד של אנדרואיד, ויש להם הגדרה דומה לזו:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
אם משתמשי ACTS פועלים על מספר סניפים, הם מריצים את ACTS לעתים קרובות מספריית acts/framework
ומשתמשים בנתיב יחסי עבור ACTS_TESTPATH
:
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
הגדרת ערכות הבדיקה שלך
קובץ התצורה של ACTS מספק את כל המידע הדרוש להפעלת בדיקות על התקני חומרה:
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
יחידת הבסיס של תצורה זו היא ערכת הבדיקה. בתצורת הדוגמה שלמעלה, ה-testbed my_testbed
נוצר עם ערך מבחן יחיד. למבחן השני, another_testbed
, יש תצורת בקר מיוחדת שמחזיקה את המידע עבור רשימה של מכשירי אנדרואיד. מכשירים אלה מאוחסנים ברשימת מכשירים תחת self.android_devices
. שים לב שאם ערכת בדיקה לא מציינת אובייקט AndroidDevice
, מחלקת בדיקה שמצפה לאובייקט AndroidDevice
מעלה חריג. לרשימה מלאה של תצורות בקר נתמכות המגיעות עם ACTS, עיין ברשימה בכתובת /acts/framework/acts/controllers/
.
כל הערכים האחרים (שאינם ערכים מיוחדים שהוזכרו בסעיף למעלה) מאוחסנים ב- self.user_params
כמילון. זהו מקום טוב לאחסן מידע סביבתי או בדיקת מידע כגון האם הטלפונים נמצאים בסביבת נתונים מדורגים, או כמה זמן לאסוף נתונים לבדיקה.
מקרים מיוחדים עבור מכשיר אנדרואיד
לנוחות הפיתוח כאשר אתה רוצה שיהיו לך מספר מכשירים עם מאפיינים שונים זמינים, AndroidDevice
יש כמה מקרים מיוחדים.
פורמט תצורת JSON
כל צמדי המפתח/ערך ב-JSON למטה מוגדרים לאובייקט AndroidDevice
המתאים. אם התצורה מנסה להחליף פרמטר שהוגדר בתכונת AndroidDevice
, ControllerError
נזרק.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
לאחר מכן, בסקריפט הבדיקה, תוכל להשתמש בפונקציית סינון כדי לאחזר את ההתקן הנכון ולגשת לפרמטרים נוספים מאובייקט ההתקן:
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
פרמטר אופציונלי
להלן פרמטר אופציונלי:
-
adb_logcat_param
: מחרוזת שצורפה לפקודתadb logcat
לאיסוף יומני adb. כברירת מחדל, נעשה שימושadb logcat -v threadtime -b all
. אםadb_logcat_param
מוגדר, הקטע-b all
מוחלף. לדוגמה, הגדרתadb_logcat_param
ל--b radio
משנה את הפקודה ל-adb logcat -v threadtime -b radio
.