company_banner

Как мы тестируем рекламные технологии Яндекса, и как этому научиться

    Меня зовут Константин Власов, и я руковожу в Яндексе службой управления качеством баннерной системы. Как вы можете догадываться, тестирование быстроменяющейся системы таких масштабов, как наши рекламные технологии, со всеми базами данных, репликацией компонент, протоколами взаимодействия между подсистемами, а также при довольно частых релизах, — непростое дело. При этом тестировать все нужно очень тщательно, ведь любая ошибка потенциально может принести серьезный ущерб бизнесу компании. И речь тут идет не только о репутационных издержках, но и о потере реальных денег.

    image

    Сегодня я хочу рассказать об этом чуть подробнее, а тех, кому станет интересно, позову научиться тестировать такие комплексные системы и попробовать все это на практике.

    Начнем, конечно же, с рассказа о том, что мы тестируем. В Яндексе есть два рекламных направления: контекстная и медийная реклама.

    Контекстная реклама – это текстовые объявления, которые вы наверняка видели в поисковой выдаче и на сайтах, входящих в рекламную сеть Яндекса, медийная — это флеш, гиф, видео реклама.

    Казалось бы, ничего сложного: показал рекламу, списал деньги с рекламодателей и все. Но рынок рекламных технологий устроен так, что показывать пользователям случайную рекламу — невыгодно. Рекламодатели хотят показывать рекламу именно тем пользователям, которым она действительно может оказаться полезной и интересной. Эффективность рекламного объявления напрямую зависит от его релевантности.

    Повышение релевантности — очень непростая задача, требующая наличия большого количества информации как о поведении самого пользователя, так и о многих других критериях. Поэтому наша баннерная система включает в себя кластеры машинного обучения, сложные алгоритмы ранжирования, огромные базы данных и сверхбыстрые веб-сервера, необходимые для моментальной передачи данных.

    image

    Для персонализации медийной рекламы мы используем технологию Крипта. Это метод машинного обучения, который анализирует поведение каждого пользователя в сети Яндекса, что позволяет узнать социально-демографические характеристики пользователей: возраст, пол, образование, уровень дохода, интересы — несколько сотен параметров, на основании которых мы можем показывать рекламу, предположительно полезную конкретному пользователю. Для контекстной рекламы основную роль играет поисковый запрос, который пользователь только что ввел, а также история запросов. Также учитывается местоположение пользователя и время запроса.

    Каким образом происходит подбор объявлений для показа в каждом конкретном случае – тема отдельного рассказа. Некоторое представление об этом процессе можно составить из лекции нашего коллеги Михаила Левина. Стоит лишь отметить, что в лекции приводится несколько упрощенная модель расчета вероятности показа того или иного объявления. На самом деле, помимо CTR (click-through rate) – отношения кликов к показам – в ранжировании участвует множество алгоритмов, учитывающих огромное количество факторов и коэффициентов, в генерации которых нам помогает технология машинного обучения Матрикснет.

    Важно понимать, что весь процесс генерации рекламных блоков должен происходить очень быстро — буквально несколько миллисекунд. Естественно, вся статистика просчитывается заранее. Однако все эти данные нужно быстро извлекать и пересылать между компонентами нашей системы. Для этого мы используем высокопроизводительный веб-сервер Phantom. И все это работает под нагрузкой, которую можно примерно сопоставить с нагрузкой на основной поиск Яндекса.

    Тестирование


    Тестируемая система – это набор веб-сервисов и множество скриптов, различные базы данных и интерфейсы, поэтому из-за многообразия компонентов мы делаем упор на автоматизацию тестирования. Фреймоворки для автоматизации тестирования мы создаем и поддерживаем сами. Основные языки разработки в нашей команде – Python, Perl.

    Мы постоянно экспериментируем, внедряем новые подходы и технологии: Model-based testing, Pairwise testing, Continuous Integration, Continuous Delivery и другие. Цель этих экспериментов — повысить нашу эффективность, оптимизируя процессы и инструменты.



    В тестировании быстроменяющейся системы таких масштабов, как наши рекламные технологии, со всеми базами данных, репликацией компонент, протоколами взаимодействия между подсистемами, а также при довольно частых релизах, никак не обойтись без сложной инфраструктуры и Continuous Integration (CI). Сейчас у нас реализован полный CI цикл с использованием Jenkins и OpenStack-облака.

    Нами также были разработаны несколько плагинов для Jenkins, а также использован универсальный инструмент для составления кастомных тестовых репортов Allure, любезно предоставленный нашими коллегами.

    Все эти разработки сейчас есть в открытом доступе на Github.


    Команда


    У нас нет классического разделения на тест-дизайнеров, разрабатывающих тест-кейсы, и автоматизаторов. В нашей работе много технической разработки, поэтому расти можно не только в части тестирования, но и в плане технологий. Все делается с одной единственной целью – предоставить пользователю качественный продукт. Работа достаточно стрессовая, поэтому мы стараемся создавать на рабочем месте приятную и веселую обстановку. У каждого есть свои предпочтения: спорт, музыка, видеоигры, настолки и т.д.

    image

    Мы активно растем и развиваемся, и нашей команде нужны новые кадры, поэтому родилась идея создать Школу тестирования баннерной системы – двухмесячные курсы, которые смогут дать необходимые знания и навыки для работы в нашей команде.

    image

    Обучение включает в себя не только теоретическую часть, но и практику, заключающуюся в решении задач, похожих на боевые. Читать лекции и вести практические занятия будут специалисты из нашей команды. Студентам, продемонстрировавшим успехи в процессе обучения, будет предложено пройти стажировку в Яндексе. Но даже если вы не ставите перед собой цели устраиваться на работу в Яндекс, наша школа – это отличный шанс научиться тестированию непосредственно у людей, которые развивают эту область. Наш курс можно разделить на несколько тем:

    • процесс разработки и тестирования ПО;
    • работа с системами контроля версий;
    • работа с базами данных;
    • анализ требований и проектирование тестов;
    • написание тестовой документации;
    • разработка автоматизированных тестов и целесообразность автоматизации;
    • командная работа и эффективное взаимодействие.


    Программа курса


    Более подробная информация доступна на странице нашей школы, там же можно оформить заявку на зачисление. Набор продлится до 19:00 21 февраля.
    Яндекс 569,85
    Как мы делаем Яндекс
    Поделиться публикацией
    Комментарии 27
    • 0
      Скажите пожалуйста, а не планируется ли аналогичных курсов Школы тестирования (быть может, не конкретно по баннерной системе, но все же по тестированию) в Питерском офисе?
      • +2
        В самое ближайшее время курсов в СПб не планируется, но у нас есть открытые позиции на практике по тестированию. По всем вопросам практик в Питере можно писать мне.
      • +1
        Очень интересно и познавательно!
        • +8
          Плохо вы трестируете, из-за вас мы теряем деньги!
          Вот вам пример:
          метка yclid прописывается только на выдаче поисковой системы, но не в интерфейсе Директа.
          В итоге корректно проверить объявление можно только скликав свою рекламу за свои же деньги в поисковой выдаче.

          Ну а после истории с односторонним изменением агентских комиссий Яндекса стало понятно, что вы превращаетесь в монстра, который просто использует свое монопольное положение, забыв про ту работу, которую делали агентства, подготавливая для вас рынок.
          • +1
            Похоже это вы плохо разбираетесь в предметной области.
            Чтобы корректно проверить работоспособность yclid на сайте достаточно в любую ссылку на нем дописать окончание вида "/?yclid=123456" и посмотреть, открывается ли. Кликать для этого по собственному объявлению совсем не нужно. А скликать его за свои деньги и не получится — на то есть специальные фильтры антифрода.

            Наброс про агенства вообще не в тему поста…
            • 0
              Логично было бы сделать так, что если включаешь метку yclid, то она транслируется в интерфейс яндекс-директа. С интерфейсом директа работают неподготовленные люди — простые клиенты. Вы сами так позиционируете свои услуги. Так и пишите, что для работы с директом требуется знание протокола http и GET запросов серверу. Даже подготовленные медиапланнеры могут не догадаться, что оказывается в интерфейсе директа и в выдаче разные ссылки. И такие ответы в стиле «у меня все работает» показывают отношение компании к своим пользователям, которые, заметьте, используют платные услуги яндекса.

              Про агентства — не в тему поста? Это блог компании яндекс — будьте готовы не только красоваться как у вас в игрушки играют, но и отвечать на критику конструктивно. Агентства занимались популяризацией директа не один год — факт! Яндекс в одностороннем порядке за три дня до продления договора снизил комиссии — факт! Не дали времени перепрофилировать людей, спланировать финансовые потоки. Хорошо, что у нас это направление не основное, люди не пострадали. А некоторые закрылись, некоторые уволили людей из-за таких «партнерских» действий. Предупредили бы за несколько месяцев — это было бы справедливо.
              Это как снизить человеку зарплату за 2 дня до выдачи без предупреждения и объяснения в чем он виноват.
              • 0
                Это конечно печально. Рад, что вам есть где высказаться, но вы с таким же успехом можете прийти к разработчикам банковского софта и начать их расспрашивать, почему проценты по кредитам увеличились. Гениальное решение…
                • 0
                  Будьте готовы ко встрече с мнением клиентов о вашей работе, если разводите PR на открытой дискуссионной площадке.

                  У меня вопрос конкретный: почему метка yclid не показывается в урлах интерфейса управления контекстной рекламой? В выдаче есть, а в админке — нет? Это против логики!
                  Вы предлагаете проверять объявление подстановкой yclid в урл?
                  В кампаниях бывает за 100 объявлений, и каждое проверяется медиапланнером через клик в интерфейсе директа на предмет глюков/ошибок. Вполне возможно что в какой-то странице этот yclid вызовет ошибку на стороне сервера (не спрашивайте меня, почему. это сервер заказчика).
                  Но нам надо проверять все руками! Это прекрасно!

                  Все ответы в стиле «По поводу проценты по кредитам увеличились» — это вы к чему?
                  Я у яндекса в кредит ничего не брал и не собираюсь. Это яндекс я кредитую своей агентской комиссией на 3 месяца каждый раз, т.к. у вас отсрочка платежа 3 месяца.
                  Я информирую общественность о том, что яндекс по моему мнению ведет себя с партнерами не по партнерски.
                  • 0
                    Интересно, а вот когда яндекс-диск сшибал винду после апдейта, ваша компания тоже отвечала в стиле «Похоже это вы плохо разбираетесь в предметной области.» или «почему проценты по кредитам увеличились. Гениальное решение…»
                    Это прекрасное отношение к клиенту!
                    Это client care и customer support!
                    на этой истории с yclid мы потеряли реальные деньги! Большие для нас деньги. И яндекс не стал ничего компенсировать.
                    Он даже не заткнул дыру и продолжает утверждать что все работает нормально, «вы плохо разбираетесь в предметной области».
                    Пусть другие наступают на грабли, мы не будем ничего менять, мы — великий яндекс.
                    Забронзовели.
            • 0
              Многие темы выглядят жетовато и довольно бессистемно для лекций учебного курса. По мне очень хороший уровень учебных материалов задан лекциями КИТа. Полагаю, это попадет в публичный доступ, не думаю людям готовым пройти собеседования и решать тестовые задачи это будет столь инетерно.
              Вне зависимости от этого желаю вам удачи и успехов в организации и проведении.
              • 0
                Видимо из текста не очень понятно: этот курс не нацелен на профессионалов в области тестирования, он в первую очередь будет интересен студентам, которые только собираются посвятить себя области IT или делают первые шаги.

                В процессе этого курса мы дадим людям информацию о том, как вообще устроена разработка софта, какие бывают роли в командах, какие стадии проходит софт от задумки до финального внедрения и что такое тестирование, зачем оно нужно, какие задачи решаются и какими способами. В общем, все то, что обычно не рассказывают в институтах.

                В итоге люди смогут более осознано сделать выбор будущей области своей работы и, мы надеемся, кто-то из них посвятит свою карьеру именно тестированию.

                Людям готовым сходу пройти к нам собеседование это и правда скорее всего не будет интересно.
              • –1
                Первая картинка, как обычно, не имеет никакого отношения к тексту. И тут «маркетинг».
                • +1
                  Зато там у девушки фигура красивая. =)
                  По сути: «маркетинг», конечно, есть, но Яндекс одна из тех компаний, что ооочень взвешенно и аккуратно, но таки делится некоторыми идеями и технологиями, оное заинтересованный читатель наверняка найдёт и в этом посте. Это я не подлизываюсь, это я прошу продолжать в том же духе.
                  ЗЫ: Под фигурой я имею в виду не эти полиномиальные сплайны что на доске, хотя в них тоже есть своя эстетика, а фигуру девушки можно ими аппроксимировать… эмм. Извините за оффтоп.
                • +1
                  Групповое фото нужно переснять фиш-айем :-)
                  Девушек жалко крайних.
                  • 0
                    Статья хорошая, только не понятно нафига вы американский флаг повесили в офисе?
                    • +2
                      То есть флаг конфедератов вас не смутил? :)
                      Вообще мы из каждой поездки привозим флаги той страны где были, просто повесили пока только штаты. Да и не поместятся они все.
                    • 0
                      У меня AdBlock хорошо режет текстовую рекламу, но со страниц самого яндекса резать ее не умеет. Кто знает как его научить?
                      • 0
                        В Я.Браузере в разделе дополнений можно включить встроенные блокираторы рекламы, которые появились в одной из последних версий. Они режут рекламу (как контекстную, так и медийную) везде, в том числе и на страницах яндекса, кроме страниц поисковой выдачи.
                        • 0
                          режет без проблем у меня
                        • 0
                          Fuzzyjammer, Школа тестирования баннерной системы покрывает общие темы — смотрите детали курса, а название школы соответствует названию проекта ее организаторов.
                          • 0
                            все таки не очень понятно и приятно, когда ты ищешь какую-то информацию, а потом тебе несколько дней показывают рекламу по поводу этой информации и даже на тех сайтах, где была бы уместна совершенно другая реклама.
                            Вот искал я характеристики определенной машины, я ее не собирался покупать, потом захожу на сайт медицинской тематики и вижу рекламу с этим авто — вот тут мне как раз бы и показать рекламу контекстно близкую к мед. тематике.
                            и страдают от этого не только пользователи, но и владельцы сайтов — ведь CTR явно снижается
                            • 0
                              На самом деле вам так только кажется: в вашем конкретном случае — вы может и не собирались ничего покупать, но даже руководствуясь здравым смыслом, кажется, что многие из тех кто ищут характеристики какого-то автомобиля так или иначе рассматривают вариант его покупки.
                              И скорее всего, после того как вам было показано несколько объявлений с автомобилями, и вы на них не отреагировали, реклама была заменена на что-то другое.

                              В любой ситуации всегда есть исключения, но механизмы оптимизации показов и CTR работают и работают хорошо, естественно не без доли рандома :)

                              Аналогия: я прихожу в магазин за хлебом, иду мимо стеллажей с молоком и вижу рекламу какого-то конкретного молока, и думаю «зачем они ее тут повесили? я же за хлебом пришел!».
                              • 0
                                аналогия может быть другая, вы приходите в магазин за хлебом, а рядом с батонами на прилавке мобильные телефоны (или реклама мобильных) — зачем они там, ведь на входе в магазин явно написано — «Булочная»
                                • 0
                                  В этой аналогии нет связи с телефонами. Вы их так или иначе должны были где-то рядом видеть.
                                  • 0
                                    Да перед этим я заходил в салон связи пополнить счет.
                                    Ну вот только что, я столкнулся: неделю назад я искал по запросу «заказ автобуса» — сейчас мне главная мобильного яндекса предлагает «заказ микроавтобуса на свадьбу» — Хорошо, что главная, но так неделя прошла. Да я после этого не искал ничего с мобильного.

                                    Кстати, единый аккаунт влияет, или все-таки от куков в браузере?

                                    т.е. понятно и то и другое, но если я искал на десктопе залогиненный, то на мобильном реклама будет исходя из данных полученных в рамках аккаунта?
                            • +1
                              Задание понравилось, классический треугольник.
                              Впервые пишу тестовый фреймворк на батниках :)
                              • 0
                                Честно говоря, я тоже)
                                Думаю, опыт в автоматизированном тестировании будет полезен, поэтому тоже решил попробовать поучаствовать.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое