תשתיות בדיקה אוטומטיות

Android 9 כולל תשתית Vendor Test Suite (VTS) לבדיקה אוטומטית של VTS, CTS או בדיקות אחרות במכשירי שותף המריצים את תמונת המערכת הגנרית של AOSP (GSI). בעבר, הפעלת הבדיקות הללו הייתה פעולה ידנית ביותר; תשתית הבדיקות החדשה של VTS נועדה לתמוך בבדיקות אוטומטיות מספר פעמים ביום במספר מכשירים.

ארכיטקטורה

תשתית הבדיקות האוטומטיות של VTS משתמשת בארכיטקטורה הבאה:

Automated test architecture

איור 1. VTS אדריכלות תשתית בדיקות אוטומטיות

כאשר בדיקה מופעלת, תשתית הבדיקות האוטומטיות של VTS מבצעת את המשימות הבאות:

  1. אחזרים בונים חפצים ובוחנים משאבים ממקומות שונים:
    • Build אנדרואיד פרטנר (PAB). למסגרת GSI, VTS וכמה מבנים אחרים.
    • קבצים מקומיים, Google Cloud Storage, או מע' לבן ספציפי לספק אחרים. לשותפים שאינם מאחסנים builds בענן של גוגל.
  2. הבזקים בונים חפצים (מהמכשיר) וה- GSI (מ- AOSP) אל המכשירים המחוברים.
  3. מפעיל בדיקות VTS באמצעות TradeFed מקומי או TradeFed בענן.
  4. מדווח על תוצאות הבדיקה ללוח המחוונים של VTS

התהליך מתואם על ידי בקר המארח VTS (HC), מכונה במעבדה שמכוונת את התנהגותם של כל המכשירים המחוברים הנבדקים. בית המשפט האחראי אחראי על אחזור הגרסאות העדכניות ביותר, הצמדתן למכשירים והפעלת בדיקות (מקומית או באמצעות המפקד). הוא מתקשר גם עם מתזמן ענן ומכוון תנועה בין המתזמן לבין מופע TradeFed (או רתמה אחרת) הפועלת על ה- HC. לפרטים על הבקר המארח, לראות אדריכלות בקר מארחת .

ספקי משאבים

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

שותפים יכולים לגשת למשאבי אוטומציה באמצעות המיקומים הבאים:

  • Build אנדרואיד פרטנר. גישה פרוגרמטית ניתנת על בסיס חשבון לכל חשבון.
  • קבצים מקומיים (או דומה). לשותפים שאינם משתמשים ב- Partner Android Build.

לשימוש מהבהב המכשירים מאוחרות, משאבים כוללים ספקים לבן עבור שני האפשרויות, המשתרעים סינגל build_provider.py מאחסן הבניות בספריות מקומיות זמניות.

שותף Android Build

בשנת אנדרואיד 8.1 ומשחרר נמוך, שותפים אנדרואיד נדרשו לבקר באתר Build אנדרואיד פרטנר ( https://partner.android.com/build ), ניווט לחשבון שלהם, ולהביא את התמונות המערכת האחרונה דרך ממשק המשתמש. כדי לסייע לשותפים להימנע מתהליך איטי ועתיר עבודה זה, Android 9 כולל תמיכה בהורדה אוטומטית של משאבים אלה מ- PAB כאשר מסופקים האישורים המתאימים.

הקמת גישה

גישה פרוגרמטית משתמשת ב- OAuth2 בממשקי ה- API של Google כדי לגשת לתעריפי ה- RPC הנדרשים. באמצעות הגישה הסטנדרטית ליצירת אישורי OAuth2, השותף חייב להגדיר הלקוח id / זוג סוד עם גוגל. כאשר PartnerAndroidBuildClient הוא הצביע כי סוד בפעם הראשונה, זה פותח חלון דפדפן עבור המשתמש להתחבר לחשבון Google שלהם, אשר מייצר את האישורים הדרושים OAuth2 להתקדם. האישורים (אסימון גישה ואסימון רענון) מאוחסנים באופן מקומי, כלומר שותפים צריכים להיכנס רק פעם אחת.

בקשת POST עבור כתובת URL

לחיצה על קישור משאבים ב- PAB שולחת בקשת POST הכוללת את הנתונים הדרושים למשאב זה, כולל:

  • בנה מזהה, בנה יעד
  • שם המשאב
  • ענף
  • לשחרר את שם המועמד והאם המועמד הוא מבנה פנימי ובין אם לאו

בקשת ה- POST שקיבלה downloadBuildArtifact השיטה של buildsvc RPC, המחזירה URL שיכולה לשמש כדי לגשת משאב.

  • עבור משאבי APK של חברת Clockwork Companion, כתובת האתר היא כתובת URL קריאה המתארחת ב- PAB (המוגנת על ידי הרשאה ונגישה עם אישורי OAuth2 המתאימים).
  • עבור משאבים אחרים, כתובת האתר היא כתובת URL ארוכה ולא מוגנת מממשק ה- API הפנימי של Android Build (שתוקפו יפוג לאחר חמש דקות).

קבלת כתובת האתר

כדי למנוע זיוף בקשה חוצה האתר, buildsvc RPC דורש XSRF אסימון כדי להתפרסם עם פרמטרים אחרים. למרות שאסימון זה הופך את התהליך לאבטח יותר, הוא גם הופך את הגישה הפרוגרמטית לקשה הרבה יותר מכיוון שהאסימון (הזמין רק ב- JavaScript של דף ה- PAB) נדרש כעת גם לגישה.

כדי להימנע מבעיה זו, Android 9 מתכנן מחדש את ערכת שמות כתובות האתרים של כל הקבצים (לא רק APKs) כדי להשתמש בשמות כתובות URL ניתנות לחיזוי לגישה לרשימות חפצים וכתובות אתרים של חפצים. ה- PAB משתמש כעת בפורמט URL נוח המאפשר לשותפים להוריד משאבים; סקריפטים HC יכול להוריד ערכות APK אלה בקלות, שכן הפורמט URL ידועה, ו HC יכול לעקוף את הסוגיות XSRF / עוגיה כי זה לא צריך את buildsvc RPC.

מערכת קבצים מקומית

בהתחשב בספרייה עם רשימה (או קובץ zip) של חפצים, ספק ה- build קובע את התמונות הרלוונטיות על סמך מה שיש בספרייה. אתה יכול להשתמש gsutil כלי להעתיק קבצים מ Google Cloud Storage לספרייה מקומית.

בונה מהבהב

לאחר הורדת תמונות המכשיר העדכניות ביותר למארח, יש להבזיק תמונות אלה למכשירים. הדבר נעשה באמצעות תקן adb ו fastboot פקודות subprocesses Python, המבוסס על נתיבי קובץ זמני מאוחסן על ידי ספקי לבנות.

פעולות נתמכות:

  • מהבהב רק ב- GSI
  • הברקת תמונות בודדות מהמערכת העיקרית (למשל, fastboot flash boot boot.img )
  • מהבהב כל התמונות מהמערכת הראשית. דוגמא:
    • fastboot flashall (באמצעות המובנה flashall השירות)
    • fastboot flash (אחד בכל פעם)

ריצות מבחנים

ב- Android 9, תשתית הבדיקות האוטומטיות של VTS תומכת רק ברתמת הבדיקה של TradeFed אך ניתן להרחיב אותה לתמיכה ברתמות אחרות בעתיד.

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

  • בעת שימוש TradeFed מקומית, להשתמש test הפקודה הבקר המארח, אשר לוקח את השם של תוכנית מבחן VTS (למשל vts-selftest ) ומפעיל את המבחן.
  • בעת שימוש אשכול TradeFed (מחובר אופציונלי MTT), להשתמש lease הפקודה במסוף הבקר המארח, אשר מחפשת ריצות מבחן שלא התגשמו.

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

דיווח על תוצאות

תוצאות הבדיקה מדווחות אוטומטית כמה פרויקטים המחוונים VTS ידי VtsMultiDeviceTest .