⚖️ Думаете, у вас нет SRM? Проверьте ещё раз О том, что такое Sample Ratio Mismatch (SRM) в АБ тестировании, как его определить и почему это важно – я уже рассказывал вот в этом посте. Если думаете, что проблемы с SRM не касаются АБ тестов вашего продукта – это хороший повод задуматься. Даже крупные корпорации с крайне развитой experiment-driven культурой и принципами «тестировать каждый пиксель» страдают от этой проблемы. Например, 6% всех в Microsoft имели SRM. Или 10% АБ в LinkedIn с кастомным условием попадания в тест. Я не исключение – SRM сжег десятки часов моей жизни. И сегодня хочу поделиться парой кейсов столкновения с SRM из своего опыта: 1️⃣ Я занимался АБ-тестами веб-версии продукта. Технически деление происходило через Nginx (обратный прокси, балансировщик) – направляли трафик на ноды с разными ветками продукта. Теоретически делили трафик 50/50. На практике, практически вне зависимости от размера выборки, с поражающей стабильностью выходило 45/55. Много недель было потрачено в попытке найти корень проблемы. Оказалось, что дело было в конфиге Nginx – баланс был указан в процентах, а нужно было указать в абсолютах 🤦‍♂️ Почему две фактически эквивалентные записи работали по-разному – осталось загадкой. Наверное, потому что Javascript. 2️⃣ Проводил ревью АБ-платформы в одном стартапе. Основной продукт – мобильное приложение. При делении 50/50 следов SRM не было. Но стоило поделить как-то иначе, например, 90/10 – он возникал. Оказалось, что дело бы в самописной хеш-функции для распределения пользователей на ветки (вместо, например, классического md5), которую ребята сами изобрели. --- «Ну подумаешь – выборки получились разного размера. Это же никак не влияет на результаты. Можно просто подводить итоги как обычно и все» А это заблуждение может стоить вам корректности принимаемых решений. Sample Ratio Mismatch – индикатор более серьезных проблем где-то в глубине механизмов проведения АБ. Так, в первом моем кейсе «из-за SRM» пользователи бывали сразу в нескольких ветках за тест. А во втором – появился эффект памяти. Т. е. те пользователи, кто уже был в контроле, в следующем эксперименте вероятнее тоже попадут в контроль. Это все приводит к нерепрезентативности получаемых результатов. А сталкивались ли вы с SRM на практике? В чем была его причина? #абтесты