בדיקה באמצעות Google Cloud CLI

במדריך הזה מוסבר איך להריץ בדיקת XCTest או בדיקת Game Loop באמצעות ה-CLI של gcloud.

שלב 1: מגדירים את סביבת Google Cloud SDK המקומית

  1. מורידים את Google Cloud SDK.
  2. אחד מהכלים האלה הוא ה-CLI של gcloud.

  3. מוודאים שההתקנה מעודכנת וכוללת את הפקודה gcloud firebase:
          gcloud components update
  4. מתחברים ל-CLI של gcloud באמצעות חשבון Google:
          gcloud auth login
  5. מגדירים את פרויקט Firebase ב-gcloud, כאשר PROJECT_ID הוא מזהה הפרויקט ב-Firebase:
         gcloud config set project PROJECT_ID

שלב 2: מריצים את הבדיקה

הרצת XCTest

  1. מעלים את קובץ ה-ZIP של הבדיקה באמצעות הפקודה הבאה (אם עדיין לא ארזתם את האפליקציה, עיינו בקטע אריזת ה-XCTest):

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products ; \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
  2. בוחרים את המאפיינים של הבדיקה.

    בעזרת Test Lab אפשר להריץ בדיקות במגוון גרסאות iOS, מכשירים, כיווני מסך ומיקומים גיאוגרפיים. ההגדרות האלה נקראות מאפייני הבדיקה. כדי לראות את האפשרויות לכל מאפיין (למשל, גרסאות Xcode שנתמכות בגרסת ה-iOS של המכשיר), מחליפים את dimension ב-models, ב-versions או ב-locales בפקודה הבאה:

    gcloud firebase test ios dimension list

    כיוון המסך הוא קצת יותר פשוט, כי האפשרויות היחידות שלו הן portrait ו-landscape.

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

  3. אחרי שבוחרים קבוצה של מאפייני בדיקה, אפשר להריץ את הבדיקות ב-Test Lab באמצעות הפקודה firebase test ios run. לכל שילוב של מאפייני בדיקה שרוצים לבדוק, צריך לכלול דגל --device נפרד:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --device model=MODEL_ID_2,version=VERSION_ID_2,locale=LOCALE_2,orientation=ORIENTATION_2 \
     etc...

    יכול להיות שהבדיקה תיכשל בגלל חוסר תאימות בין גרסת Xcode שבה הבדיקה נוצרה לבין גרסת Xcode שמוגדרת כברירת מחדל ב-Test Lab. כדי לציין גרסת Xcode נתמכת לבדיקה, משתמשים בדגל --xcode-version:

    gcloud firebase test ios run --test PATH/TO/MyTests.zip \
     --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
     --xcode-version=15

    כדי לזהות ולאתר את מטריצות הבדיקה במסוף Firebase, אפשר לתייג את מטריצת הבדיקה באמצעות הדגל --client-details matrixLabel="<label>" בדוגמה הבאה:

    gcloud beta firebase test ios run --test PATH/TO/MyTests.zip \
      --device model=MODEL_ID_1,version=VERSION_ID_1,locale=LOCALE_1,orientation=ORIENTATION_1 \
      --client-details matrixLabel="my label"

בדיקת הרשאות מיוחדות

כדי לבדוק הרשאות שדורשות מזהה אפליקציה מפורש, אפשר להגדיר את הדגל --test-special-entitlements. Test Lab חותם מחדש על האפליקציה עם מזהה חבילה חדש כדי לתמוך בהרשאות מיוחדות, לכן חשוב לוודא שאין בקובץ ה-ZIP משאבים שמכילים הפניות ישירות למזהה החבילה של האפליקציה.

הרשאות נתמכות:
  1. התראות apns-environment
  2. ‫VPN אישי com.apple.developer.networking.vpn.api
התראות

כדי לאשר בקשות של התראות, המשתמשים יכולים ליצור אסימוני אינטרנט מסוג JSON באמצעות מפתח החתימה הפרטי, יחד עם מזהה המפתח – C7FD9DJAA8 ומזהה הצוות – 9CKCGNNUQN. האסימונים שנוצרו יהיו תקפים למשך שעה אחת וצריך לרענן אותם כל 60 דקות. מידע נוסף זמין במאמר Establishing a Token-Based Connection to APNs (יצירת חיבור מבוסס-אסימון ל-APNs).

קבוצות של אפליקציות

מזהי קבוצות האפליקציות הם ייחודיים באופן אוניברסלי. כלומר, כשאנחנו חותמים מחדש על אפליקציות של משתמשים, אנחנו יכולים להשתמש רק במזהה של קבוצת האפליקציות שמשויך לחשבון הפיתוח של Test Lab. אם הבדיקה מסתמכת על קבוצות של אפליקציות, היא תיכשל.

הרצת בדיקת Game Loop

מריצים את הפקודה gcloud beta firebase test ios run ומשתמשים בדגלים הבאים כדי להגדיר את ההרצה:

דגלים לבדיקות Game Loop
--type

חובה: מציין את סוג הבדיקה ב-iOS שרוצים להריץ. אפשר להזין את סוגי הבדיקות xctest (ברירת המחדל) או game-loop.

--app

חובה: נתיב מוחלט (GCS או מערכת קבצים) לקובץ ה-IPA של האפליקציה. הדגל הזה תקף רק כשמריצים בדיקות של Game Loop.

--scenario-numbers

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

לדוגמה, --scenario-numbers=1-3,5 מריץ את הלולאות 1, 2, 3 ו-5.

--device-model

המכשיר הפיזי שבו רוצים להריץ את הבדיקה (כאן אפשר לראות באילו מכשירים אפשר להשתמש).

--timeout

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

לדוגמה:

  • ‫--timeout=200 מאלץ את הבדיקה להסתיים כשהיא מגיעה ל-200 שניות.
  • הפקודה --timeout=1h מאלצת את הבדיקה להסתיים אחרי שעה אחת.

לדוגמה, הפקודה הבאה מריצה בדיקת Game Loop שמפעילה את הלולאות 1, 4, 6, 7 ו-8 ב-iPhone 8 Plus:

gcloud beta firebase test ios run
 --type game-loop --app path/to/my/App.ipa --scenario-numbers 1,4,6-8
 --device-model=iphone8plus

מידע נוסף על ה-CLI של gcloud מופיע במאמרי העזרה.

שלב 3 (אופציונלי): הפיכת בדיקות עתידיות לאוטומטיות

כתיבת סקריפטים של פקודות gcloud באמצעות Test Lab

אתם יכולים להשתמש בסקריפטים של מעטפת או בקובצי אצווה כדי להפוך פקודות לבדיקת אפליקציות לנייד לאוטומטיות, שבמצב אחר הייתם מריצים באמצעות שורת הפקודה של gcloud. סקריפט ה-bash לדוגמה מריץ XCTest עם זמן קצוב של שתי דקות, ומדווח אם הרצת הבדיקה הושלמה בהצלחה:

if gcloud firebase test ios run --test MyTest.zip --timeout 2m
then
    echo "Test matrix successfully finished"
else
    echo "Test matrix exited abnormally with non-zero exit code: " $?
fi

קודי יציאה של סקריפטים

‫Test Lab מספק כמה קודי יציאה שאתם יכולים להשתמש בהם כדי להבין טוב יותר את תוצאות הבדיקות שאתם מריצים באמצעות סקריפטים או קובצי אצווה.

קוד יציאה הערות
0 כל ביצועי הבדיקות עברו בהצלחה.
1 הייתה שגיאה כללית. סיבות אפשריות: שם קובץ שלא קיים או שגיאת HTTP/שגיאה בחיבור לרשת.
2 הבדיקה הופסקה כי סופקו פקודות או ארגומנטים לא ידועים.
10 מקרה בדיקה אחד או יותר (מחלקות או שיטות של מחלקות שנבדקו) בביצוע הבדיקה לא עבר.
15 ‫Firebase Test Lab לא הצליח לקבוע אם מטריצת הבדיקה עברה או נכשלה בגלל שגיאה לא צפויה.
19 מטריצת הבדיקה בוטלה על ידי המשתמש.
20 אירעה שגיאה בתשתית הבדיקה.

שלב 4: בודקים את תוצאות הבדיקה

כשהבדיקה מתחילה, אתם מקבלים קישור לדף תוצאות הבדיקה. הבדיקות יכולות להימשך כמה דקות, בהתאם למספר ההגדרות השונות שבחרתם ולמשך הזמן הקצוב שהגדרתם לבדיקות. אחרי שהבדיקות יסתיימו, תוכלו לעיין בתוצאות שלהן. במאמר ניתוח תוצאות של Firebase Test Lab מוסבר איך לפרש את תוצאות הבדיקה.

השלב הבא

במסמכי התיעוד של Google Cloud SDK תוכלו לקרוא על אפשרויות הבדיקה שזמינות לכלל המשתמשים או בגרסת בטא.