Как проводить A/A-тесты?
Основная цель A/A-тестов – убедиться в корректности системы сплитования. Я знаю, что люди реализуют А/А тесты очень по-разному. Но далеко не все задумываются о проблемах, с которыми они могут столкнуться от той или иной реализации. Давайте сегодня разберем основные из них:
А/А-тест на проде
Это, условно, тот же A/B-тест, где ветка B ничем не отличается от А. Такой вид А/А, по моим ощущениям, наиболее популярен среди аналитиков.
Но он не является оптимальным. Ведь что если мы получим ошибку 1 рода? Тогда мы будем вынуждены разбираться по сути с корректно работающей системой.
A/A/B-тест на проде
Здесь А/А проводится параллельно настоящему тесту. Такая конфигурация используется, когда нам нужно выдерживать временные окна у метрик, или когда не хотим раскатывать 50-50, или же чтобы эффективнее попадать в релизные циклы.
Встречается реже, но вероятность получить ошибку 1 рода все еще остается.
Более оптимальным вариантом является следующий:
Симуляция А/А-теста на истории.
Пусть наш объект сплитования – это user_id. Тогда мы можем:
1. Взять N недель исторических данных; 2. Согласно реализации нашей системы сплитования (например, с помощью хеш-фукнции и солей), разделить всех user_id на две группы 1000 раз; 3. Для некоторой метрики и стат. теста оценить p-value на каждой итерации; 4. Построить распределение полученных p-value.
Если система сплитования работает корректно – распределение должно получиться равномерным (можно проверить с помощью теста Колмогорова-Смирнова).
Но и здесь есть одно но. Это всего лишь симуляции. Такой А/А может не иметь ничего общего с продом.
Эту проблему решает следующая реализация:
Симуляция А/А-теста на проде.
Важно делать это прямо на проде, потому что именно прод-версия будет дальше сплитовать все тесты.
Для этого мы можем «попросить» нашу сплитовалку провести 1000 А/А тестов. Т. е. чтобы сама система сплитования разделила нам пользователей 1000 раз на тест и контроль. А дальше либо проверить равномерность распределения p-value на истории по аналогии со способом выше, либо уже на новых данных.
Если у вас собственная система сплитования – это сделать легче. С внешней системой сплитования можно провернуть это через её API.
По-моему опыту, единственный надежный способ проверить систему сплитования для A/B-тестов – симуляции А/А-тестов прямо на проде. Только так вы можете по-настоящему гарантировать её корректность.
Хочешь глубже разобраться в аналитике?
Посмотри программу курса по продуктовой аналитике и экспериментам.