בדף הזה מפורטות תשובות לשאלות נפוצות בנושא הפעלת בדיקות באמצעות 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 ב-Slack של Firebase.
למה חלוקת המטא-נתונים לחלקים (sharding) הגדילה את משך הזמן של הרצת הבדיקות?
חלוקה למקטעים עלולה לגרום להארכת משך הזמן של הבדיקה אם מספר המקטעים שציינתם חורג ממספר המכשירים שזמינים לשימוש ב-Test Lab. כדי למנוע את המצב הזה, כדאי לנסות לעבור למכשיר אחר. למידע נוסף על בחירת מכשיר אחר, ראו
קיבולת המכשיר.
למה לוקח זמן רב כל כך להתחיל את הבדיקה?
כששולחים בקשת בדיקה, האפליקציה עוברת אימות, חתימה מחדש וכו' כדי להתכונן להרצת בדיקות במכשיר. בדרך כלל התהליך הזה מסתיים תוך כמה שניות, אבל הוא עשוי להימשך יותר זמן בגלל גורמים כמו גודל האפליקציה.
אחרי שהאפליקציה מוכנה, הרצת הבדיקות מתזמנת ונשארת בתור עד שמכשיר מוכן להריץ אותה. עד שכל הרצות הבדיקות יסתיימו, סטטוס המטריצה יהיה 'בהמתנה' (ללא קשר לכך שהרצות הבדיקות נמצאות בתור או שפועלות באופן פעיל).
למה הבדיקה נמשכת זמן רב?
בסיום ביצוע הבדיקה, נכסי הבדיקה מורידים מהמכשיר, עוברים עיבוד ומועלים אל Cloud Storage. משך השלב הזה יכול להיות מושפע מהכמות והגודל של פריטי המידע שנוצרו בתהליך הפיתוח (Artifact).
האפליקציה לא מחזירה נתונים ולא ניתן לאתר צילומי מסך
ארטיפקטים של הפעלת הבדיקה (כמו צילומי מסך וקובצי יומן) מאוחסנים ב-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). השגיאה הזו מציינת ש-Test Lab לא הצליח לנתח את ה-logcat כדי למצוא את הסמנים להתחלה או לסיום של תרחישים הבדיקה, שנוצרים בדרך כלל על ידי AndroidJUnitRunner.
אלה כמה מהסיבות הנפוצות לבעיה הזו:
תיאור הבעיה
פתרון אפשרי
תרחיש הבדיקה לא הופעל בגלל שתם הזמן הקצוב לתפוגה. אם משך הזמן הכולל של הבדיקות ארוך מהזמן הקצוב לתפוגה שציינתם או ארוך מהזמן הקצוב לתפוגה המקסימלי, Test Lab מבטל את שאר תרחישי הבדיקה.
מאריכים את הזמן הקצוב לתפוגה של המטריצה כדי לוודא שכל הבדיקות יכולות להסתיים.
אם עדיין לא עשיתם זאת, כדאי לפצל את הבדיקות כך שכל קבוצת משנה תרוץ בחלק מהבדיקות ותשלים את התהליך בזמן קצר יותר.
אם כבר הפעלתם פיצול, צריך להגדיל את מספר המפוצלים.
תרחיש הבדיקה לא הושלם כי הוא יצא מוקדם מדי או נתקע.
יכול להיות שבקשת הבדיקה יצאה מוקדם מדי בגלל חריג לא זוהה או שגיאה טענת נכוֹנוּת (assertion). תרחישים בדיקה יכולים להיתקע בלולאה אינסופית או שלא ניתן להמשיך בהם, למשל אם האפליקציה לא מציגה את התצוגה הנכונה ולא ניתן לבצע את הפעולה בממשק המשתמש.
בודקים את הסרטון ואת logcat כדי לבדוק איפה הבדיקה הופסקה.
מפעיל בדיקות בהתאמה אישית (כולל הרחבה של AndroidJUnitRunner) קרס באופן בלתי צפוי או כתב סימני התחלה או סיום בלתי צפויים של תרחישי בדיקה ב-logcat.
בודקים את הקוד של מפעיל הבדיקות.
נכתבו יומנים מוגזמים ב-logcat, שגרמו להתקפי עומס במאגר או לקריסה של תהליך logcat.
צמצום הכתיבה לlogcat.
האפליקציה שנבדקת קרסה.
ניפוי באגים באפליקציה
שאלות נפוצות
מהן המכסות ללא עלות של Test Lab? מה עושים אם נגמר המקום?
Firebase Test Lab מציע מכסות ללא עלות לבדיקה במכשירים ולשימוש בממשקי Cloud API. חשוב לזכור שבמכסה לבדיקה נעשה שימוש בתוכנית התמחור הרגילה של Firebase, ואילו במכסות של Cloud API לא נעשה שימוש בתוכנית כזו.
בדיקת המכסה
מכסות הבדיקה נקבעות על סמך מספר המכשירים שבהם נעשה שימוש להרצת בדיקות.
בתוכנית Firebase Spark יש מכסה קבועה לבדיקה ללא עלות למשתמשים. בתוכנית Blaze, המכסות עשויות לגדול אם השימוש שלכם ב-Google Cloud יגדל עם הזמן. אם תגיעו למכסת הבדיקות, תוכלו לחכות עד למחר או לשדרג למינוי Blaze אם אתם משתמשים כרגע במינוי Spark.
אם כבר רכשתם את המינוי ל-Blaze, תוכלו לבקש הגדלה של המכסה.
מידע נוסף זמין במאמר מכסה לבדיקה.
לשלוח בקשה להגדלת המכסות על ידי עריכת המכסות ישירות במסוף Google Cloud (לתשומת ליבכם: רוב המגבלות מוגדרות למקסימום כברירת מחדל).
כדי לבקש הגדלה של מכסות ה-API, אפשר למלא טופס בקשה במסוף Google Cloud או לפנות לתמיכה של Firebase.
איך אפשר לברר אם
התנועה שמגיעה לקצה העורפי שלי מגיעה מ-Test Lab?
כדי לקבוע אם התנועה מגיעה ממכשירי בדיקה שמתארחים ב-Firebase, תוכלו לבדוק את כתובת ה-IP של המקור מול טווחי ה-IP שלנו בקצה העורפי.
האם Test Lab פועל עם VPC-SC?
Test Lab לא פועל עם VPC-SC, שמחסום את ההעתקה של אפליקציות וארטיפקטים אחרים של בדיקות בין האחסון הפנימי של Test Lab לבין הקטגוריות של תוצאות המשתמשים.
איך מזהים בדיקות לא יציבות ב-Test Lab?
כדי לזהות התנהגות לא יציבה בבדיקות, מומלץ להשתמש באפשרות
--num-flaky-test-attempts
. הפעלות חוזרות של Deflake מחויבות או נספרות במסגרת המכסה היומית שלכם, בדיוק כמו הפעלות רגילות של בדיקות.
זכור את הנקודות הבאות:
ביצוע הבדיקה כולו ירוץ שוב כשמזוהה כשל. אין תמיכה בניסיון חוזר רק לתרחישים בדיקה שנכשלו.
ניסיונות חוזרים של Deflake מתוזמנים לפעול באותו זמן, אבל אין ערובה שהם יפעלו במקביל. לדוגמה, אם נפח התנועה חורג ממספר המכשירים הזמינים.
האם 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 לבדיקה מאחד מהדוגמאות במאגר GitHub של AndroidX.
חשוב לזכור שצריך רק את קובץ ה-APK של האפליקציה כדי להריץ בדיקת Robo, אבל לבדיקה באמצעות מכשירי מדידה נדרשים גם אפליקציה וגם קובץ APK לבדיקה שנוצרו מקוד מקור. מידע נוסף זמין במאמר בדיקות עם כלי למדידת ביצועים.
אילו מכשירים הכי מתאימים
לבדיקת ההבדלים בין צילומי מסך?
בדיקת ההבדלים בין צילומי המסך היא בדיקה שבה טענות הנכוֹנוּת (assertions) מבוססות על השוואה בין צילומי מסך שהתקבלו במהלך הרצת הבדיקה לבין קובצי אימג' שהוגדרו מראש ומייצגים את ההתנהגות הצפויה. יכול להיות שבדיקות כאלה יהיו פחות יציבות בסוגים מסוימים של מכשירים. מומלץ לטרגט מכשירי אמולטור של Arm (*.arm) לבדיקות מהסוג הזה. במכשירי אמולטור של Arm נעשה שימוש בתמונות שדומות מאוד או זהות לאמולטורים 'כלליים' של Android Studio.
מומלץ גם לעיין בספריות בדיקות שיכולות לשפר את היעילות של בדיקות צילומי המסך בנוכחות של שינויים צפויים.
כדי להפעיל דוחות כיסוי, מוסיפים את הערך coverage=true לשדה environmentVariables.
אם אתם משתמשים ב-Android Test Orchestrator, תצטרכו לספק ספרייה לאחסון תוצאות הכיסוי:
איפה אפשר למצוא את פרטי המכשיר, כמו רזולוציה, ממשקי ABI נתמכים וכו'?
מידע מפורט על המכשיר זמין דרך ה-API, ואפשר לגשת אליו מלקוח gcloud באמצעות פקודת התיאור:
gcloud firebase test android models describe MODEL
בעיות מוכרות
captcha לכניסה
בדיקת הרובוט לא יכולה לעקוף מסכי כניסה שדורשים פעולה נוספת של המשתמש מעבר להזנת פרטי הכניסה, למשל, השלמת CAPTCHA.
תמיכה במסגרת של ממשק המשתמש
בדיקת Robo פועלת בצורה הטובה ביותר באפליקציות שמשתמשות ברכיבי ממשק משתמש מסגרת ממשק המשתמש של Android (כולל אובייקטים מסוג View, ViewGroup ו-WebView). אם משתמשים ב-Robo Test כדי לבדוק אפליקציות שמשתמשות במסגרות אחרות של ממשק משתמש, כולל אפליקציות שמשתמשות במנוע המשחקים של Unity, יכול להיות שהבדיקה תסתיים בלי לבדוק מעבר למסך הראשון.