בדף הזה מוסבר איך להגדיר בדיקות 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 צריך להיות ידוע איזה מצע בדיקה קיים. ההגדרה של ACTS מכילה את כל המכשירים בקבוצת הבדיקה, ואת כל הפרמטרים המיוחדים של בדיקה או סביבה שייתכן שיהיה צורך בהם. מגדירים את הערך הזה בשורת הפקודה באמצעות -c
/--config
.
אם יש כמה מיטות בדיקה בתצורה, ACTS מפעיל את הבדיקות לכל מיטת בדיקה. כדי להריץ את הבדיקה רק בסביבת בדיקה אחת ברשימה, משתמשים בארגומנט של שורת הפקודה -tb/--testbed <NAME>
.
דוגמה למכונת עבודה מקומית
רוב המשתמשים ב-ACTS מפתחים בהסתעפות אחת של מאגר Android, וההגדרה שלהם דומה להגדרה הזו:
# 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"
}
היחידה הבסיסית של ההגדרה הזו היא 'הבדיקה'. בתצורה לדוגמה שלמעלה, משטח הבדיקה my_testbed
נוצר עם ערך יחיד של משטח הבדיקה. במאגר הניסויים השני, another_testbed
, יש הגדרת בקר מיוחדת שמכילה את המידע של רשימה של מכשירי Android. המכשירים האלה מאוחסנים ברשימת המכשירים בקטע self.android_devices
. חשוב לזכור שאם לא מציינים אובייקט AndroidDevice
במסגרת מצע הבדיקה, תתרחש חריגה בכיתה הבדיקה שמצפה לאובייקט AndroidDevice
. הרשימה המלאה של הגדרות הבקרה הנתמכות שמגיעות עם ACTS מופיעה ב-/acts/framework/acts/controllers/
.
כל שאר הערכים (שאינם ערכים מיוחדים שמוזכרים בקטע שלמעלה) מאוחסנים ב-self.user_params
כמילון. זהו מקום טוב לשמור בו מידע על הסביבה או לבדוק אותו, למשל אם הטלפונים נמצאים בסביבת נתונים של חיוב לפי שימוש בנתונים, או למשך כמה זמן לאסוף נתונים לבדיקה.
מקרים מיוחדים ל-AndroidDevice
כדי להקל על הפיתוח, כשרוצים להשתמש במספר מכשירים עם מאפיינים שונים, יש ל-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
.