התחל עם מבחני מכשור

מדריך זה מתאר כיצד להכין ולהפעיל בדיקת מכשור באמצעות Firebase Test Lab. כדי להשתמש במדריך זה, תזדקק למבחן מכשור (שנכתב על ידך או על ידי הצוות שלך) המשתמש במסגרות הבדיקה של Espresso או UI Automator Android. מבחני מכשור יכולים להימשך עד 45 דקות במכשירים פיזיים ועד 60 דקות במכשירים וירטואליים .

בשלבים מאוחרים יותר, תעלה את ה-APK של האפליקציה שלך ואת ה-APK של הבדיקה ל-Firebase.

(אופציונלי) הוסף את ספריית צילומי המסך לאפליקציה שלך

Firebase Test Lab כוללת ספרייה (testlab-instr-lib) שבה אתה יכול להשתמש כדי לעבד כל צילומי מסך שאתה מצלם עם ScreenCapture של AndroidX בעת הפעלת מבחני מכשור, כגון בדיקות שנכתבו באמצעות מסגרת הבדיקה של אספרסו . סעיף זה מתאר כיצד ליצור אובייקטי ScreenCapture עם ספריית AndroidX וכיצד לעבד אותם באמצעות testlab-instr-lib.

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

נסה אפליקציה לדוגמה

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

שלב 1. הוסף את ספריית צילומי המסך לפרויקט שלך

  1. בקובץ Gradle של הגדרות רמת הבסיס של פרויקט הבדיקה שלך ( settings.gradle.kts או settings.gradle ), הוסף את מאגר Maven של Google לכל מקטע repositories :

    pluginManagement {
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            // Add the following line:
            google() // Google's Maven repository
            mavenCentral()
        }
    }
    // ...
    
  2. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle ), הוסף תלות עבור מעבדת הבדיקות ספריית צילומי מסך.

    dependencies {
      // ...
      // Add Test Lab's instrumentation test screenshot library:
      androidTestImplementation("com.google.firebase:testlab-instr-lib:0.2")
      // ...
    
  3. בקובץ AndroidManifest.xml של הבדיקה שלך, רשום את FirebaseScreenCaptureProcessor בתג מטא נתונים בתוך האלמנט <instrumentation> . אתה יכול גם לציין את המעבד כארגומנט ב-AndroidJUnitRunner במקום זאת (ראה תיעוד העזר של AndroidJUnitRunner להוראות כיצד).

    <instrumentation
      // Check that you have the following line (if not, add it):
      android:name="androidx.test.runner.AndroidJUnitRunner" // Specifies AndroidJUnitRunner as the test runner
      android:targetPackage="com.your.package.name">
    
    // Add the following:
    <meta-data
      android:name="screenCaptureProcessors"
      android:value="com.google.firebase.testlab.screenshot.FirebaseScreenCaptureProcessor" />
    </instrumentation>
    ...
    
  4. בקובץ AndroidManifest.xml של האפליקציה שלך, הוסף את השורות הבאות בתוך האלמנט <manifest> :

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  5. בקובץ AndroidManifest.xml שלך, ציין הרשאות מערכת עבור האפליקציה שלך על ידי הוספת השורות הבאות בתוך התג <manifest> . אם אתה בודק ב- Android 10 (רמת API 29) ומעלה , השמיט את ההרשאה WRITE_EXTERNAL_STORAGE (האפליקציה שלך אינה דורשת הרשאה זו כדי לקרוא ולכתוב צילומי מסך למכשיר).

    <manifest ... >
        <!-- WRITE_EXTERNAL_STORAGE is not needed on Android 10 (API level 29) or higher. -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        ...
    </manifest>

שלב 2. צלם צילומי מסך במהלך המבחן שלך

בכל נקודה בבדיקה שבה ברצונך לצלם צילום מסך, התקשר לשיטת Screenshot.capture() מספריית AndroidX. זה מייצר אובייקט ScreenCapture . כאשר אתה קורא ל- process() באובייקט ScreenCapture , הוא מעובד באמצעות ScreenCaptureProcessor הרשום ב- AndroidManifest.xml שלך. שימו לב כי נעשה שימוש ב- BasicScreenCaptureProcessor אם לא רשומים מעבדים. מאז שרשמת את FirebaseScreenCaptureProcessor , צילומי המסך שלך יעובדו באמצעות FirebaseScreenCaptureProcessor ויהיו זמינים עבורך עם התוצאות שלך כאשר אתה מפעיל את הבדיקה שלך עם Firebase Test Lab.

מקרי שימוש לדוגמה ליצירת ScreenCapture :

  • צלם תמונת מסך מלאה ב-API Build.VERSION_CODES.JELLY_BEAN_MR2 ומעלה:

    Screenshot.capture()
    
  • צלם ScreenCapture של הפעילות בכל רמת API. שים לב שזו האפשרות היחידה עבור מכשירים שנמצאים מתחת ל-Build.VERSION_CODES.JELLY_BEAN_MR2.

    @Rule
      public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);
    ...
    Screenshot.capture(activityRule.getActivity());
    ...
    

מקרי שימוש לדוגמה לעיבוד צילום מסך

  • עבד ScreenCapture באמצעות FirebaseScreenCaptureProcessor :

    Screenshot.capture().process();
    
  • עבד ScreenCapture באמצעות ScreenCaptureProcessor שצוין (זה מאפשר לך לדלג על רישום המעבד):

    Set<ScreenCaptureProcessor> processors = new HashSet<>();
    processors.add(new FirebaseScreenCaptureProcessor());
    Screenshot.capture().process(processors);
    
  • הגדר את השם והפורמט של ScreenCapture ועבד אותו באמצעות המעבד הרשום:

    Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
    

שלב 3. בנה והפעל את הבדיקה שלך

  1. בנה את האפליקציה שלך ובדוק חבילות APK (ראה בדוק את האפליקציה שלך להוראות).

  2. העלה את קובצי ה-APK למרכז השליטה של ​​מעבדת הבדיקות של מסוף Firebase.

  3. לבסוף, הרץ את הבדיקה שלך.

שלב 4. הצג את צילומי מסך הבדיקה שלך

לאחר השלמת הבדיקה, תוכל לצפות בכל צילומי מסך שצולמו במסוף Firebase.

  1. בכרטיסייה בדיקות , בחר את הבדיקה שהושלמת ולאחר מכן לחץ על הכרטיסייה תוצאות .

  2. בחר שוב את הבדיקה שלך ולאחר מכן לחץ על הכרטיסייה צילומי מסך שמופיעה.

(אופציונלי) אפשר תכונות בדיקה נוספות

אתה יכול להפעיל את התכונות הבאות בבדיקה שלך לפני הפעלתה עם Test Lab:

אפשר תזמורת

Android Test Orchestrator הוא כלי המריץ כל אחד ממבחני המכשור של האפליקציה שלך באופן עצמאי. Test Lab משתמש תמיד בגרסה העדכנית ביותר של Orchestrator.

כדי להפעיל את Orchestrator for Test Lab, בהגדרת בדיקת המכשור, לחץ על אפשרויות נוספות > הפעל עם Orchestrator .

כאשר אתה משתמש ב- Orchestrator, אתה נהנה מהדברים הבאים:

  • אין מצב משותף. כל בדיקה פועלת במופע המכשור שלה, כך שמצב משותף לא מצטבר על פני בדיקות.
  • קריסות בודדות. אם מבחן קורס, רק המכשור הזה מופסק, ובדיקות אחרות בסוויטה שלך עדיין יכולות לפעול.

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

כדי להגדיר אפשרויות נוספות עבור Orchestrator, ציין אותן באמצעות השדה environmentVariables . לדוגמה, כדי להשתמש clearPackageData , השתמש באפשרות זו ב-gcloud:

--environment-variables clearPackageData=true

אפשר פיצול

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

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

כדי לאפשר פיצול בדיקה במסוף Firebase, בצע את השלבים הבאים:

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

  2. במקטע Sharding , הזן את מספר הרסיסים שברצונך להפעיל.

חיוב עבור רסיסי בדיקה

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

למידע נוסף על חיוב, קרא שימוש, מכסות וחיוב .