בדף הזה מפורטות תשובות לשאלות נפוצות בנושא הרצת בדיקות באמצעות 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. משך הזמן של השלב הזה יכול להיות מושפע מהכמות והגודל של הארטיפקטים.
האפליקציה לא מחזירה נתונים ולא ניתן לאתר צילומי מסך
פריטי מידע (artifacts) של הרצת בדיקות (כמו צילומי מסך וקבצי יומן) מאוחסנים ב-Google Cloud Storage ומוצגים ישירות במסוף Firebase. אם ביצעתם את הרצת הבדיקה ב-90 הימים האחרונים, צריך לוודא שהקציתם תפקידים ברמת הפרויקט (בעלי הפרויקט, עריכת הפרויקט או צפייה בפרויקט).
צריך גם לוודא ש-Cloud Audit Logging לא מופעל בפרויקט או בארגון.
אם ההפעלה בוצעה לפני יותר מ-90 יום, סביר להניח שהארטיפקטים של הבדיקה נמחקו אוטומטית. כדי לבדוק את הגדרת קטגוריית התוצאות, לוחצים על הכרטיסייה תוצאות הבדיקה בלוח הבקרה 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.
איך אפשר לדעת אם התנועה שמגיעה לקצה העורפי שלי מגיעה מ-Test Lab?
מהקצה העורפי שלכם, אתם יכולים לבדוק את כתובת ה-IP של המקור מול טווח כתובות ה-IP שלנו כדי לקבוע אם התנועה מגיעה ממכשירי בדיקה שמארחים ב-Firebase.
האם Test Lab פועל עם VPC-SC?
Test Lab לא פועל עם VPC-SC, שחוסם את ההעתקה של אפליקציות ופריטי בדיקה אחרים בין האחסון הפנימי של Test Lab לבין דלי התוצאות של המשתמשים.
איך מזהים בדיקות לא יציבות ב-Test Lab?
כדי לזהות התנהגות לא יציבה בבדיקות, מומלץ להשתמש באפשרות
--num-flaky-test-attempts
. החיוב על הפעלות חוזרות של בדיקות שנכשלו או שהן נספרות במסגרת המכסה היומית, בדיוק כמו הפעלות רגילות של בדיקות.
זכור את הנקודות הבאות:
כל ההרצה של הבדיקה מופעלת מחדש כשמזוהה כשל. אין תמיכה בניסיון חוזר רק של תרחישי בדיקה שנכשלו.
הפעלות חוזרות של בדיקות לא יציבות מתוזמנות להפעלה באותו הזמן, אבל לא מובטח שהן יפעלו במקביל, למשל, כשהתנועה חורגת ממספר המכשירים הזמינים.
האם Test Lab תומך במכשירים לבישים?
כן! Test Lab תומך ב-Google Pixel Watch. עכשיו אפשר להריץ בדיקות באפליקציית Wear העצמאית בשעוני Google Pixel. מידע נוסף על מכשירים זמין במאמר בדיקה במכשירים זמינים.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.
תמיכה ב-framework של ממשק משתמש
הבדיקה באמצעות רובוט פועלת בצורה הטובה ביותר באפליקציות שמשתמשות ברכיבי ממשק משתמש מתוך מסגרת ממשק המשתמש של Android (כולל אובייקטים מסוג View, ViewGroup ו-WebView). אם אתם משתמשים ב-Robo test כדי לבדוק אפליקציות שמשתמשות במסגרות אחרות של ממשק משתמש, כולל אפליקציות שמשתמשות במנוע המשחקים Unity, יכול להיות שהבדיקה תסתיים בלי לבדוק מעבר למסך הראשון.