Esta guía describe cómo preparar y ejecutar una prueba de instrumentación con Firebase Test Lab. Para usar esta guía, necesitará una prueba de instrumentación (escrita por usted o su equipo) que use los marcos de prueba de Android Espresso o UI Automator . Las pruebas de instrumentación pueden durar hasta 45 minutos en dispositivos físicos y hasta 60 minutos en dispositivos virtuales .
En los pasos posteriores, subirá el APK de su aplicación y el APK de su prueba a Firebase.
(Opcional) Agregue la biblioteca de capturas de pantalla a su aplicación
Firebase Test Lab incluye una biblioteca (testlab-instr-lib) que puede usar para procesar cualquier captura de pantalla que tome con ScreenCapture de AndroidX cuando ejecute pruebas de instrumentación, como las pruebas escritas con el marco de prueba de Espresso . Esta sección describe cómo crear objetos ScreenCapture
con la biblioteca de AndroidX y cómo procesarlos usando testlab-instr-lib.
Una vez que se haya ejecutado la prueba de instrumentación, puede ver las capturas de pantalla capturadas en Firebase console.
Pruebe una aplicación de muestra
Descargue la aplicación de muestra NotePad para probar esta funcionalidad. La capacidad de tomar capturas de pantalla ya está incorporada en el proyecto NotePad.
Paso 1. Agregue la biblioteca de capturas de pantalla a su proyecto
En el archivo Gradle de nivel raíz (nivel de proyecto) de su proyecto de prueba (
build.gradle
), agregue el repositorio Maven de Google a cada sección de repositorios:buildscript { repositories { // Add the following line: google() // Google's Maven repository } dependencies { // ... // Check that you have the following line (if not, add it): classpath 'com.google.gms:google-services:4.3.8' // Google Services plugin } } allprojects { // ... repositories { // Add the following line: google() // Google's Maven repository // ... } }
En el archivo Gradle de tu módulo (nivel de aplicación) (generalmente
app/build.gradle
), agrega una dependencia para la biblioteca de capturas de pantalla de Test Lab.dependencies { // ... // Add Test Lab's instrumentation test screenshot library: androidTestImplementation 'com.google.firebase:testlab-instr-lib:0.2' // ... }
En el archivo
AndroidManifest.xml
de su prueba, registreFirebaseScreenCaptureProcessor
en una etiqueta de metadatos dentro del elemento<instrumentation>
. También puede especificar el procesador como un argumento en AndroidJUnitRunner (consulte la documentación de referencia de AndroidJUnitRunner para obtener instrucciones sobre cómo hacerlo).<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> ...
En el archivo
AndroidManifest.xml
de su aplicación, agregue las siguientes líneas dentro del elemento<manifest>
:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
En su archivo
AndroidManifest.xml
, especifique los permisos del sistema para su aplicación agregando las siguientes líneas dentro de la etiqueta<manifest>
. Si está probando en Android 10 (nivel de API 29) o superior , omita el permisoWRITE_EXTERNAL_STORAGE
(su aplicación no requiere este permiso para leer y escribir capturas de pantalla en el dispositivo).<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>
Paso 2. Tome capturas de pantalla durante su prueba
En cualquier punto de su prueba en el que desee tomar una captura de pantalla, llame al método Screenshot.capture()
desde la biblioteca de AndroidX. Esto produce un objeto ScreenCapture
. Cuando llamas a process()
en el objeto ScreenCapture
, se procesa mediante el ScreenCaptureProcessor que está registrado en tu AndroidManifest.xml
. Tenga en cuenta que BasicScreenCaptureProcessor
se usa si no hay procesadores registrados. Dado que registró FirebaseScreenCaptureProcessor
, sus capturas de pantalla se procesarán a través de FirebaseScreenCaptureProcessor
y estarán disponibles para usted con sus resultados cuando ejecute su prueba con Firebase Test Lab.
Ejemplos de casos de uso para crear una ScreenCapture
de pantalla:
Tome una captura de pantalla completa en una API Build.VERSION_CODES.JELLY_BEAN_MR2 y superior:
Screenshot.capture()
Tome una
ScreenCapture
de pantalla de la actividad en cualquier nivel de API. Tenga en cuenta que esta es la única opción para los dispositivos que están por debajo de Build.VERSION_CODES.JELLY_BEAN_MR2.@Rule public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class); ... Screenshot.capture(activityRule.getActivity()); ...
Ejemplos de casos de uso para procesar una captura de pantalla
Procese una
ScreenCapture
de pantalla a través deFirebaseScreenCaptureProcessor
:Screenshot.capture().process();
Procese un
ScreenCapture
a través de unScreenCaptureProcessor
específico (esto le permite omitir el registro del procesador):Set<ScreenCaptureProcessor> processors = new HashSet<>(); processors.add(new FirebaseScreenCaptureProcessor()); Screenshot.capture().process(processors);
Establezca el nombre y el formato de
ScreenCapture
y procéselo con el procesador registrado:Screenshot.capture().setName("myscreenshot").setFormat(CompressFormat.JPEG).process();
Paso 3. Cree y ejecute su prueba
Crea tu aplicación y prueba los APK (consulta Probar tu aplicación para obtener instrucciones).
Cargue los archivos APK en el panel de Test Lab de la consola Firebase.
Finalmente, ejecute su prueba.
Paso 4. Mira tus capturas de pantalla de prueba
Una vez completada la prueba, puede ver las capturas de pantalla tomadas en la consola de Firebase.
En la pestaña Pruebas , seleccione su prueba completada, luego haga clic en la pestaña Resultados .
Seleccione su prueba nuevamente, luego haga clic en la pestaña Capturas de pantalla que aparece.
(Opcional) Habilite funciones de prueba adicionales
Puede habilitar las siguientes características en su prueba antes de ejecutarla con Test Lab:
Habilitar orquestador
Android Test Orchestrator es una herramienta que ejecuta cada una de las pruebas de instrumentación de su aplicación de forma independiente. Test Lab siempre utiliza la última versión de Orchestrator.
Para habilitar Orchestrator para Test Lab, en la configuración de la prueba de instrumentación, haga clic en Opciones adicionales > Ejecutar con Orchestrator .
Beneficios y desventajas
- Beneficio: No hay estado compartido. Cada prueba se ejecuta en su propia instancia de instrumentación para que no se acumule un estado compartido entre las pruebas.
- Beneficio: Choques aislados. Si una prueba falla, solo esa instrumentación finaliza y otras pruebas en su suite aún pueden ejecutarse.
- Inconveniente: Tiempos de ejecución más largos . Cada prueba ejecuta su propia instancia de instrumentación, lo que significa que el proceso de prueba lleva un poco más de tiempo en general. Si no se marca, los tiempos de ejecución aumentados podrían afectar potencialmente el uso de su cuota o el tiempo facturado y pueden hacer que alcance los límites de tiempo de espera de sus dispositivos.
Habilitar fragmentación
La fragmentación de pruebas divide un conjunto de pruebas en subgrupos (fragmentos) que se ejecutan por separado de forma aislada. Test Lab ejecuta automáticamente cada fragmento en paralelo utilizando varios dispositivos y completa todo el conjunto de pruebas en menos tiempo.
Cómo funciona la fragmentación de prueba
Digamos que creas N fragmentos. Para cada dispositivo que seleccione, Test Lab activa N dispositivos idénticos y ejecuta un subconjunto de las pruebas en cada dispositivo. Esto significa que los casos de prueba fragmentados pueden generar varias ejecuciones de prueba por dispositivo, a diferencia de los casos de prueba no fragmentados, que siempre dan como resultado una ejecución de prueba por dispositivo (para obtener una descripción general rápida de los conceptos clave en Test Lab, consulte Conceptos clave ).
Puedes habilitar la fragmentación de prueba en Firebase console:
En la configuración de la prueba de instrumentación, haga clic en Opciones adicionales .
En la sección Fragmentación , ingrese la cantidad de fragmentos que desea ejecutar.
Facturación de fragmentos de prueba
Test Lab implementa sus fragmentos aprovechando el mecanismo de fragmentación integrado de AndroidJUnitRunner. Para evitar que se le cobre por generar fragmentos vacíos (fragmentos sin casos de prueba asignados), la cantidad de fragmentos que cree debe ser menor que la cantidad total de casos de prueba. Según el tiempo que tarde en ejecutarse cada caso de prueba, normalmente es una buena idea asignar de 2 a 10 casos de prueba por fragmento.
Para obtener más información sobre facturación, lea Uso, cuotas y facturación .