Pruebas de instantáneas de registros para pruebas de instrumentación de Android

Las pruebas de captura de pantalla son actualmente un método eficaz para garantizar que la interfaz de usuario de su aplicación Android no se dañe. Simplifican el proceso de prueba al evitar la necesidad de realizar comprobaciones complejas; en su lugar, se captura la salida de la interfaz de usuario y se compara con una línea de base previamente validada.
Aunque las pruebas de instantáneas se utilizan normalmente para la validación de la interfaz de usuario, también pueden aplicarse a otros tipos de salida no visual que son susceptibles de validación, como estadísticas o registros específicos de solicitudes al servidor asociados a cualquier escenario concreto.
Al igual que en las pruebas de capturas de pantalla de la interfaz de usuario, sus principales características son:
- Creación de la línea de base:
Inicialmente, se toma una instantánea de los registros producidos por un escenario de prueba concreto y se almacena como línea de base. Esta instantánea representa la salida esperada para este escenario. - Comparaciones automatizadas:
Cuando se introducen cambios en el código, las pruebas se ejecutan de nuevo y se captura la salida actual del registro. La nueva salida se compara automáticamente con la línea de base. - Validación del desarrollador:
Se señalan las diferencias entre la salida actual y la línea de base. El desarrollador revisa estos cambios para determinar si son intencionados (en cuyo caso la nueva salida se convierte en la línea de base actualizada) o si indican un error.
Loggerazzi
Loggerazzi es un complemento Gradle de código abierto y una biblioteca para pruebas de instrumentación de Android desarrollada por nosotros para este fin. Requiere una configuración mínima y es fácil de instalar.
Funciona en dos modos diferentes: verificación y grabación.
En el modo de verificación, los registros generados durante la ejecución de las pruebas se comparan con las líneas de base generadas previamente. Las pruebas que no coincidan con sus respectivas líneas de base fallarán; además, al final de la ejecución se genera un informe general de Loggerazzi.

Mientras se está en modo de grabación, los registros generados durante la ejecución de las pruebas se utilizan para actualizar las líneas de base actuales; en este caso también se genera un informe general de Loggerazzi.

Características:
- Compatible con otras bibliotecas de pruebas de instantáneas, ya que no requiere tareas específicas de Gradle.
- Compatible con ejecutores de pruebas de instrumentación externos.
- Tiene el mismo comportamiento al ejecutarse desde la línea de comandos que desde el IDE, ya que las verificaciones siempre se realizan dentro del emulador.
- La verificación se puede personalizar para necesidades específicas.
- Compatibilidad con fragmentación/paralelización del emulador.
- Compatible con múltiples variantes.
- Compatible con Orchestrator.
Configuración
En el archivo build.gradle de tu proyecto, incluye el complemento Loggerazzi:
plugins {
...
id "com.telefonica.loggerazzi-plugin" version "0.2.0" apply false
} Aplica el complemento en tu biblioteca o aplicación build.gradle:
plugins {
id "com.telefonica.loggerazzi-plugin"
} Además, incluye la dependencia de la regla en el bloque de dependencias de tu aplicación o biblioteca:
dependencies {
...
androidTestImplementation "com.telefonica:loggerazzi:$loggerazzi_version"
} Por último, añade la regla Loggerazzi a tu clase de prueba (o a la clase base de pruebas de instrumentación para incluir de forma universal todas las pruebas existentes de tu aplicación), donde se deben proporcionar los registros grabados. Esta grabadora puede implementar directamente tu interfaz de registro.
open class BaseInstrumentationTest {
@get:Rule
val loggerazziRule: LoggerazziRule = LoggerazziRule(
recorder = fakeAnalyticsTracker
)
...
companion object {
val fakeAnalyticsTracker = object : YourAnalyticsTrackerInterface, LogsRecorder<String> {
private val logs = mutableListOf<String>()
override fun clear() {
logs.clear()
}
override fun getRecordedLogs(): List<String> =
logs.mapIndexed { index, s ->
"$index: $s"
}
override fun trackEvent(event: String) {
logs.add("trackEvent: $event")
}
}
}
} A continuación, solo tienes que configurarlo como tu rastreador actual para tus pruebas; si utilizas Hilt, sería tan sencillo como lo siguiente:
@Module
@TestInstallIn(
components = [SingletonComponent::class],
replaces = [YourAnalyticsAppModule::class],
)
class InstrumentationTestModule {
@Provides
@Singleton
fun provideAnalyticsTracker(): YourAnalyticsTrackerInterface =
BaseInstrumentationTest.fakeAnalyticsTracker
}
Por último, para ejecutar pruebas que realicen la verificación de registros, solo tienes que invocar el objetivo Gradle habitual para tus pruebas de instrumentación. Para cambiar al modo de grabación, basta con añadir el argumento de instrumentación «record» a la invocación, como se muestra en el siguiente ejemplo:
./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.record=true
Para obtener más información, visite el repositorio GitHub de Loggerazzi.
Medios de comunicación
Contacta con nuestro departamento de comunicación o solicita material adicional.