Hacer un test A/B es algo común en entornos como web o móvil, pero en un bot no es tan frecuente. En este post me gustaría ver los detalles y las peculiaridades de hacer tests A/B en bots, qué nos aportan y cómo incluirlos en tu bot. Pero primero empecemos por el principio.
Tabla de contenidos
¿Qué es un test A/B?
Es la forma de comparar estadísticamente 2 versiones de un mismo producto. En marketing se usa como estrategia que permite conocer los gustos y costumbres de los usuarios. Se crean 2 versiones de producto, versión A y versión B, que difieran en color, forma, tamaño, … Se definen las métricas (clicks, scrolls, tiempo de sesión, …) que servirán para comparar las 2 versiones. Una vez comparado los datos que arrojen las versiones, podemos extraer conclusiones para nuestro producto. Por ejemplo, dónde poner un botón, qué color de fondo funciona mejor o cómo de largo debe ser un texto, entre otros. En el siguiente video lo explican muy bien.
¿Por qué queremos hacer esto en nuestro bot?
En resumen, para entender mejor a nuestros usuarios, sus gustos y preferencias. La intención es adquirir 2 niveles de conocimiento.
- General: Tomar perspectiva real de las preferencias de mis usuarios, aprender de ellos, puede haber cosas que pensamos que gustan y no se corresponde con la realidad. Nos ayudará a entender mejor los perfiles de nuestros usuarios.
- Concreto: Para mejorar el diseño de nuestro bot, sus interacciones en modo vocal, textual o táctil, recursos gráficos, textos, sugerencias, … saber qué funciona mejor, en sus diálogos, la profundidad de los niveles de conversación, flujos diferentes …
¿Cómo lo hacemos?, ¿qué necesitamos tener en cuenta?
Para afrontar el problema de A/B testing en bots me gustaría enumerar algunas herramientas ya disponibles:
Son herramientas que conectándose a tu bot pueden extraer los datos necesarios que sirven para hacer un análisis posterior. Si con ninguna de esas herramientas te vale, y quieres hacer tu propia herramienta para test, aquí te dejo algunas ideas.
Métricas 🧮
Tu herramienta necesita incluir varios tipos de indicadores. Está muy bien medir el número de interacciones por usuario, pero qué sucede cuando tenemos un usuario que dice 300 veces “Hola, ¿qué tal?” , los resultados pueden distorsionarse. Aquí os sugiero algunos índices más:
- Interacciones. Separando totales, vocales o textuales y táctiles si las hubiera.
- Sesión. Duración de la sesión.
- Tasa de abandono. Número de personas que experimentan con tu bot pero no les gusta.
- Usuarios. Activos en el test, antiguos y nuevos.
- Recurrencia. Vuelven los usuarios al bot. Sobre qué versión vuelven más A o B.
- Calidad. Están los usuarios interactuando sin interés o son de calidad. Podemos contar las intenciones (intents) por usuario sobre cada versión del test y descartar las intenciones irrelevantes (saludos, despedidas, smalltalk, …). También ver el dominio al que se acoge cada interacción y ver si se encuentra en el marco de nuestro test. Incluso podríamos eliminar las stopwords como son las preposiciones, artículos o pronombres y sacar el índice de palabras con peso en las interacciones y comparar las versiones.
- Conversiones. Cada caso de uso de tu bot tiene un camino que acaba en una conversión. Donde una conversión es llegar al paso final del camino definido, y cada paso del camino es un nivel de profundidad de la conversación del bot. Cada versión A o B son caminos diferentes ¿Están tus usuarios llegando al final de cada camino?, ¿En que versión llegan más A o B? ¿Dónde se quedan?
Formas de establecer los grupos de usuarios del test 🧪
Establecer los grupos de usuarios puede complicarse, especialmente si quieres evitar inducir a sesgos cognitivos.
- Conversación abierta. Si es un experimento abierto en el que no se necesita tener en cuenta el perfil del usuario, puedes hacerlo aleatoriamente según los usuarios vayan entrando, de manera que, al final la distribución quede repartida tal y como lo has pensado en un principio (50/50, 20/30/50, 40/60, …) esto puede ayudar a evitar sesgos en el caso en que los usuarios sepan que versión será la suya.
- Conversación Restringida. En caso de que el experimento sea restringido a una conversación o funcionalidad específica, donde solo se despierte el interés de determinados usuarios, sería interesante perfilar a estos usuarios previamente para no meter a otros usuarios en el embudo equivocado y estropear las métricas. Es decir, un test A/B sobre una conversación de futbol sería bueno hacerlo con personas con cierto gusto por el futbol.
Independientemente si necesitas perfilar a los usuarios o no, otra idea para agrupar los usuarios de forma eficiente y evitar los sesgos, es hacer la asignación a los grupos de forma aleatoria sobre el espectro predefinido. A medida que los usuarios interaccionen serán añadidos en orden a la muestra predefinida.
Por ejemplo, un test AB sobre 1000 usuarios repartidos 50/50, reservaré 500 huecos al grupo A y 500 al grupo B, mezclados ya aleatoriamente, donde asignaré a los usuarios por orden de llegada.
Esto evita sesgos y nos permite hacer el cálculo de la versión que será asignada previamente, lo que puede ser más eficiente en caso de cálculos complejos por perfiles u operaciones propias del bot.
Peculiaridades de correr A/B test en bots 🔎
Los Tests A/B son una idea de unos ingenieros de Google, allá por los 2000 para medir cual de las 2 versiones A o B de un buscador, mostraba mejores resultados. Hacer esto en un bot tiene algunas singularidades:
- Conducir al usuario hasta nuestro embudo no es fácil mediante una conversación. Las conversaciones son mucho más abiertas que una web donde el usuario se restringe al área de acción de la web. En un bot no sabemos lo que el usuario va a decir, imagina que puede decir lo primero que le venga a la cabeza 🤭
- Al no saber que va a decir, debemos estar preparados para que la conversación pueda variar y debemos tenerlo presente para diseñar nuestro test. Podemos querer que el usuario entre por un camino concreto donde participará en el test pero si no entra en ese camino o si entra pero su conversación es inesperada, el bot debe estar preparado para responder adecuadamente.
- En un post anterior mencionaba las guías de usabilidad en interfaces vocales. GUI + TTS ≠ VUI (Graphical User Interface + Text to Speech ≠ Voice User Interface). Si vuestro bot tiene el apoyo de una interfaz visual, serviros de ella, pero es importante recordar que lo principal es la voz. Diseñar nuestro bot para que la voz sea la protagonista principal. Para hacer un test A/B y conducir al usuario a nuestro test diseña antes las posibilidades de conversación y los diferentes flujos que pueda tomar el diálogo.
Las 5 Claves para poner en marcha tus test A/B ️✍️
- Métricas. ¿Qué vamos a medir? Por ejemplo, quiero saber la tasa de conversión de una tarjeta de información (card) frente a otra con otro color. Podremos medir el número de taps dentro de la card, el número de veces que se pide información relativa a la card, el número de sesiones terminadas en la card, entre otros indicadores.
- Estrategia. Diseña tu test, número de usuarios, como van a estar divididos (2 grupos de 50/50, 3 grupos de 30/20/50, …). Echa cuentas, cuántos usuarios tienes y cuántos necesitas que confirmen tu hipótesis inicial.
- Escenario. Que sea lo más real y relevante posible. Si queremos probar con un grupo de usuarios una funcionalidad concreta pero no usamos el bot de producción es importante que los usuarios estén ante un entorno lo más real posible para no inducir a sesgos que distorsionen los resultados. Ve a lo importante, si tu bot es para pedir pizzas y tus usuarios no hacen pedidos, no tiene mucho impacto que hagamos A/B testing para saber si un saludo es mejor recibido que otro, servirá más que testemos la conversación previa y durante el pedido para detectar si algo no va bien.
- Aislamiento. Si quieres testear un bot que recomienda ropa. Puedes empezar por los elementos visuales como las tarjetas de información (card) y luego los diálogos. No mezclemos todo. La interacción con botones y diálogos sobre lo mismo a la vez eso es un test A/B multivariante, empieza por algo sencillo.
- Resultados. Busca una buena herramienta que te permita visualizar los resultados como mejor los entiendas tú y tu equipo. A mi personalmente Elastic Stack me va bien pero hay otras alternativas como splunk, logDNA o Loggly.
Espero que estas píldoras te ayuden.
Gracias por leerlo. 🚀🚀🚀
Fuentes
https://discover.bot/bot-talk/improving-chatbot-performance-through-ab-testing/
https://www.optimizely.com/optimization-glossary/split-testing/
https://chatbotsmagazine.com/a-b-testing-in-chatbots-2e6197787a5c
https://chatbotsjournal.com/the-definitive-guide-on-chatbots-a-b-testing-92384d76e0f2
https://medium.com/ibm-watson/chatbot-validation-methods-8930737aeb2d
https://blog.aimultiple.com/chatbot-analytics/
https://www.optimizely.com/optimization-glossary/multivariate-test-vs-ab-test/