Je commence à écrire du code pour le test A/B dans une application Web Grails. Je veux m'assurer que les demandes provenant de la même adresse IP voient toujours la même variation. Plutôt que de stocker une carte de IP-> variante, est-il correct de simplement transformer l'adresse IP en un entier en supprimant les points, puis l'utiliser comme la graine pour un générateur de nombres aléatoires? Ce qui suit se passe dans un filtre Grails:Meilleure pratique pour affecter une variation de test A/B basée sur l'adresse IP
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
Je sais que l'identification des utilisateurs par adresse IP ne sont pas fiables, et je vais utiliser les variables/cookies de session ainsi, mais cela semble être utile pour le cas où nous avons une nouvelle session, et aucun jeu de cookies (ou l'utilisateur a des cookies désactivés).
Merci pour vos commentaires - ip% number-of-scenarios est une bonne idée. L'adresse IP ne sera utilisée que si un utilisateur a désactivé les cookies (ou autorise uniquement les cookies de session); mon souci est que cela pourrait être plus de travail/code pour détecter ces cas et les diriger vers un chemin par défaut. Faire un "cookie, redirection, test de cookie" identifierait les utilisateurs avec des cookies désactivés, mais qu'en est-il de ceux avec seulement les cookies de session activés? Heureusement, mon site n'a pas de compte utilisateur, donc c'est une chose de moins à s'inquiéter! – mojones
@mojones: Je trouve que le fait d'avoir des comptes d'utilisateurs rend le tout plus facile. Pour mon application, nous avons ajouté le test A/B pour les utilisateurs connectés avant de le faire pour les utilisateurs anon. Un inconvénient que j'ai oublié de mentionner à propos des tests basés sur IP est qu'il rend plus difficile l'assurance de la qualité du code de test ou des scénarios de test à moins que vous fassiez valoir votre adresse IP. –