שלב Test Lab במערכת ה-CI/CD שלך

1. הקדמה

עדכון אחרון: 2022-04-07

כיצד להפעיל בדיקות ניידות עם מערכות CI/CD

הפעלת בדיקות ניידות עשויה להיות קשה: אפליקציות רבות פועלות על פלטפורמות, מכשירים וגרסאות API שונות. מפתחי אפליקציות רוצים לבדוק כמה שיותר תצורות כדי לתפוס בעיות לפני שהמשתמשים שלהם עושים זאת. אבל, אילוצי עלות ומשאבים מגבילים את מספר התקני הבדיקה ואת כמות התחזוקה הידנית שמפתחים בודדים יכולים להשקיע בה. כאשר תהליך הפיתוח גדל, במיוחד עבור מערכות אינטגרציה מתמשכת/פיתוח מתמשך (CI/CD), תהליך הבדיקה צריך להיות אוטומטי תוך צמצום העלות והמאמץ של תחזוקה.

כדי לעזור לך להבין את ביצועי האפליקציות שלך במכשירים של המשתמשים שלך, Firebase Test Lab מארחת מגוון מכשירים פיזיים ווירטואליים ניידים במרכזי הנתונים שלנו. אנו מספקים גם את Google Cloud CLI, כלי שורת פקודה עצמאי בפלטפורמה שמתארגן בדיקות ריצה במכשירים במרכזי הנתונים שלנו. ה-gcloud CLI מקל על שילוב פתרון הבדיקות מבוסס הענן של Test Lab בזרימות עבודה קיימות של CI/CD.

תמיכה חוצת פלטפורמות

Test Lab מספקת פתרונות בדיקה עבור אפליקציות אנדרואיד ו-iOS ותמיכה מיוחדת עבור משחקים ניידים כמו Unity. אפשרויות הבדיקה מכסות מסגרות בדיקה פופולריות כמו Android Espresso, UI Automator ו- iOS XCTest. באמצעות הסורק האוטומטי שלנו, Robo , Test Lab יכולה אפילו להריץ בדיקות ללא כל קוד בדיקה.

אין דרישות חומרה

Test Lab מארחת מכשירים פיזיים במרכזי הנתונים של גוגל, והיא מארחת מכשירים וירטואליים ב-Google Cloud. כל מה שאתה צריך לעשות הוא לשלוח את הבדיקות שלך ל-Test Lab ולחכות לתוצאות.

מהיר ואמין

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

מה תלמד

  • כיצד לבנות חפצי בדיקה
  • כיצד להפעיל בדיקה לנייד באמצעות gcloud CLI
  • כיצד להגדיר את Jenkins CI
  • כיצד להפעיל בדיקות ניידות באמצעות Jenkins CI
  • כיצד להגדיר בדיקות להתרחבות עם מערכות CI

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

מה אתה צריך

אם אתה מעדיף לבנות דברים מאפס, אתה צריך את Android Studio כדי להריץ מבחן אנדרואיד, או XCode כדי להריץ מבחן iOS. או פשוט תביא את עצמך ואנו נספק את החפצים.

2. הפעל בדיקה עם gcloud CLI

בנה APK של אפליקציית Android ובדיקת APK

כדי להפעיל בדיקה עם Test Lab, התחל בבניית APK של אפליקציית אנדרואיד ו-APK לבדיקה, שמכיל בדיקות מכשור להפעלה במכשירי חומרה או אמולטורים. אם כבר יש לך בסיס קוד עובד, אתה יכול לבנות APKs משלך או שאתה יכול להשתמש ב- BasicSample עבור אספרסו .

כדי לבנות APKs באמצעות פקודות Gradle, עליך להתקין את ה-Android SDK. אם Android Studio שלך לא מותקן במחשב שלך, התקן את Android Studio ו-Android SDK והגדר את סביבת ANDROID_HOME עם ספריית Android SDK שלך. לדוגמה, בקובץ ~/.bash_profile שלך, הוסף את השורה הבאה:

export ANDROID_HOME=~/Android/Sdk # For linux
export ANDROID_HOME=~/Library/Android/sdk  # For MacOS

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

git clone https://github.com/android/testing-samples.git
cd testing-samples/ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

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

app/build/outputs/apk/debug/app-debug.apk
app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

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

  • כדי לבנות חבילות APK ב-Android Studio, עקוב אחר ההוראות ב- Test in Android Studio .
  • הורד את אפליקציית Notepad לדוגמה. השתמש בקובץ הבינארי app-debug-unaligned.apk ובקובץ בדיקות המכשור app-debug-test-unaligned.apk , שנמצאים ב- NotePad/app/build/outputs/apk/ .

אם יש לך קוד מקור עובד עבור אפליקציית iOS, אתה יכול לכתוב XCTest ולבנות קובץ zip מהאפליקציה ומהבדיקות.

השתמש ב-gcloud CLI כדי להריץ בדיקה עם Test Lab

בסעיף זה, אתה יוצר פרויקט Firebase ומגדיר את סביבת Google Cloud SDK המקומית שלך. למידע נוסף, ראה התחל בבדיקה עם gcloud CLI .

הגדר את gcloud CLI

  1. הורד את Google Cloud SDK , הכולל את הכלי gcloud CLI.
  2. ודא שההתקנה שלך מעודכנת:
gcloud components update
  1. היכנס ל-gcloud CLI באמצעות חשבון Google שלך:
gcloud auth login
  1. הגדר את פרויקט Firebase שלך ​​ב-gcloud CLI, כאשר PROJECT_ID הוא מזהה הפרויקט שלך ב-Firebase. אתה יכול למצוא את מזהה הפרויקט בכתובת ה-URL של מסוף Firebase, העוקבת אחר מוסכמות השמות הזו: https://console.firebase.google.com/project/[PROJECT_ID]/...
gcloud config set project PROJECT_ID

אם אין לך פרויקט Firebase, צור פרויקט ב- Firebase Console .

הפעל בדיקה באמצעות חבילות ה-APK המובנות

בסעיף זה, אתה מפעיל בדיקת מכשור במכשיר ברירת המחדל של Test Lab, שהוא Pixel 3 עם רמת API 28. אם תרצה להשתמש במכשיר אחר, בדוק מכשירים זמינים .

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

gcloud firebase test android run \
  --type instrumentation \
  --app app/build/outputs/apk/debug/app-debug.apk \
  --test app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

נתח את תוצאות הבדיקה

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

  • סיכום gcloud - כאשר הבדיקה שלך מסתיימת, ה-gcloud CLI מדפיס סיכום בסיסי של תוצאות הבדיקה שלך.
  • קוד יציאה gcloud - לאחר סיום הבדיקה, הפקודה יוצאת עם 0 אם המבחן עבר. אם הבדיקה נכשלת, הפקודה יוצאת עם קוד יציאה שאינו אפס.
  • Firebase Console - ה-gcloud CLI מדפיס קישור לקונסולת Firebase. הקישור עוקב אחר מוסכמות השמות https://console.firebase.google.com/project/PROJECT_ID/testlab/... למידע נוסף, ראה פירוש תוצאות מביצוע בדיקה בודדת .
  • קובץ XML JUnit - ה-gcloud CLI מדפיס את הדברים הבאים:
Raw results will be stored in your Cloud Storage bucket at [https://console.developers.google.com/storage/browser/test-lab-xxxxx/xxxxx/]

test-lab-xxxxx/xxxxx הוא דלי ה-Cloud Storage המאחסן חפצי בדיקה ותוצאות. כדי לאתר את קובץ ה-XML של JUnit המכיל את תוצאות הבדיקה, פתח את הקישור ונווט אל blueline-28-en-portrait/test_result_1.xml .

3. הגדר עם Jenkins CI

בחלק זה אתה משתמש ב-Jenkins CI, מערכת CI פופולרית, כדי להריץ בדיקות עם Test Lab. אם ברצונך להשתמש במערכת CI אחרת, ראה שיטות עבודה מומלצות מתקדמות להפעלת חבילות בדיקה גדולות ואת התיעוד עבור מערכות CI אחרות כמו Bitrise ו- Circle CI . אתה יכול להשתמש ב-Flank כחלופה ל-gcloud CLI.

הפעל את gcloud CLI עבור Jenkins

לפני שתוכל להשתמש ב-Test Lab עם Jenkins, עליך להפעיל ממשקי API נדרשים ולהגדיר חשבון שירות שבו Jenkins יכול להשתמש כדי לאמת עם gcloud CLI.

הוסף חשבון שירות Google Cloud עבור Jenkins

חשבונות שירות הם חשבונות מוגבלים המיועדים לשילובי שירותים. חשבונות אלה מציעים שליטה מדוקדקת עבור שירותים ספציפיים ואינם כפופים לבדיקות דואר זבל או הנחיות ל-captcha, שאחרת עלולות לחסום את בניית ה-CI שלך.

כדי ליצור חשבון שירות, בצע את השלבים הבאים:

  1. פתח את דף חשבונות השירות ב-Google Cloud Console.
  2. לחץ על צור חשבון שירות , הוסף שם ותיאור ולאחר מכן לחץ על צור והמשך .
  3. מהתפריט הנפתח בחר תפקיד , בחר בסיסי ולאחר מכן בחר עורך .
  4. לחץ על המשך ולאחר מכן לחץ על סיום .

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

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

  1. מהדף חשבונות שירות ב-Google Cloud Console, לחץ על האימייל המשויך לחשבון שיצרת.
  2. בחר מפתחות ולאחר מכן לחץ על הוסף מפתח וצור מפתח חדש .
  3. בחר JSON ולאחר מכן לחץ על צור .
  4. כאשר תתבקש להוריד את הקובץ, לחץ על אישור. הורד את הקובץ למקום בטוח במחשב שלך. אתה צריך את הקובץ הזה מאוחר יותר בעת הגדרת התצורה של Jenkins.

למידע נוסף על יצירת חשבונות שירות, ראה יצירת חשבון שירות .

הפעל ממשקי API נדרשים של Google Cloud

ה-Cloud Testing API מאפשר לך להריץ בדיקות בתשתית Google. הפעלת את ה-API הזה כשהשלמת הפעל בדיקה עם gcloud CLI. ה-Cloud Tool Results API מאפשר לך לגשת לתוצאות הבדיקה שלך באופן פרוגרמטי.

  1. פתח את ספריית ה-API של Google Developers Console .
  2. בסרגל החיפוש בחלק העליון של מסוף Firebase, הזן את השם של כל API נדרש ( Cloud Testing API ו- Cloud Tool Results API ). דף הסקירה הכללית של ממשק ה-API המבוקש מופיע.
  3. לחץ על הפעל API בדף הסקירה הכללית של כל ממשק API.

התקן והגדר את Jenkins

אתה יכול להתקין ולהגדיר את Jenkins CI ב-Linux, macOS, Windows וסביבות רבות אחרות. פרטים מסוימים של מעבדת קוד זה הינם ספציפיים להתקנה והרצה של Jenkins CI ב-Linux, לרבות השימוש ב-slashes (/) בנתיבי קבצים.

כדי להוריד ולהתקין את Jenkins במחשב עם לינוקס או Windows, עקוב אחר ההוראות להתקנת Jenkins . לאחר התקנת Jenkins, עקוב אחר אותן הוראות התקנה של Jenkins כדי להשלים את ההגדרה ולגשת ללוח המחוונים של Jenkins באמצעות http://localhost:8080 .

אמת פלאגינים מותקנים

ג'נקינס תומך במערכות בקרת גרסאות שונות. ב-codelab זה, אתה משתמש ב-Git כדי להריץ את הבדיקה הקודמת. וכדי לקבל חוויה טובה יותר עם הפעלת ה-gcloud CLI, עליך להתקין את הפלאגין GCloud SDK.

  1. בלוח המחוונים של Jenkins, לחץ על Manage Jenkins ולאחר מכן לחץ על Manage Plugins .
  2. חפש את התוספים Git ו- GCloud SDK והתקן אותם (אם הם עדיין לא מותקנים).

הגדר את המיקום של ערכות ה-Android ו-Google Cloud שלך

כעת אתה מורה לג'נקינס היכן למצוא את Google Cloud SDK ו-Android SDK.

כדי להגדיר את ערכות ה-SDK של Google Cloud ו-Android עבור Jenkins, בצע את השלבים הבאים:

  1. בלוח המחוונים של Jenkins, לחץ על נהל את Jenkins ולאחר מכן לחץ על תצורת כלי גלובלי .
  2. בקטע Google Cloud SDK , לחץ על הוסף Google Cloud SDK .
  3. בשדה שם , הזן שם עבור מופע Google Cloud SDK שקל לזכור אותו, לדוגמה, GCloud-SDK.
  4. הזן את ספריית הבית של Google Cloud SDK שלך, לדוגמה, /opt/google-cloud-sdk .
  5. לחץ על שמור .
  6. הגדר את המאפיינים בכל המערכת שלך עבור SDK של Android ו-Google Cloud על ידי פתיחת לוח המחוונים > נהל את Jenkins > הגדר מערכת .
  7. בחר בתיבת הסימון משתני סביבה ולחץ על הוסף .
  8. בשדה שם , הזן ANDROID_HOME . בשדה Value , הזן את המיקום של Android SDK שלך, לדוגמה, /opt/Android/Sdk .
  9. לחץ על תיבת הסימון מיקומי כלי ולחץ על הוסף . מהתפריט הנפתח שם , בחר את שם המופע של Google Cloud SDK שהוספת בתצורת הכלים הגלובלית.
  10. בשדה בית , הזן את המיקום של Google Cloud SDK שלך, לדוגמה, /opt/google-cloud-sdk .
  11. לחץ על שמור .

הוסף את פרטי חשבון השירות שלך לג'נקינס

כעת אתה מוסיף את אישורי חשבון שירות gcloud CLI שלך לג'נקינס כדי שג'נקינס יוכל לאמת ולהריץ בהצלחה פקודות gcloud CLI.

  1. בלוח המחוונים של Jenkins, לחץ על ניהול Jenkins ולאחר מכן לחץ על ניהול אישורים .
  2. בקטע חנויות בטווח של ג'נקינס , לחץ על קישור הדומיין (גלובלי) , ולאחר מכן לחץ על הוסף אישורים .
  3. מהתפריט הנפתח סוג , בחר חשבון שירות Google מהמפתח הפרטי .
  4. בשדה שם הפרויקט , הזן את שם הפרויקט שלך ב-Firebase.
  5. בחר מפתח JSON , ולאחר מכן לחץ על עיון ודפדף למיקום שבו שמרת את מפתח חשבון השירות שלך.
  6. לחץ על צור .

כעת אתה מוכן להגדיר את המבנה האוטומטי של Jenkins עבור מעבדת הבדיקות.

4. הפעל בדיקות מעבדה עם Jenkins CI

כעת לאחר שהגדרת את ג'נקינס, בוא נחבר הכל ונפעיל את אותה בדיקה באמצעות ג'נקינס.

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

צור והגדר את פרויקט Jenkins שלך

צור פרויקט להפעלת בדיקות אינטגרציה מתמשכות של האפליקציה שלך עם Test Lab.

צור פרויקט של ג'נקינס

  1. פתח את לוח המחוונים של Jenkins על ידי גלישה אל http://localhost:8080 .
  2. בלוח המחוונים של Jenkins, לחץ על פריט חדש .
  3. הזן שם לפרוייקט שלך בשדה שם פריט ולחץ על פרוייקט Freestyle כדי ליצור פרוייקט שמשתמש בתצורת בנייה אחת.
  4. לחץ על אישור . כדי להשלים את תצורות הפרויקט, השלם את החלקים הנותרים ברצף.

הגדר ניהול קוד מקור

  1. מהכרטיסייה ניהול קוד מקור , בחר Git .
  2. הזן https://github.com/android/testing-samples.git בשדה URL של מאגר .

הגדר את סביבת הבנייה

הקטע Build Environment מאפשר לך להגדיר מאפייני בנייה. הפעל את האימות של Google Cloud על ידי ביצוע השלבים הבאים:

  1. בכרטיסייה Build Environment , בחר בתיבת הסימון GCloud SDK אימות ובחר את שם ההתקנה שבחרת כשהוספת את פרטי ההתקנה של Google Cloud.
  2. מהתפריט הנפתח אישורי Google , בחר את אישורי חשבון השירות שהגדרת.

הוסף שלבי בניית Gradle כדי לבנות מחדש חבילות APK

  1. גלול מטה למקטע בנייה , לחץ על הוסף שלב בנייה ולאחר מכן בחר בצע מעטפת .
  2. הוסף שלב בנייה כדי להפעיל את הפקודות הבאות בספרייה הראשית עבור היישום שלך:
cd ui/espresso/BasicSample/
./gradlew assembleDebug  # for generating app apk
./gradlew assembleDebugAndroidTest # for generating testing apk

הוסף שלב בניית gcloud CLI לג'נקינס

כעת אתה מוכן להוסיף שלב בנייה לג'נקינס כדי להפעיל את Test Lab באמצעות שורת הפקודה gcloud CLI.

כדי להוסיף את שלב הבנייה של gcloud CLI, הוסף שלב בניית מעטפת Execute חדש והזן את הפקודה הבאה:

gcloud config set project PROJECT_ID
gcloud firebase test android run \
--app ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/debug/app-debug.apk
--test ${WORKSPACE}/ui/espresso/BasicSample/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk

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

הרץ בדיקות עם ג'נקינס

כעת אתה מוכן לבנות את פרויקט Jenkins ולהפעיל בדיקה כמו הבדיקה הידנית שהרצת עם gcloud CLI.

כדי להפעיל בדיקה עם Jenkins, בצע את השלבים הבאים:

  1. כדי להפעיל את ה-Build באופן ידני, לחץ על Build Now .
  2. בדוק את ההתקדמות והתוצאות על ידי לחיצה על המבנה החדש > פלט מסוף .

אם אינך רואה שגיאות, מזל טוב! פשוט הגדרת פרויקט והרצת בדיקה במכשיר Pixel 2 בלחיצה אחת. אם אתה נתקל בשגיאות, ראה פתרון בעיות .

5. שיטות עבודה מומלצות מתקדמות להפעלת חבילות בדיקה גדולות

כאשר אתה רוצה להריץ בדיקות רבות בו-זמנית, פעל לפי השיטות המומלצות האלה כדי להבטיח שהבדיקות שלך יפעלו במהירות ובאמינות.

הגדל את הכיסוי בתצורות מרובות של מכשירים

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

  • Google Pixel 2 וירטואלי עם API ברמה 30 בכיוון לאורך ובמקום האנגלית
  • סמסונג גלקסי S20 פיזי עם API ברמה 29 בכיוון לרוחב ובאזור הצרפתי
gcloud firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --device model=Pixel2,version=30,locale=en,orientation=portrait  \
  --device model=x1q,version=29,locale=fr,orientation=landscape

השתמש בקובץ תצורה של gcloud CLI YAML

אם אתה מעדיף לנהל את הארגומנטים שלך במקום אחד או עם מערכת בקרת המקור שלך, אתה יכול לציין ארגומנטים אלה בקובץ ארגומנטים בפורמט YAML. כדי ללמוד כיצד להשתמש בתכונה זו, הפעל את gcloud topic arg-files .

בדיקות Shard לפעול במקביל

ריסוק הבדיקות מחלק קבוצה של בדיקות לתת-קבוצות (שברים) הפועלות בנפרד בבידוד. Test Lab מפעיל אוטומטית כל רסיס במקביל באמצעות התקנים מרובים, מה שמאפשר ל-Test Lab להשלים את כל מערך הבדיקות מהר יותר. למידע נוסף, ראה הפעלת פיצול .

כדי לאפשר פיצול, השתמש בערוץ gcloud beta והוסף או –num-uniform-shards או –test-targets-for-shard דגל לשלב הבנייה של gcloud CLI. לדוגמה, כדי לפזר את הבדיקות שלך לחמש פעולות ולהפעיל במקביל, הפעל את הפקודות הבאות:

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-uniform-shards 5

אפשר זיהוי התקלפות

בדיקות ניידות עשויות לעתים קרובות להיות מתקלות. לפעמים מבחנים עוברים, ופעמים אחרות הם עלולים להיכשל, אפילו עם אותה הגדרה. אתה יכול לזהות אם בדיקה שנכשלה הייתה מתקלקלת באמצעות דגל -num-flaky-test-attempts gcloud CLI. דגל זה מציין את מספר הפעמים שביצוע בדיקה צריך להתבצע מחדש אם אחד או יותר ממקרי הבדיקה נכשלים מסיבה כלשהי.

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

gcloud beta firebase test android run \
  --type instrumentation \
  --app app-debug.apk \
  --test app-debug-test.apk \
  --num-flaky-test-attempts 3

6. מזל טוב

מזל טוב, הפעלת בהצלחה את מבחן מעבדת הבדיקה הראשון שלך עם מערכת CI!

בנית אפליקציות ובדיקות APK, והרצת בדיקת מכשור עם Test Lab באמצעות gcloud CLI. אתה גם מגדיר פרויקט Jenkins כדי להפוך את אותה בדיקה לאוטומטית.

עכשיו אתה יודע את השלבים העיקריים לשילוב Test Lab במערכת ה-CI/CD שלך.

מה הלאה?

בדוק כיצד להגדיר CI באמצעות Firebase Emulator Suite

לקריאה נוספת

מסמכי עזר