Я начинаю писать код для тестирования A/B в веб-приложении Grails. Я хочу убедиться, что запросы с одного и того же IP-адреса всегда видят одинаковые варианты. Вместо того, чтобы хранить карту варианта IP->, достаточно ли просто перевести IP-адрес в целое число, удалив точки, а затем использовать это как семя для генератора случайных чисел? Следующее происходит в фильтре Grails:Лучшая практика для назначения вариации теста A/B на основе 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
Я знаю, что идентификация пользователей по IP-адресу не является надежным, и я буду использовать переменные сессии/печенье, а также, но это, кажется, полезно для случая где у нас есть новый сеанс, и cookie не установлен (или у пользователя отключены файлы cookie).
Спасибо за ваши комментарии - ip% number-of-scenarios - хорошая идея. IP-адрес будет использоваться только тогда, когда пользователь отключил cookies (или разрешает только файлы cookie сеанса); моя забота заключается в том, что может быть больше работы/кода для обнаружения этих случаев и направления их по умолчанию. Выполнение «набора файлов cookie, перенаправление, проверка cookie» означает, что пользователи с отключенными cookie будут отключены, но как быть с теми, у кого есть только файлы cookie сеанса? К счастью, мой сайт не имеет учетных записей пользователей, так что это еще одна вещь, о которой нужно беспокоиться! – mojones
@mojones: Я обнаружил, что учетные записи пользователей упрощают работу, для моего приложения мы добавили A/B-тестирование для зарегистрированных пользователей, прежде чем мы сделали это для анонимных пользователей, потому что было намного проще отслеживать все это. Один недостаток, о котором я забыл упомянуть о тестировании на основе IP, заключается в том, что он затрудняет QA тестовый код или тестовые сценарии, если вы не подделываете свой IP-адрес. –