Ir a la consola

Crea experimentos de Firebase Remote Config con A/B Testing

Cuando actualices la app y uses Firebase Remote Config para enviarla a una aplicación con una base de usuarios activos, deberás asegurarte de hacerlo bien. Es posible que tengas dudas acerca de lo siguiente:

  • La mejor manera de implementar una función para optimizar la experiencia del usuario. Muy a menudo, los desarrolladores de apps no se enteran cuando a los usuarios no les gusta una función nueva o una experiencia de usuario actualizada hasta que disminuye la calificación de la app en la tienda de aplicaciones. Las pruebas A/B pueden ayudarte a saber si a los usuarios les gustan las variantes de funciones nuevas o si prefieren la app como es actualmente. Además, tener a la mayoría de los usuarios en un grupo de control garantiza que la mayor parte de tu base de usuarios pueda continuar usando la app sin ver cambios en el comportamiento o la apariencia hasta que finalice el experimento.
  • La mejor manera de optimizar la experiencia del usuario para lograr un objetivo comercial. En algunos casos, implementas cambios de productos para maximizar métricas, como los ingresos o la retención. Con las pruebas A/B, configuras un objetivo comercial y Firebase ejecuta el análisis estadístico para determinar si el rendimiento superará el del grupo de control para el objetivo que seleccionaste en función de ciertas variantes.

Para hacer pruebas A/B en las variantes de función con un grupo de control, haz lo siguiente:

  1. Crea el experimento.
  2. Valida el experimento en un dispositivo de prueba.
  3. Administra el experimento.

Crea un experimento

Un experimento de Remote Config te permite evaluar distintas variantes de uno o más parámetros de Remote Config.

  1. Accede a Firebase, actualiza la Configuración del uso compartido de datos y asegúrate de que esté habilitado el uso compartido de datos. Sin el uso compartido de datos, tu experimento no tendrá acceso a los datos de estadísticas.
  2. En la barra de navegación de Firebase console, expande Crece y, luego, haz clic en A/B Testing.
  3. Haz clic en Crear experimento y selecciona Remote Config cuando se te pida que elijas el servicio con el que deseas experimentar.
  4. Ingresa un Nombre y una Descripción opcional para tu experimento y, a continuación, haz clic en Siguiente.
  5. Llena los campos de Orientación. Para ello, selecciona primero la aplicación que utiliza tu experimento. También puedes seleccionar una o más de las siguientes opciones para limitar el experimento a un subconjunto de tus usuarios:

    • Versión: Una o más versiones de tu app
    • Público de usuarios: Públicos de Analytics que se usan para orientar a usuarios que se podrían incluir en el experimento
    • Propiedad del usuario: Una o más propiedades de usuario de Analytics para seleccionar usuarios que se podrían incluir en el experimento
    • Predicción: Grupos de usuarios que tendrán un comportamiento particular según predicciones realizadas con aprendizaje automático
    • País/Región: Uno o más países o regiones para seleccionar usuarios que se podrían incluir en el experimento
    • Idioma del dispositivo: Uno o más idiomas y configuraciones regionales que se usan para seleccionar usuarios que se podrían incluir en el experimento
  6. En Porcentaje de usuarios de destino, ingresa el porcentaje de la base de usuarios de tu app que coincide con los criterios configurados en Usuarios de destino y que deseas dividir en partes iguales entre el grupo de control y una o más variantes del experimento. Esto puede ser cualquier porcentaje entre el 0.01% y el 100%. Los usuarios se asignan de forma aleatoria a cada experimento, incluidos los experimentos duplicados.

  7. De manera opcional, configura un evento de activación a fin de garantizar que solo se incluyan en el experimento los usuarios que activaron algún evento de Analytics en primer lugar, y luego haz clic en Siguiente.

  8. En Objetivos del experimento, selecciona la métrica principal a la que se puede hacer seguimiento en la lista desplegable y agrega las métricas adicionales que desees. Estas incluyen objetivos integrados (participación, compras, ingresos, retención, etc.), eventos de conversión de Analytics y otros eventos de Analytics. Cuando hayas terminado, haz clic en Siguiente.

  9. En la sección Variantes, deberás elegir un grupo de control y al menos una variante del experimento. Usa la lista Seleccionar o crear parámetro nuevo a fin de agregar uno o más parámetros para experimentar. Puedes crear un parámetro que no se haya usado antes en Firebase console, pero debe existir en tu app para que tenga efecto. Puedes repetir este paso para agregar varios parámetros al experimento.

    En cada variante, puedes agregar la orientación a nivel de variantes, en la que puedes seleccionar una opción de orientación de la misma lista disponible en el nivel del experimento: Versión, Público de usuarios, Propiedad del usuario, Predicción, País/Región y, además, Idioma del dispositivo.

  10. Opcionalmente, si deseas agregar más de una variante al experimento, haz clic en Agregar otra variante.

  11. Cambia uno o más parámetros de variantes específicas. Todos los parámetros sin modificar serán los mismos para los usuarios que no se incluyan en el experimento.

  12. Haz clic en Revisar para guardar el experimento.

Valida el experimento en un dispositivo de prueba

La instalación de cada app de Firebase tiene un token de ID de instancia (o token de registro) asociado. Puedes usar este token para probar variantes de experimento específicas en un dispositivo de prueba con la app instalada. Para validar el experimento en un dispositivo de prueba, haz lo siguiente:

  1. Obtén el token de ID de instancia de la siguiente manera:

    Swift

    InstanceID.instanceID().instanceID { (result, error) in
      if let error = error {
        print("Error fetching remote instance ID: \(error)")
      } else if let result = result {
        print("Remote instance ID token: \(result.token)")
        self.instanceIDTokenMessage.text  = "Remote InstanceID token: \(result.token)"
      }
    }

    Objective-C

    [[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                        NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error fetching remote instance ID: %@", error);
      } else {
        NSLog(@"Remote instance ID token: %@", result.token);
        NSString* message =
          [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
        self.instanceIDTokenMessage.text = message;
      }
    }];

    Java

    FirebaseInstanceId.getInstance().getInstanceId()
            .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                @Override
                public void onComplete(@NonNull Task<InstanceIdResult> task) {
                    Log.d("IID_TOKEN", task.getResult().getToken());
                }
            });

    Kotlin

    FirebaseInstanceId.getInstance().instanceId
            .addOnSuccessListener { result ->
                Log.d("IID_TOKEN", result.token)
            }

    C++

    firebase::InitResult init_result;
    auto* instance_id_object = firebase::instance_id::InstanceId::GetInstanceId(
        firebase::App::GetInstance(), &init_result);
    instance_id_object->GetToken().OnCompletion(
        [](const firebase::Future<std::string>& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::instance_id::kErrorNone) {
            printf("Instance ID Token %s\n", future.result()->c_str());
          }
        });
    

    Unity

    Firebase.InstanceId.FirebaseInstanceId.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Instance ID Token {0}", task.Result));
        }
      });
    
  2. En la barra de navegación de Firebase console, haz clic en Remote Config o en Notifications y, luego, en A/B Testing.
  3. Haz clic en Borrador y, luego, en el título del experimento.
  4. Haz clic en Administrar dispositivos de prueba, ingresa el token de ID de instancia para un dispositivo de prueba y elige la variante de experimento que se enviará a ese dispositivo.
  5. Ejecuta la app y confirma que el dispositivo de prueba reciba la variante seleccionada.

Para obtener más información sobre el token de ID de instancia, consulta FIRInstanceID (iOS) o FirebaseInstanceId (Android).

Administra el experimento

Si creas un experimento con Remote Config o el Compositor de Notifications, puedes validar y comenzar el experimento, supervisarlo mientras se ejecuta y aumentar la cantidad de usuarios incluidos en él.

Una vez finalizado el experimento, puedes tomar nota de la configuración de la variante ganadora y luego implementarla para todos los usuarios. También tienes la posibilidad de ejecutar otro experimento.

Inicia un experimento

  1. En la barra de navegación de Firebase console, expande Crece y, luego, haz clic en A/B Testing.
  2. Haz clic en Borrador y, luego, en el título del experimento.
  3. Para validar que tu app tiene usuarios que se incluirían en el experimento, verifica que haya un porcentaje superior al 0% en la sección Orientación y distribución (por ejemplo, el 1% de los usuarios que coincide con los criterios).
  4. Para modificar el experimento, haz clic en Editar.
  5. Para comenzar, haz clic en Iniciar experimento. Puedes ejecutar hasta 24 experimentos por proyecto a la vez.

Supervisa un experimento

Después de que el experimento se ejecuta por un tiempo, puedes verificar el progreso y ver cómo lucen los resultados para los usuarios que participaron hasta ahora.

  1. En la barra de navegación de Firebase console, haz clic en Crece y, luego, en A/B Testing.
  2. Haz clic en En ejecución y en el título del experimento. En esta página, puedes ver varias estadísticas sobre los experimentos en ejecución, incluida la métrica objetivo y otras métricas. Para cada métrica, está disponible la siguiente información:

    • Mejora: Una medida de la mejora de cada métrica para una variante dada en comparación con el punto de referencia (o grupo de control). Se calcula a partir de la comparación entre el rango de valores para la variante y el rango de valores para el punto de referencia.
    • Probabilidad de superar el punto de referencia: La probabilidad estimada de que una variante dada supere el punto de referencia para la métrica seleccionada.
    • Probabilidad de ser la mejor variante: La probabilidad estimada de que una variante dada supere a las otras variantes para la métrica seleccionada.
    • Valor por usuario: Se calcula a partir de los resultados del experimento y corresponde al rango pronosticado en el que caerá el valor de la métrica con el tiempo.
    • Valor total: El valor acumulado observado para la variante o el grupo de control. El valor se usa para medir el rendimiento de cada variante de experimento y para calcular la mejora, el rango de valores, la probabilidad de superar el punto de referencia y la probabilidad de ser la mejor variante. Según la métrica que se mide, esta columna podría tener la etiqueta "Duración por usuario", "Tasa de retención" o "Tasa de conversión".
  3. Para aumentar la cantidad de usuarios incluidos en el experimento, haz clic en Aumentar distribución y aumenta el porcentaje para agregar más usuarios aptos al experimento.

  4. Después de que el experimento se ejecuta por un tiempo (al menos 24 horas), los datos de esta página indican qué variante es la "líder", si hay alguna. Algunas mediciones incluyen un gráfico de barras que presenta los datos de manera visual.

Implementa un experimento en todos los usuarios

Después de que un experimento se ejecuta por un tiempo suficiente con el fin de encontrar una variante "líder" o ganadora para tu métrica objetivo, puedes implementar el experimento en la totalidad de los usuarios. Esto te permite seleccionar un valor a fin de publicar en Remote Config para todos los usuarios. Incluso si el experimento no creó una ganadora evidente, puedes implementar una variante en todos tus usuarios.

  1. En la barra de navegación de Firebase console, haz clic en Crece y, luego, en A/B Testing.
  2. Haz clic en Completados o En ejecución y selecciona el experimento que quieres implementar para todos los usuarios. Luego, haz clic en el menú contextual (more_vert) y elige Implementar variante.
  3. Para implementar el experimento en todos los usuarios, sigue uno de estos métodos:

    • En el caso de un experimento que usa el Compositor de Notifications, usa el diálogo Implementar mensaje para enviar el mensaje a los usuarios de destino restantes que no formaban parte del experimento.
    • En el caso de un experimento de Remote Config, usa el diálogo para determinar qué valores de parámetros de Remote Config se deben cambiar para todos los usuarios.

Expande un experimento

Si descubres que un experimento no atrae a suficientes usuarios a las pruebas A/B como para determinar un liderazgo, puedes aumentar la distribución del experimento con el fin de alcanzar a un porcentaje mayor de la base de usuarios de la app.

  1. En la barra de navegación de Firebase console, haz clic en Crece y, luego, en A/B Testing.
  2. Haz clic en En ejecución y desplázate sobre el experimento. Haz clic en el menú contextual (more_vert) y, luego, en Aumentar distribución.
  3. La consola muestra un diálogo con una opción para aumentar el porcentaje de usuarios incluidos en el experimento en ejecución. Ingresa un número mayor que el porcentaje actual y haz clic en Enviar. Se enviará el experimento al porcentaje de usuarios especificados.

Duplica o detén un experimento

  1. En la barra de navegación de Firebase console, haz clic en Crece y, luego, en A/B Testing.
  2. Haz clic en Completados o En ejecución y desplázate sobre el experimento. Luego, haz clic en el menú contextual (more_vert) y elige Duplicar o Detener.

Orientación a usuarios

Puedes elegir los usuarios que incluirás en el experimento con los siguientes criterios de orientación a usuarios:

Criterio de orientación Operadores    Valores Nota
Versión contiene,
no contiene,
coincide exactamente con,
contiene la expresión regular
Ingresa un valor para una o más versiones de la app que deseas incluir en el experimento.

Cuando usas los operadores contiene, no contiene o coincide exactamente con, puedes proporcionar una lista de valores separados con comas.

Cuando usas el operador contiene la expresión regular, puedes crear expresiones regulares en formato RE2. Tu expresión regular puede buscar una coincidencia total o parcial en la string de la versión objetivo. También puedes usar los delimitadores ^ y $ para buscar coincidencias en el principio, el final o la totalidad de la string objetivo.

Públicos de usuarios incluye todos los elementos de,
incluye al menos un elemento de,
no incluye ningún elemento de,
no incluye al menos un elemento de
Selecciona uno o más públicos de Analytics para elegir a los usuarios del experimento.  
Propiedad del usuario Para texto:
contiene,
no contiene,
coincide exactamente,
contiene la expresión regular

Para números:
<, ≤, =, ≥, >
Las propiedades del usuario de Analytics se usan para seleccionar a quienes participarán en el experimento, con diversas opciones que permiten elegir los valores de propiedades del usuario.

En el cliente, puedes configurar solo valores de strings para las propiedades del usuario. En el caso de las condiciones que usan operadores numéricos, el servicio de Remote Config convierte el valor de la propiedad del usuario correspondiente en un número entero/flotante.
Cuando usas el operador contiene la expresión regular, puedes crear expresiones regulares en formato RE2. Tu expresión regular puede buscar una coincidencia total o parcial en la string de la versión objetivo. También puedes usar los delimitadores ^ y $ para buscar coincidencias en el principio, el final o la totalidad de la string objetivo.
Predicción N/A Grupos de usuarios de destino definidos por Firebase Predictions. Por ejemplo, usuarios que probablemente dejarán de usar la app o usuarios que probablemente harán una compra directa desde la app. Selecciona uno de los valores que define la herramienta de Firebase Predictions. Si una opción no está disponible, es posible que debas visitar la sección Predictions de Firebase console para habilitar Firebase Predictions.  
País del dispositivo N/A Uno o más países o regiones que se usan para seleccionar a los usuarios del experimento.  
Idioma del dispositivo N/A Uno o más idiomas y configuraciones locales que se usan para seleccionar a los usuarios del experimento. Este criterio de orientación solo está disponible para Remote Config.

Orientación a nivel de variantes

A/B Testing con Remote Config proporciona una capacidad adicional para casos prácticos avanzados: orientación a nivel de variantes. Con esta característica, puedes limitar la aplicación de una configuración a un subconjunto de usuarios dentro de una variante. Esto hace posible probar cómo diferentes esquemas de orientación afectan las métricas clave. La configuración definida para la variante se aplica solo a los usuarios que cumplan las condiciones tanto de orientación a nivel del experimento como a nivel de la variante; los usuarios restantes de la variante reciben la configuración predeterminada. Se debe tener en cuenta que, a fin de evitar sesgos de selección, las métricas se calculan para todos los usuarios de la variante, sin importar si cumplen con las condiciones de orientación a nivel de la variante.

Por ejemplo, este experimento de estrategia de monetización aprovecha Firebase Predictions para elegir usuarios en el nivel de las variantes. Como se muestra en el ejemplo, la orientación a nivel de las variantes se configura en el procedimiento para crear un experimento.

Métricas de A/B Testing

Cuando crees el experimento, selecciona una métrica para comparar variantes del experimento. También puedes elegir otras métricas para hacer un seguimiento que te permita comprender mejor cada variante y detectar los efectos secundarios importantes (como las fallas de la app). Las siguientes tablas proporcionan detalles sobre cómo se calculan las métricas objetivo y otras métricas.

Métricas de objetivo

Métrica Descripción
Participación diaria de los usuarios La cantidad de usuarios que tienen la app en primer plano día a día por un tiempo suficiente para activar el evento de Analytics user_engagement.
Retención (1 día) La cantidad de usuarios que vuelven a la app por día.
Retención (de 2 a 3 días) La cantidad de usuarios que vuelven a la app en un período de 2 a 3 días.
Retención (de 4 a 7 días) La cantidad de usuarios que vuelven a la app en un período de 4 a 7 días.
Retención (de 8 a 14 días) La cantidad de usuarios que vuelven a la app en un período de 8 a 14 días.
Retención (15 días o más) La cantidad de usuarios que vuelven a la app 15 días o más después de la última vez que la usaron.
Notificación abierta Hace un seguimiento para saber si el usuario abre la notificación que recibió del Compositor de Notifications.
Ingresos por compras Valor combinado para todos los eventos ecommerce_purchase y in_app_purchase.
Ingresos estimados de AdMob Ingresos estimados de AdMob.
Ingresos totales estimados Valor combinado de los ingresos por compras y los ingresos estimados de AdMob.
first_open Evento de Analytics que se activa cuando un usuario abre una app por primera vez después de instalarla o reinstalarla. Se usa como parte de un embudo de conversión.
notification_open Evento de Analytics que se activa cuando un usuario abre una notificación enviada por el Compositor de Notifications. Se usa como parte de un embudo de conversión.

Otras métricas

Métrica Descripción
Usuarios que no experimentaron fallas El porcentaje de usuarios de la app que no encontraron errores detectados por el SDK de Firebase Crash Reporting durante el experimento. Para obtener más información, consulta las métricas de usuario sin fallas.
notification_dismiss Un evento de Analytics que se activa cuando se descarta una notificación enviada por el Compositor de Notifications (solo en Android).
notification_receive Un evento de Analytics que se activa cuando se recibe una notificación enviada por el Compositor de Notifications mientras la app se ejecuta en segundo plano (solo en Android).
os_update Un evento de Analytics que hace un seguimiento para saber cuándo el sistema operativo del dispositivo se actualiza a una versión nueva. Para obtener más información, consulta Eventos recopilados automáticamente.
screen_view Un evento de Analytics que hace un seguimiento de las pantallas visitadas dentro de tu app. Para obtener más información, consulta el seguimiento de visitas a pantallas.
session_start Un evento de Analytics que cuenta sesiones de usuarios en tu app. Para obtener más información, consulta los eventos recopilados de forma automática.
user_engagement Un evento de Analytics que se activa de forma periódica mientras la app se ejecuta en primer plano. Para obtener más información, consulta Eventos recopilados automáticamente.

Exportación de datos de BigQuery

Puedes acceder a todos los datos de estadísticas relacionados con tus pruebas A/B en BigQuery. Esta herramienta te permite analizar los datos con BigQuery SQL, exportarlos a otro proveedor de servicios en la nube o usarlos en tus modelos de AA personalizados. Consulta Cómo vincular BigQuery a Firebase para obtener más información.

Para comenzar, asegúrate de que tu proyecto de Firebase esté vinculado a BigQuery. Selecciona Configuración > Configuración de proyecto en la barra de navegación izquierda y, luego, selecciona Integraciones > BigQuery > Vincular. En esta página, verás las opciones para realizar exportaciones de datos de estadísticas de BigQuery para todas las apps del proyecto.

Para consultar datos de estadísticas en el contexto de un experimento, puedes abrir la página de resultados del experimento y seleccionar Ver en BigQuery. Esto abre el compositor de consultas de la consola de BigQuery con un ejemplo de consulta de datos de experimentos precargados para revisar. Se debe tener en cuenta que, como los datos de Firebase en BigQuery se actualizan solo una vez al día, la información disponible en la página del experimento podría estar más actualizada que los datos disponibles en la consola de BigQuery.