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 forma 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 del 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 nuevas variantes de las funciones 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 la 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 de uso compartido de datos y asegúrate de que esté habilitado el uso compartido de datos. Sin él, 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. Completa los campos de Orientación. Para ello, selecciona primero la app que usa el experimento. También puedes seleccionar una o más de las siguientes opciones para limitar el experimento a un subconjunto de los 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 termines, 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 la app para que tenga efecto. Puedes repetir este paso a fin de 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 ejecute por un tiempo, podrás verificar el progreso y ver cómo son 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, luego, en el título del experimento. En esta página puedes ver varias estadísticas sobre el experimento en ejecución, incluidas 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: Corresponde al valor acumulado observado para la variante o el grupo de control. Este valor se usa para medir el rendimiento de cada variante de experimento y calcular la mejora, el rango de valores, la probabilidad de superar el punto de referencia y la probabilidad de ser la mejor variante. En función de la métrica que se mide, esta columna podría tener la etiqueta “Duración por usuario”, “Tasa de retención” o “Porcentaje de conversiones”.
  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 que cumplan las condiciones del 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 en el que se presentan 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 para publicarlo en Remote Config para todos los usuarios. Incluso si no se consiguió una clara variante ganadora por medio del experimento, 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. Selecciona En ejecución y coloca el cursor sobre el experimento. Haz clic en el menú contextual (more_vert) y, luego, en Aumentar la 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 especificado.

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. Selecciona Completados o En ejecución y coloca el cursor 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 regex, puedes crear expresiones regulares en formato RE2. La expresión regular puede buscar una coincidencia total o parcial en la string de la versión objetivo. También puedes usar los delimitadores ^$ 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 de usuario correspondiente en un número entero/flotante.
Cuando usas el operador contiene la regex, 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 ^$ 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. Ten 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 a 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). En las siguientes tablas, se proporciona información sobre la forma en que se calculan las métricas objetivo y otras métricas.

Métricas de objetivo

Métrica Descripción
Participación diaria de los usuarios Tiempo promedio que el usuario pasa en la app por día
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 la app. Para obtener más información, consulta Realiza seguimientos de las vistas de pantallas.
session_start Un evento de Analytics que cuenta las sesiones de usuario en la app. Para obtener más información, consulta Eventos recopilados automáticamente.
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.

Exporta datos a BigQuery

Puedes acceder a todos los datos de estadísticas relacionados con las 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 Firebase a BigQuery 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. Esta acción abrirá el compositor de consultas de la consola de BigQuery con un ejemplo de consulta de datos de experimentos precargado para revisar. Ten 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.