הגדרת בדיקות על מכשירים פיזיים עם Firebase Test Lab
אמולטורים משקרים. לא בזדון, אבל באופן שיטתי: עיבוד GPU שונה, Bluetooth לא זמין, המצלמה מדומה, והתנהגות הזיכרון אינה כמו במכשיר אמיתי. בצוות שלנו, עם ניסיון של למעלה מ-5 שנים בפרויקטים למובייל, נתקלנו בזה עשרות פעמים. Firebase Test Lab מספק גישה למכשירים פיזיים — Pixel 8, Samsung Galaxy S24, טאבלטים, ומכשירי Xiaomi ישנים עם קושחה מותאמת אישית. בדיקה שעוברת על אמולטור יכולה לקרוס על Samsung One UI בגלל WebView מותאם או מערכת הרשאות משונה. הזמינו הגדרה מסודרת — נכין את המטריצה, Robo Script, ואינטגרציית CI תוך 2–3 ימים.
למה אמולטורים נכשלים ומכשירים אמיתיים לא
אמולטורים לא משחזרים פרטים חומרתיים: התנהגות זיכרון שונה, חוסר בחיישנים אמיתיים (מד תאוצה, גירוסקופ), ומצלמה מדומה. מכשירים אמיתיים חושפים בעיות עם התראות push (APNs/FCM), ריצה ברקע (Background fetch), וקישורים עמוקים (Universal Links / App Links). לפי הנתונים שלנו, כ-30% מהקריסות שנמצאות על מכשירים פיזיים לא ניתנות לשחזור על אמולטור. שימוש ב-Firebase Test Lab מבטיח שהאפליקציה שלכם מוכנה למשתמשים אמיתיים.
מה Firebase Test Lab יכול לעשות
שני מצבי בדיקה:
בדיקות Instrumentation — מריצות את בדיקות Espresso / XCUITest שלכם על מכשירים נבחרים. שליטה מלאה במה שנבדק.
בדיקת Robo — סורק אוטומטי. הפעילו APK בלי לכתוב בדיקה אחת; Robo מנווט בממשק המשתמש דרך עץ הנגישות, לוחץ על כפתורים, ממלא שדות בנתונים אקראיים, ומחפש קריסות. שימושי לבדיקות מהירות של גרסאות חדשות לפני שחרור.
פלטפורמות נתמכות: Android (Espresso, UI Automator, Appium) ו-iOS (XCUITest). ל-Firebase Test Lab ל-iOS יש מאגר מכשירים קטן יותר, אבל אייפונים ואייפדים אמיתיים עדיין שווים יותר מסימולטור.
הגדרה: מהעלאת Build ועד תוצאות
Android
בנו APK ו-APK לבדיקות:
./gradlew assembleDebug assembleAndroidTest העלו והריצו דרך ./gradlew assembleDebug assembleAndroidTest :
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 \
--device model=Pixel8,version=34,locale=ru,orientation=portrait \
--device model=a54xnsxx,version=13,locale=ru,orientation=portrait \
--results-bucket gs://my-project-test-results \
--results-dir "run_$(date +%Y%m%d_%H%M%S)"gcloud הוא Samsung Galaxy A54. הצגת דגמים זמינים: 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 \ --device model=Pixel8,version=34,locale=ru,orientation=portrait \ --device model=a54xnsxx,version=13,locale=ru,orientation=portrait \ --results-bucket gs://my-project-test-results \ --results-dir "run_$(date +%Y%m%d_%H%M%S)" .
מטריצת מכשירים
בחירת מטריצה היא משימה אנליטית נפרדת. אין טעם להריץ בדיקות על 50 מכשירים. עיקרון:
| קריטריון | מה לכלול |
|---|---|
| 5 המכשירים המובילים מהאנליטיקה | מנתוני Firebase Analytics / Crashlytics |
| גרסת מערכת הפעלה מינימלית נתמכת | minSdkVersion / deployment target |
| גרסת מערכת הפעלה עדכנית | Android 14 / iOS 17 |
| Samsung (One UI) | בנפרד בגלל התאמות אישיות |
| טאבלט | אם פורמט המסך נתמך |
מטריצה ריאלית לרוב הפרויקטים: 3–5 מכשירים. יותר זה יקר ואיטי יותר, אבל לא בהכרח אינפורמטיבי יותר.
iOS
ל-iOS, צריך model=a54xnsxx עם חתימת פיתוח (לא הפצה). העלאה:
gcloud firebase test ios run \
--test MyAppTests.zip \
--device model=iphone15pro,version=17.4,locale=ru_RU,orientation=portraitgcloud firebase test android models list הוא ארכיון עם קובץ .ipa ומוצרי בדיקה. בנייה דרך gcloud firebase test ios run \ --test MyAppTests.zip \ --device model=iphone15pro,version=17.4,locale=ru_RU,orientation=portrait .
בדיקת Robo עם סקריפט מותאם
הסורק Robo הרגיל לפעמים נתקע על מסך הכניסה — הוא לא יודע את פרטי הגישה. Robo Script מאפשר להגדיר פעולות ראשוניות:
[
{
"eventType": "VIEW_TEXT_CHANGED",
"replacementText": "[email protected]",
"elementDescriptors": [
{
"resourceName": "com.example.app:id/email_input"
}
]
},
{
"eventType": "VIEW_CLICKED",
"elementDescriptors": [
{
"resourceName": "com.example.app:id/login_button"
}
]
}
]לאחר אימות, Robo ממשיך לסרוק את החלק המאומת של האפליקציה. זו דרך מהירה לבדוק רגרסיות בלי לכתוב בדיקות.
אינטגרציית CI
GitHub Actions:
---
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v2
with:
service_account_key: ${{ secrets.GCLOUD_SERVICE_ACCOUNT_KEY }}
project_id: my-firebase-project
- name: Run tests on Firebase Test Lab
run: |
gcloud firebase test android run \
--app app-debug.apk \
--test app-debug-androidTest.apk \
--device model=Pixel8,version=34 \
--timeout 10m
---נדרש חשבון שירות עם תפקיד MyAppTests.zip. תוצאות נשמרות אוטומטית ב-Cloud Storage — צילומי מסך, סרטונים, logcats, ודוחות XML.
ניתוח תוצאות
בקונסולת Firebase Test Lab, עבור כל ריצה מקבלים:
- הקלטת וידאו של הבדיקה
- Logcat עם מסנני תגים
- צילומי מסך בנקודות מפתח
- דוח כיסוי (אם jacoco מופעל)
- תוצאות XML בפורמט JUnit (ל-Allure / Jenkins)
מה כלול בהגדרה מסודרת
אנחנו מציעים מחזור מלא:
- ניתוח מערך המכשירים שלכם לפי נתוני אנליטיקה
- הגדרת מטריצת 3–5 מכשירים
- כתיבת Robo Script לאימות (אם נדרש)
- אינטגרציית CI (GitHub Actions, GitLab CI, Bitrise)
- הדרכת צוות על עבודה עם תוצאות
- אחריות לפעולה תקינה למשך 5 ימים לאחר המסירה
למהנדסים שלנו יש ניסיון עם 30+ פרויקטים המשתמשים ב-Firebase Test Lab. צרו קשר להערכת פרויקט — נמצא את התצורה האופטימלית.
לוח זמנים
2–3 ימים — הגדרת Firebase Test Lab, הגדרת מטריצת מכשירים, אינטגרציית CI, כתיבת Robo Script לאימות. בנוסף, זמן לניתוח ראשוני של תוצאות ותיקון בעיות ספציפיות למכשירים. העלות מחושבת באופן אישי.
איך Firebase Test Lab חוסך זמן ברגרסיות
בדיקות Robo ללא שורת קוד אחת מוצאות קריסות ו-ANRs על מכשירים אמיתיים מהר יותר מבדיקות ידניות. לפי הנתונים שלנו, זה חוסך עד 40% מזמן מחזור ה-QA. בשילוב עם בדיקות Instrumentation, מקבלים כיסוי מלא תוך שעות ספורות.







