Будешь делать split по чатам или по пользователям

«Будешь делать split по чатам или по пользователям» — вопрос из категории A/B тестирование, который задают на 38% собеседований Продуктовый Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для A/B-тестов лучше делать сплит по пользователям, а не по чатам, так как это обеспечивает независимость наблюдений. Если сплитить по чатам, один пользователь может попасть и в тест, и в контроль, что нарушит статистическую достоверность.

Пример кода для сплита по user_id:

import hashlib

def assign_group(user_id, salt='experiment_salt'):
    hash_val = int(hashlib.md5((str(user_id) + salt).encode()).hexdigest(), 16)
    return 'test' if hash_val % 100 < 50 else 'control'

Исключение — если тестируем фичи, которые работают на уровне чата (например, групповые чаты), тогда можно делать сплит по chat_id, но с проверкой, что пользователи не пересекаются между группами.