פתרון בעיות ב-Test Lab & שאלות נפוצות
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
בדף הזה מפורטות תשובות לשאלות נפוצות בנושא הרצת בדיקות באמצעות Firebase Test Lab, וגם עזרה בפתרון בעיות. יש גם תיעוד של בעיות מוכרות. אם לא מצאתם את מה שחיפשתם או שאתם צריכים עזרה נוספת, אתם יכולים להצטרף לערוץ #test-lab ב-Firebase Slack או לפנות אל התמיכה של Firebase.
פתרון בעיות
למה הבדיקה נמשכת כל כך הרבה זמן?
כשבוחרים מכשיר עם רמת קיבולת גבוהה בקטלוג Test Lab
הבדיקות עשויות להתחיל מהר יותר. אם הקיבולת של המכשיר נמוכה, יכול להיות שהבדיקות יימשכו זמן רב יותר. אם מספר הבדיקות שהופעלו גדול בהרבה מהקיבולת של המכשירים שנבחרו, יכול להיות שיעבור זמן רב יותר עד שהבדיקות יסתיימו.
בדיקות שמופעלות בכל רמת קיבולת של מכשיר עשויות להימשך זמן רב יותר בגלל הגורמים הבאים:
תנועת הגולשים, שמשפיעה על זמינות המכשיר ועל מהירות הבדיקה.
כשלים במכשיר או בתשתית, שיכולים לקרות בכל שלב. כדי לבדוק אם יש תשתית מדווחת ל-Test Lab, אפשר לעיין בלוח הבקרה של הסטטוס של Firebase.
מידע נוסף על קיבולת המכשיר ב-Test Lab זמין במאמרים על קיבולת המכשיר ל-Android ול-iOS.
למה קיבלתי תוצאות לא חד-משמעיות של בדיקה?
תוצאות לא חד-משמעיות של בדיקות מתרחשות בדרך כלל בגלל ביטול של הרצת בדיקות או בגלל שגיאות בתשתית.
שגיאות בתשתית נגרמות מבעיות פנימיות ב-Test Lab, כמו שגיאות ברשת או התנהגויות לא צפויות של המכשיר. Test Lab המערכת מפסיקה באופן פנימי הפעלות של בדיקות שיוצרות שגיאות בתשתית כמה פעמים לפני שהיא מדווחת על תוצאה לא חד-משמעית. עם זאת, אפשר להשבית את הניסיונות החוזרים האלה באמצעות failFast.
כדי לגלות את הגורם לשגיאה, פועלים לפי השלבים הבאים:
כדי לוודא שהבעיה ניתנת לשחזור, צריך לנסות שוב את הבדיקה ב-Test Lab.
אם אפשר, כדאי לנסות להריץ את הבדיקה במכשיר אחר או בסוג מכשיר אחר.
אם הבעיה נמשכת, אפשר לפנות אל Test Labהצוות בערוץ#test-lab ב-Firebase Slack.
למה הוספת שרדינג גרמה להרצת הבדיקות שלי למשך זמן ארוך יותר?
החלוקה לשברים עלולה לגרום לבדיקות להימשך זמן רב יותר אם מספר השברים שציינתם גדול ממספר המכשירים שזמינים לשימוש ב-Test Lab. כדי להימנע מהמצב הזה, כדאי לנסות לעבור למכשיר אחר. מידע נוסף על בחירת מכשיר אחר זמין במאמר
קיבולת המכשיר.
למה לוקח הרבה זמן עד שהבדיקה מתחילה?
כששולחים בקשה לבדיקה, המערכת קודם מאמתת את האפליקציה, חותמת עליה מחדש וכו', כדי להכין אותה להרצת בדיקות במכשיר. בדרך כלל התהליך הזה מסתיים תוך כמה שניות, אבל הוא יכול להיות מושפע מגורמים כמו גודל האפליקציה.
אחרי שהאפליקציה מוכנה, מתוזמנות הרצות של בדיקות והן נשארות בתור עד שמכשיר יהיה מוכן להריץ אותן. עד שכל ההרצות של הבדיקות יסתיימו, הסטטוס של המטריצה יהיה 'בהמתנה' (ללא קשר לשאלה אם ההרצות של הבדיקות נמצאות בתור או שהן פועלות באופן פעיל).
למה לוקח כל כך הרבה זמן עד שהבדיקה מסתיימת?
אחרי שהבדיקה מסתיימת, המערכת מורידה את תוצרי הבדיקה מהמכשיר, מעבדת אותם ומעלה אותם אל Cloud Storage. משך הזמן של השלב הזה יכול להיות מושפע מהכמות והגודל של הארטיפקטים.
פתרון בעיות ספציפיות ל-Android
האפליקציה לא מחזירה נתונים ולא ניתן לאתר צילומי מסך
פריטי מידע (artifacts) של הרצת בדיקות (כמו צילומי מסך וקבצי יומן) מאוחסנים ב-Google Cloud Storage ומוצגים ישירות במסוף Firebase. אם ביצעתם את הבדיקה ב-90 הימים האחרונים, ודאו שהקציתם תפקידים ברמת הפרויקט (בעלי הפרויקט, עריכת הפרויקט או צפייה בפרויקט).
צריך גם לוודא שיומן הביקורת של Cloud לא מופעל בפרויקט או בארגון.
אם ההרצה בוצעה לפני יותר מ-90 יום, סביר להניח שהארטיפקטים של הבדיקה נמחקו אוטומטית. כדי לבדוק את הגדרת קטגוריית התוצאות, לוחצים על הכרטיסייה Test results (תוצאות הבדיקה) בלוח הבקרה Test Lab. כברירת מחדל, התוצאות נשמרות למשך 90 יום.
כדי לשמור את תוצאות הבדיקה למשך זמן ארוך יותר, מריצים את הפקודה gcloud firebase test android run עם הדגל --results-bucket ומעבירים את שם קטגוריית התוצאות. מידע נוסף מופיע במאמרי העזרה של gcloud firebase test android run.
למה אני מקבל תוצאות חלקיות או חסרות של בדיקות מכשור?
כשמריצים בדיקות של מכשור, יכול להיות שיוצגו שגיאות בדיקה שמצביעות על תוצאות חלקיות שמכילות הודעות כמו Test run failed to complete. Expected
x tests, received y (כאשר y קטן מ-x). השגיאה הזו מציינת שלא הייתה אפשרות לנתח את logcat עבור סמני התחלה או סיום של תרחיש בדיקה, שבדרך כלל נוצרים על ידי AndroidJUnitRunner.Test Lab
אלה כמה מהסיבות הנפוצות לבעיה הזו:
תיאור הבעיה
פתרון אפשרי
מקרה הבדיקה לא הופעל בגלל שהזמן הקצוב לתפוגה חלף. אם משך הזמן הכולל של הבדיקות ארוך יותר מהזמן הקצוב לתפוגה שציינתם או ארוך יותר מהזמן הקצוב המקסימלי לתפוגה, Test Lab מבטל את שאר תרחישי הבדיקה.
כדי לוודא שכל הבדיקות יושלמו, צריך להגדיל את הזמן הקצוב לתפוגה של המטריצה.
אם עדיין לא עשיתם זאת, כדאי לפצל את הבדיקות כך שכל חלק יריץ קבוצת משנה של הבדיקות ויסתיים תוך פרק זמן קצר יותר.
אם כבר הפעלתם את הפיצול, הגדילו את מספר הפיצולים.
השלמת תרחיש הבדיקה נכשלה כי הוא יצא מוקדם מדי או נתקע.
יכול להיות שהרצת תרחיש הבדיקה תסתיים לפני הזמן בגלל חריגה שלא נתפסה או בגלל שגיאת טענה. תרחישי בדיקה עלולים להיתקע בלולאה אינסופית או שלא יוכלו להמשיך, למשל אם האפליקציה לא מציגה את התצוגה הנכונה ותרחיש הבדיקה לא יכול לבצע את הפעולה בממשק המשתמש.
בודקים את הסרטון ואת logcat כדי לברר באיזו נקודה הבדיקה נעצרה.
מפעיל בדיקות בהתאמה אישית (כולל הרחבה של AndroidJUnitRunner) קרס באופן בלתי צפוי או כתב סמנים לא צפויים של התחלה או סיום של תרחיש בדיקה אל logcat.
בודקים את הקוד של כלי ההרצה של הבדיקות.
נכתבו יותר מדי יומנים אל logcat, מה שגרם לעומס יתר על המאגר הזמני או לקריסה של התהליך logcat.
הקטנת מספר הפעולות של כתיבה ל-logcat.
האפליקציה שנבדקה קרסה.
מבצעים ניפוי באגים באפליקציה.
שאלות נפוצות
מהן המכסות ללא עלות של Test Lab? מה עושים אם נגמרים המינויים?
Firebase Test Lab מציע מכסות ללא עלות לבדיקה במכשירים ולשימוש ב-Cloud APIs. שימו לב: המכסה לבדיקות מבוססת על תוכנית התמחור הרגילה של Firebase, אבל המכסות של Cloud API לא מבוססות עליה.
מכסת בדיקות
מכסות הבדיקות נקבעות לפי מספר המכשירים שמשמשים להרצת הבדיקות.
בתוכנית Firebase Spark יש מכסת בדיקות קבועה ללא עלות למשתמשים. בתוכנית Blaze, יכול להיות שהמכסות יגדלו אם השימוש שלכם ב-Google Cloud יגדל עם הזמן. אם הגעתם למכסת הבדיקה, צריך לחכות עד למחרת או לשדרג למינוי Blaze אם יש לכם כרגע מינוי Spark.
אם כבר יש לכם מינוי Blaze, אתם יכולים לבקש להגדיל את המכסה.
מידע נוסף על מכסת בדיקה
שולחים בקשה להגדלת המכסות על ידי עריכת המכסות ישירות במסוף Google Cloud (שימו לב שרוב המגבלות מוגדרות כברירת מחדל למקסימום), או
כדי לבקש הגדלה של מכסות ה-API, אפשר למלא טופס בקשה במסוף Google Cloud או לפנות אל התמיכה של Firebase.
איך אפשר לדעת אם התנועה שמגיעה אל ה-Backend שלי מגיעה מ-Test Lab?
מהקצה העורפי שלכם, תוכלו לבדוק את כתובת ה-IP של המקור מול טווח כתובות ה-IP שלנו כדי לקבוע אם התנועה מגיעה ממכשירי בדיקה שמארחים ב-Firebase.
האם Test Lab פועל עם VPC-SC?
Test Lab לא פועל עם VPC-SC, שחוסם את ההעתקה של אפליקציות ופריטי בדיקה אחרים בין האחסון הפנימי של Test Lab לבין קטגוריות התוצאות של המשתמשים.
איך מזהים בדיקות לא יציבות ב-Test Lab?
כדי לזהות התנהגות לא יציבה בבדיקות, מומלץ להשתמש באפשרות
--num-flaky-test-attempts
. החיוב על הפעלות חוזרות של בדיקות שנכשלו או שהן נספרות במסגרת המכסה היומית, בדיוק כמו הפעלות רגילות של בדיקות.
זכור את הנקודות הבאות:
אם מזוהה כשל, כל הבדיקה מופעלת מחדש. אין תמיכה בניסיון חוזר רק של תרחישי בדיקה שנכשלו.
הפעלות חוזרות של בדיקות לא יציבות מתוזמנות להרצה באותו הזמן, אבל לא מובטח שהן ירוצו במקביל, למשל, כשהתנועה חורגת ממספר המכשירים הזמינים.
שאלות נפוצות שספציפיות ל-iOS
האם Test Lab תומך ב-Appium, Flutter/FlutterDriver, ReactNative/Jest או Cucumber?
חלק מהפריטים האלה נמצאים בתוכנית הפיתוח שלנו, אבל כרגע אין לנו אפשרות להתחייב לתמיכה בפלטפורמות האלה לבדיקות ולפיתוח אפליקציות.
איפה אפשר למצוא פרטים על המכשיר, כמו רזולוציה וכו'?
מידע מפורט על המכשיר זמין דרך ה-API, ואפשר לגשת אליו מלקוח gcloud באמצעות הפקודה describe:
gcloud firebase test ios models describe MODEL
האם אפשר להשתמש ב-sharding בבדיקות iOS?
אין תמיכה מובנית ב-Sharding ב-Test Lab ל-iOS. עם זאת, אפשר להשתמש בלקוח Flank כדי לפצל את תרחישי הבדיקה של iOS.
כדי להשתמש בשיטה הזו, צריך להגדיר את המפתח OnlyTestIdentifiers ואת הערכים בקובץ .xctestrun.
פרטים נוספים מופיעים בדף man בנושא xcodebuild.xctestrun.
למה חסרים סרטונים בתוצאות של בדיקה ב-iOS?
ב-iOS 18 ואילך, אנחנו לא יכולים לתמוך בסרטונים בתוצאות.
שאלות נפוצות שספציפיות ל-Android
האם Test Lab תומך במכשירים לבישים?
כן! Test Lab תומך ב-Google Pixel Watch. עכשיו אפשר להריץ בדיקות באפליקציית Wear העצמאית בשעוני Google Pixel Watch. מידע נוסף על מכשירים זמין במאמר בדיקה במכשירים זמינים.Test Lab
האם Test Lab תומך במכשירי Google העדכניים?
כן! Test Lab תומך ב-Google Pixel Tablet וב-Google Pixel Fold. אפשר להריץ את הבדיקות במכשירים פיזיים עצמאיים.
מידע נוסף על מכשירים זמין במאמר בדיקה במכשירים זמינים.Test Lab
איך מזהים בדיקה פעילה ב-Test Lab?
אם אתם בודקים את האפליקציה ב-Firebase או מריצים בדיקות כדי ליצור דוח טרום-הפעלה ב-Play Console, אתם יכולים לבדוק אם הבדיקה מורצת במכשיר שמארח Firebase. לשם כך, צריך לבדוק את מאפיין המערכת firebase.test.lab בקובץ MainActivity. לאחר מכן, אפשר להריץ הצהרות נוספות על סמך הערך הבוליאני של testLabSetting. מידע נוסף זמין במאמר בנושא התנהגויות שונות של בדיקות.
האם Test Lab
תומך ב-Appium, Flutter/FlutterDriver, ReactNative/Jest או Cucumber?
חלק מהפריטים האלה נמצאים בתוכנית הפיתוח שלנו, אבל כרגע אין לנו אפשרות להתחייב לתמיכה בפלטפורמות האלה לבדיקות ולפיתוח אפליקציות. עם זאת, אם יצרתם את האפליקציה באמצעות מסגרת שתומכת ב-Espresso (לדוגמה, Flutter), אתם יכולים לכתוב בדיקת מכשור באמצעות Espresso ואז להריץ את הבדיקה ב-Test Lab.
האם Test Lab
תומך בבדיקה של אפליקציות שעברו טשטוש, למשל באמצעות ProGuard או R8)?
Test Lab לא תומך באופן מפורש בהסתרת קוד או בביטול ההסתרה. האפליקציה כנראה תפעל, אבל כל נתוני האפליקציה שעברו הסתרה, כמו עקבות מחסנית, יופיעו ביומנים כנתונים שעברו הסתרה.
האם אפשר להשתמש במכשיר מתקפל במצבים שונים של קיפול ופריסה בזמן בדיקה ב-Test Lab?
מכשירים מתקפלים יכולים להיות במצבים שונים של קיפול, כמו FLAT (פתוח לגמרי) או HALF_OPENED (בין פתוח לגמרי לסגור לגמרי).
לעומת זאת, מצבי שימוש כוללים אוריינטציה ספציפית של המכשיר ומצב של מכשיר מתקפל. לדוגמה, מצב שולחן, שהוא מצב HALF_OPENED בכיוון אופקי, או מצב ספר, שהוא מצב HALF_OPENED בכיוון אנכי.
בשונה ממוצרים אחרים של Firebase, לא צריך להוסיף Firebase SDK כדי להשתמש ב-Test Lab. אם אין לכם אפליקציה, אתם יכולים להוריד קובץ APK באינטרנט או ליצור אפליקציה וקובץ APK לבדיקה מאחת הדוגמאות במאגר AndroidX GitHub.
שימו לב: כדי להריץ בדיקת Robo, צריך רק את קובץ ה-APK של האפליקציה. כדי להריץ בדיקת מכשור, צריך גם את האפליקציה וגם קובץ APK של בדיקה שנבנו מקוד המקור. מידע נוסף זמין במאמר בנושא בדיקות עם מכשור.
באילו מכשירים הכי כדאי להשתמש לבדיקת השוואה בין צילומי מסך?
בדיקות השוואה בין צילומי מסך הן בדיקות שבהן טענות הבדיקה מבוססות על השוואה בין תמונות מסך שהתקבלו במהלך הפעלת בדיקה לבין תמונות מוזהבות שמייצגות התנהגות צפויה. יכול להיות שבחלק מסוגי המכשירים הבדיקות האלה יהיו פחות יציבות מאשר בסוגים אחרים. מומלץ לטרגט מכשירי אמולטור של Arm (*.arm) לבדיקות מהסוג הזה. מכשירי אמולטור של Arm משתמשים בתמונות שדומות מאוד לאמולטורים 'כלליים' של Android Studio, או זהות להם.
מומלץ גם לבדוק ספריות בדיקה שיכולות לעזור להפוך את בדיקות צילומי המסך ליציבות יותר בנוכחות שינויים צפויים.
כדי להפעיל דוחות כיסוי, מוסיפים את coverage=true אל השדה environmentVariables.
אם אתם משתמשים ב-Android Test Orchestrator, תצטרכו לספק ספרייה לאחסון תוצאות הכיסוי:
איפה אפשר למצוא פרטים על המכשיר, כמו רזולוציה, ממשקי ABI נתמכים וכו'?
מידע מפורט על המכשיר זמין דרך ה-API, ואפשר לגשת אליו מלקוח gcloud באמצעות הפקודה describe:
gcloud firebase test android models describe MODEL
בעיות מוכרות
Captchas לכניסה
בדיקת Robo לא יכולה לעקוף מסכי כניסה שדורשים פעולה נוספת מהמשתמש מעבר להזנת פרטי הכניסה, למשל השלמת CAPTCHA.
בעיות מוכרות שספציפיות ל-iOS
כניסה אוטומטית
בבדיקות Robo ל-iOS+ (בטא) אין תמיכה בכניסה אוטומטית באמצעות חשבון Google.
בעיות מוכרות ספציפיות ל-Android
תמיכה במסגרת ממשק המשתמש
הבדיקה באמצעות רובוט פועלת בצורה הכי טובה עם אפליקציות שמשתמשות ברכיבי ממשק משתמש מתוך מסגרת ממשק המשתמש של Android (כולל אובייקטים מסוג View, ViewGroup ו-WebView). אם אתם משתמשים ב-Robo test כדי לבדוק אפליקציות שמשתמשות במסגרות אחרות של ממשק משתמש, כולל אפליקציות שמשתמשות במנוע המשחק Unity, יכול להיות שהבדיקה תסתיים בלי לבדוק מעבר למסך הראשון.