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

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

ארכיטקטורה

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

Automated test architecture

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

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

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

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

ספקי משאבים

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

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

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

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

שותף לבניית אנדרואיד

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

קבע גישה

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

בקשת פוסט עבור כתובת אתר

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

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

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

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

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

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

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

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

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

בונה פלאש

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

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

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

הפעל בדיקות

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

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

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

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

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

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