Короткий ответ
Случайная рандомизация делает группы статистически сопоставимыми по всем характеристикам — и видимым, и невидимым, — поэтому разница в метриках объясняется только тестируемым изменением. Деление по неслучайному признаку вносит систематическое смещение (selection bias).
Как это работает подробнее
каждый пользователь попадает в группу с фиксированной вероятностью независимо от своих свойств; при достаточном объёме выборки группы в среднем становятся похожи по возрасту аккаунта, активности, платформе и прочим признакам.
Пример плохого дизайна: пользователи, зарегистрированные после 1 марта, автоматически попадают в группу B (новая версия), а до — в группу A. Проверка: сравнить распределение «возраста» аккаунта в группах — если оно радикально отличается, рандомизация нарушена и SQL-запрос на сравнение created_at по группам покажет явный разрыв дат.
Что использовать на практике
- рандомизацию обычно делают по хэшу user_id с солью эксперимента, чтобы один пользователь стабильно попадал в одну группу на всё время теста и разные тесты не коррелировали между собой.
Подводные камни
- деление по дате регистрации, региону или времени захода путает эффект изменения с эффектом когорты: новые пользователи могут вести себя иначе, чем старые, независимо от теста.