Las mejores prácticas para la asignación de variación de la prueba A / B según la dirección IP

StackOverflow https://stackoverflow.com/questions/2523192

Pregunta

Me estoy empezando a escribir algo de código para las pruebas A / B en una aplicación web Grails. Quiero asegurar que las peticiones de la misma dirección IP siempre ven la misma variación. En lugar de almacenar un mapa de IP-> variante, ¿está bien simplemente gire la dirección IP en un entero mediante la eliminación de los puntos, a continuación, usar eso como la semilla de un generador de números aleatorios? A continuación se lleva a cabo en un filtro de Grails:

def ip = request.remoteAddr
def random = new Random(ip.replaceAll(/\./, '').toInteger())
def value = random.nextBoolean()
session.assignment = value
// value should always be the same for a given IP address

Sé que la identificación de los usuarios mediante la dirección IP no es fiable, y seré el uso de variables / cookies de sesión, así, pero esto parece ser útil para el caso en el que tenemos una nueva sesión, y la haga ninguna cookie (o el usuario tiene desactivado las cookies).

¿Fue útil?

Solución

Simplemente podría tomar el número de 32 bits y hacer ip number_of_test_scenarios mod. O utilizar una función hash norma establecida en el rubí. Pero siento que debería señalar algunos problemas con este enfoque:

  1. Si la aplicación está detrás de los proxies, la dirección IP será la misma para todos los usuarios de ese proxy.
  2. Algunos usuarios cambiarán IPs con bastante frecuencia, con más frecuencia de lo que cree. Tal vez (como dice Joel Spolsky) "Internet se ha roto para los usuarios", pero yo diría que es un mal servicio a sus clientes si se hace el MAS Internet roto para ellos, sobre todo de una manera sutil, dado que probablemente no son en condiciones de hacer nada al respecto.
  3. Para los usuarios que tienen una nueva sesión, sólo puede asignar la cookie en la primera solicitud y mantener las asignaciones en la memoria; a menos que las solicitudes iniciales de un usuario van a múltiples servidores al mismo tiempo, esto debería resolver ese problema (que es lo que hago en la aplicación mantengo).
  4. Para los usuarios con las cookies desactivadas, yo diría que "Internet se ha roto", y yo no iría a muchos problemas para apoyar ese caso; que habían se asignan a un cubo de prueba predeterminado y todos van allí. Si va a apoyar muchos de esos usuarios de una manera no-roto que está creando el trabajo por sí mismo, pero tal vez eso está bien. En este caso es posible que desee considerar el uso de redirecciones URL reescritura y 302 para enviar a estos usuarios por uno u otro escenario. Sin embargo, en mi opinión, esto es, no vale la pena el tiempo.
  5. Si los usuarios pueden iniciar sesión en el sitio Asegúrese de que registra las asignaciones de escenarios en su base de datos y conciliar las discrepancias de galletas / db en consecuencia.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top