company_banner

Windows Phone как экспериментальная платформа

    Большинство IT-компаний не делают версии своих продуктов под Windows Phone, потому что доля мобильной операционной системы от Microsoft меньше, чем у iOS и Android. Тем не менее, это третья крупнейшая мобильная операционная система на рынке, и в Badoo Windows Phone приложение уже давно существует.

    Изначально оно было написано аутсорсным разработчиком на Silverlight и долгое время не обновлялось, и несколько лет у продукта не было выделенного отдела. В 2014 году в компанию пришел разработчик Windows Phone и стал поддерживать это приложение, а я стал получать на тестирование некоторые его задачи.

    Через пару месяцев было решено написать полностью новое приложение, забросив почти все старые наработки во многом потому, что код был далек от идеала, а на его поддержку тратилось очень много времени. Первым новым приложением для Windows Phone стал экспериментальный проект Badoo — Hot or Not. По концепции он очень похож на Badoo, но в нем гораздо меньше функционала и он несколько отличается. Всего за 3 месяца мы вдвоем сделали приложение Hot or Not с нуля в одной ветке Git-репозитория, которую в итоге замержили в Master. А приложение TeamCity было настроено так, что каждый коммит разработчика собирался как отдельное приложение, что позволяло мне, как тестировщику, видеть историю изменений клиента.


    Спустя несколько релизов Hot or Not мы вернулись к разработке Badoo, решив сделать оба приложения с общим ядром. Это значило, что у Hot or Not и Badoo будут общий Git-репозиторий и общий проект Visual Studio. В то время, помимо Windows Phone 8, мы все еще поддерживали Windows Phone 7. А из-за специфики Visual Studio получалось, что это два совершенно разных приложения, и на мне было 2 проекта, каждый из которых состоял из двух приложений. Для одного тестировщика это достаточно много и, скорее всего, мы бы сделали большое количество ошибок при использовании старой схемы разработки, когда на один релиз у нас была одна ветка в Git. И мы начали думать, как улучшить процесс разработки.


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


    Мы обратили внимание, что наши команды мобильной разработки для iOS и Android используют Git Flow. Это достаточно большая система, в которой тестирование делится на три этапа.
    Изначально есть две Git-ветки: Master и Dev. Первый этап тестирования — это фича ветки. Разработчик создает новую Git-ветку из ветки Dev, делает в ней клевую функциональность и отдает ее на тестирование. Когда задача проверена и с ней все хорошо, она мержится обратно в ветку Dev.
    Когда таким образом в Dev мержится некоторое количество задач, к примеру, 10, то приходит время для второго этапа тестирования — интеграции. Тут задачи тестируются на наличие багов, которые появляются из-за интеграции нескольких веток между собой. Проблемы, найденные на этом этапе, исправляются в первом приоритете прямо в интеграционной ветке.
    Последний этап тестрования проходит перед тем, как вы хотите опубликовать вашу новую версию приложения в магазин. Это релизное тестирование. Он похож на интеграционное тестирование. Баги, найденные в релизе, тоже имеют самый высокий приоритет. Когда проверены все задачи этого релиза, проведено релизное тестирование и приложение опубликовано, релизная ветка мержится в Dev и Master.


    Git Flow очень интересная и хорошая система, которая подходит для больших команд разработки iOS и Android (у нас в каждой более 15 человек). Но одному тестировщику и одному разработчику работать с ней было бы слишком сложно, и мы решили убрать первый этап тестирования, а получившуюся систему назвали “Windows Phone Team Flow”.

    Благодаря этому мы успешно зарелизили новое приложение Badoo всего через 3 месяца после начала разработки.

    2015


    В 2015 году наша команда увеличилась в 2 раза — мы наняли еще разработчика и тестировщика, что достаточно странно, ведь классическое соотношение тестировщиков к разработчикам это 1/3. Но у нас были на это причины:
    1. У нас почти нет автоматизации. Сейчас она находится на начальном этапе развития и фактически все проверки мы делаем вручную.
    2. У разработчиков есть отличные стандартные библиотеки от Microsoft, которые вкупе с библиотеками Telerik позволяют разрабатывать новые UI-интерфейсы очень быстро. Дизайн Windows Phone очень простой, и мы стараемся избегать сложной анимации. Все это позволяет нашим разработчикам делать больше за меньшее время.
    3. Из-за большого количества экспериментов мы создаем больше новых функций в приложении, чем наши большие команды разработки, хотя нас и меньше.


    Эксперименты


    Благодаря высокой скорости доставки новых версий пользователям лучшая в нашей компании платформа для экспериментов — это веб. У нас настоящий continuous integration: 2 раза в день мы выкладываем новый билд на продакшн, и каждая выкладка занимает меньше минуты. Но сегодня мобильная индустрия развивается семимильными шагами, и все большее количество пользователей предпочитают мобильные приложения. Поэтому приоритет компании сместился на мобильные платформы. И появилась большая проблема. Результаты экспериментов, запущенных на веб, в большинстве случаев оказываются непригодными в реалиях мобильных клиентов, поэтому для экспериментов нужна специальная мобильная платформа.

    Чем Windows Phone хорош для экспериментов?
    Пусть количество пользователей нашего мобильного ресурса на Windows Phone всего 3% от общего числа, в день их все равно сотни тысяч. Такое количество позволяет запускать A/B тесты или даже A/B/C/D тесты, где они поделены на 4 группы, включая контрольную. С другой стороны, пользователей не так много, чтобы, в случае ошибки, они могли повлиять на активность большого числа пользователей. Снижение активности же на большой платформе повлечет за собой заметное снижение активности всего ресурса.

    В отличие от iOS, где время ревью в AppStore составляет неделю или даже две, по нашему опыту, ревью в Windows Phone Store занимает всего лишь 20 минут. Согласно Microsoft, через 16 часов приложение будет доступно для загрузки по всему миру. А по нашему опыту, всего через 2 часа его можно будет скачать на всех значимых для нас рынках. Это означает, что Windows Phone обладает быстрой скоростью доставки новых версий приложений. 60% пользователей обновятся в течении 24-х часов.

    У Android очень большая фрагментация аппаратного обеспечения, устанавливаемого в мобильные телефоны. Плюс каждый вендор создает свою версию этой операционной системы, при этом изменяя ее основы. Microsoft же задали жесткие ограничения для железа, используемого в телефонах, а сторонние версии Windows Phone ОС отсутствуют. Поэтому у нас почти нет багов, зависимых от операционной системы или аппаратного обеспечения.

    Windows Phone ОС была разработана уже после запуска iOS и Android. И имеет одно большое отличие — это графический интерфейс. Metro-дизайн сильно упрощен, в отличие от iOS и Android ОС. То, что было округлым, становится квадратным. В ней почти отсутствует сложная анимация. С другой стороны, это все та же мобильная операционная система с многозадачностью и сенсорным экраном. И приложения для всех этих операционных систем могут выглядеть абсолютно одинаково.


    Благодаря всем вышеописанным плюсам Windows Phone мы стали мобильной экспериментальной платформой. Наша команда быстро реализует идеи продакт-менеджеров и, собрав статистику, мы определяем, успешен ли этот функционал. Если все хорошо, эта идея отдается на разработку в команды iOS и Android, которые реализуют этот функционал по обычному «флоу». Если же статистика говорит, что у идеи есть какие-то проблемы, наш продакт-менеджер думает, как ее доработать. Придумывает, мы дорабатываем и запускаем снова. Если же ничего не помогает, то мы просто убираем этот функционал из клиента. За 2015 год, благодаря экспериментам, мы реализовали 55 новых фич, что позволило существенно увеличить доход от мобильных платформ.

    Что помогло нам достичь таких результатов?


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

    Мы все еще остаемся маленькой командой, у которой нет проблем с общением. У нас почти нет «митингов», ведь обсудить задачу мы можем сразу, не покидая рабочего места. Специально мы собираемся только раз в неделю, чтобы вместе с продакт-менеджером обсудить недельный релизный цикл.

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

    Утилиты


    В Badoo было создано очень большое количество различных утилит, которые помогают тестировать и разрабатывать быстрее, далее мы рассмотрим основные из них.

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

    QаAPI
    Иногда бывает сложно подготовить тестовый аккаунт или тестовое окружение для воспроизведения проблемы. К примеру, вам нужно проверить, как выглядит и работает письмо, приходящее на почту пользователя через неделю после регистрации. Реальный тест-кейс выглядит так: зарегистрировать новый аккаунт, подождать неделю, получить письмо и наконец-то его проверить. Но это слишком долго, и первой мыслью тестировщика будет пойти к серверному разработчику и попросить изменить что-нибудь в базе данных, чтобы он мог получить письмо побыстрее. Но отвлекать разработчиков по таким мелочам неэффективно, К тому же, подобных «мелочей» может быть очень много. И для того чтобы все были счастливы, мы создали QaAPI. Это собрание API-методов, которые позволяют быстро подготовить тестовое окружение или аккаунт. В случае с письмом, которое отсылается через неделю после регистрации, достаточно было бы запустить один QaAPI-метод, чтобы получить письмо в течение секунды. Подробнее про QaAPI вы можете узнать из доклада Дмитрия Марущенко.

    Server Mock
    В нашей компании сервер разрабатывается обычно быстрее, чем мобильные клиенты. Но, из-за быстрой скорости разработки в Windows Phone, у нашей команды есть проблема, — нельзя тестировать и разрабатывать новый функционал, потому что сервер не готов. Для того чтобы избавиться от такой проблемы, был создан интерфейс под названием Server Mock. Он позволяет создавать специальное тестовое окружение, в котором на заданные клиентские запросы сервер возвращает заранее определенные ответы. Это стало возможно благодаря протоколу, который разрабатывается при обязательном участии всех серверных и клиентских команд.
    Про разработку веба, мобильных клиентов в общем и протокола в частности Вы можете узнать в докладе Павла Довбуша.

    Badoo Internal App Store
    Помимо приложений, публикующихся в магазины приложений, у каждой нашей мобильной команды разработки есть еще по одному приложению, которые мы называем «внутренними магазинами приложений». Они позволяют устанавливать тестовые билды клиентов без установки xCode для iOS, Visual Studio для Windows Phone OS и Android SDK для Android OS. В ситуациях, когда ваш продакт-менеджер хочет изучить работу нового функционала, который в скором времени будет «зарелизен», или дизайнер хочет посмотреть, как выглядит этот новый функционал, или же переводчик хочет узнать, как выглядит только что переведенный текст на настоящем телефоне, достаточно просто выбрать и установить нужную сборку приложения.

    Debug_menu
    В каждой тестовой версии наших приложений есть большой раздел Debug_menu. К примеру, в Windows Phone Debug_Menu можно посмотреть клиентский лог, отправить его по имейлу, очистить кэш фотографий или же общий кэш, при желании можно даже закрашить приложение. В общем, возможностей, облегчающих тестирование и разработку, масса.

    Статистика


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

    HotPanel
    У нас есть собственная утилита для статистики, которая разрабатывается отдельной командой с названием BI-team (business intelligence team). Наличие такой команды позволяет создавать полностью конфигурируемую статистику, которая будет удовлетворять нуждам наших продакт-менеджеров.

    AppAnnie
    Для быстрой реакции на проблемы, о которых сообщают пользователи, оставляя отзывы в мобильных магазинах приложений, мы используем AppAnnie. Это сервис, который собирает и обрабатывает оценки и отзывы в AppStore, Google Play и Windows Phone Store.

    HockeyApp
    Одной из главных метрик успешности новой версии приложения является «крашрейт». И для сборов краш-логов от реальных пользователей мы используем HockeyApp.

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


    Пару месяцев назад мы реализовали новую задачу Double Tap To Like. На одном из наших главных экранов приложения «Люди рядом», где присутствует большое количество профилей пользователей, достаточно два раза «тапнуть» по иконке пользователя, чтобы Badoo автоматически засчитал позитивный голос за него. Запустив эту фичу, мы ожидали, что многие пользователи начнут активно голосовать. Собрав статистику, мы узнали, что у большинства пользователей активность голосования действительно увеличилась, у женской аудитории ресурса возросла даже общая активность, при этом у мужской части ресурса общая активность упала. Поэтому мы решили оставить Double Tap to Like только для девушек и отдали ее на реализацию командам iOS и Android. Этот пример в очередной раз доказывает, что статистика очень важна для принятия решений об успешности экспериментов.

    Это, пожалуй, все методы и утилиты, про которые нам хотелось вам рассказать. Все вместе и каждая в отдельности, они способны значительно ускорить процессы разработки и тестирования мобильных приложений. Проверено на Badoo. Теперь ваша очередь!

    Вячеслав Локтик
    Senior Mobile QA Engineer (Windows Phone)
    Badoo 281,28
    Big Dating
    Поделиться публикацией
    Комментарии 20
    • +2
      Все же не сильно понятно почему для эксперементов выбран именно Windows Phone
      И имеет одно большое отличие — это графический интерфейс. Metro-дизайн сильно упрощен, в отличие от iOS и Android ОС.

      Ну это было верно года три назад. Теперь уже и на айос и на андроиде такой-же минималистичный дизайн + готовых контролов под Android в сотни раз больше т.к. в разы больше комьюнити.
      Для A/B можно взять андроид (где паблишинг еще быстрее) для какой-нибудь одной страны или какое-нибудь одно непопулярное разрешение.
      • +1
        Я думаю, что основная идея, что новую фишку можно опробовать на относительно малом количестве пользователей не тратясь на тестирование на множестве девайсов, и жертвуя рейтингом на трехпроцентном рынке, а не на 80%, если фишку не примут.
        • 0
          Так я же написал — можно выпустить отдельно андроид апк для одного непопулярного screen size/density (или по другим признакам) который будет занимать эти самые 3% и не повлияет на остальные. При этом можно будет не иметь в штате windows разрботчиков (доля мало того что маленькая, так еще и падает), а обычных андроидеров, которые в свободное время будут помогать основной команде + легко внедрение фич т.к. та же самая платформа.
          • +3
            Цели «не иметь windows разработчиков в штате» у нас нет. Платформа приносит немало дохода, даже просто в денежном эквиваленте, а уж то, что мы тестируемся на платформе и экспериментируем, только добавляет положительных моментов от поддержки этой платформы.
            Ну и сказать что доля WinPhone падает я не могу — у нас она растет.
            • 0
              Ну и сказать что доля WinPhone падает я не могу

              Вы не можете, а мировая статистика по продажам — может.
              Компания вроде вашей может себе позволить содержать пару разработчиков для платформы, держащей 2% рынка. Но компании по-меньше справедливо ее игнорируют. Мне нравился Windows Phone, но очень медленное развитие, слишком строгий интерфейс (который почти не поменялся за 5 лет), отсутствие уникальных приложение (да даже от самого Microsoft, которое порой выпускает под айфон игнорируя собственную платформу) да и что там уникальных — даже обычных типа инстаграмма и т.п. долгое время, издевательство в виде бета тестирования глюченной ОС на пользователях, никакой маркетинг — всё это привело к тому что есть за 5 лет существования ОС.
              • 0
                Прежде чем написать что у нас рост — я посмотрел в графики, чтобы удостовериться :)
                Вы конечно правы, может так случиться что через какое-то время эксперименты на WinPhone перестанут себя оправдывать. Тогда мы будем использовать что-то другое, возможно и Android для экспериментов.
        • 0
          Судя по всему, их разработчикам не жалко.
          • +1
            Пользователи Windows Phone к этому привыкли. Microsoft не стесняясь нынче продает Lumia 950 с бета версией операционной системы на борту. Покупаешь телефон по цене айфона и тестируешь, тестируешь.
            • 0
              А в чем бета-то? точно так же как и раньше Сначала ос выходит с новыми устройствами, а через 2-3 месяца начинают старые обновляться.

              Точно так же как у ios9 — куча багов на старте, которые фиксятся регулярными апдейтами.
              • 0
                Так Windows 10 mobile еще не вышла же! Т.е. еще раз: в магазине продаются уже полгода девайсы с не релизной версией ОС — бета, превью и т.п. (причем хорошо так пытаются впарить сотрудники MS сторов, когда ты случайно туда заходишь) за 650$. Ну т.е. выбор из: пластиковый корпус, ОС полная багов с непонятной датой выхода релиза, отсутствие приложений, плохая карма разработчика с кидаловом пользователей. Или айфон.
                • 0
                  Чем релиз от не релиза отличается? я всегда думал, что тем, что релиз доступен для широкого круга простых пользователей.

                  Так же как и другие ОС она сначала доступна на новых телефонах. Вы же не скажете, что android 6 — бета, только потому, что стоит на небольшом количестве телефонов?

                  А насчёт багов. Тут я соглашусь, их неоправданно много. Хотя с одной стороны, на девайсах в магазинах их меньше (особенно поле последних фиксов), с другой iOS 9.
          • +1
            Привет, Nagg!
            Спасибо за фидбек.
            Дизайн для платформ у нас сильно зависит от продактов. Нельзя сказать что он не соответствует гайдам для андроида , но у нас куча своих «фишечек», которые просто так не реализуешь, используя сторонние библиотеки из вашего списка.
            К тому же, как Слава написал, в WinPhone команде минимальное количество человек, что сокращает оверхед на коммуникации до минимума.
            Наверняка есть компании, в которых эксперименты, подобные нашим, можно делать и на Android и на iOS, но у нас вот именно такая конфигурация работает очень хорошо.
            При этом фичи, которые мы опробовали на WinPhone, часто делаются в таком порядке: после WinPhone делаем на Android, затем на iOS. Фичи при этом эволюционируют — улучшаются и дорабатываются. И в iOS, к примеру, попадают максимально «отполированными», что не всегда требуется на Android.
            • 0
              Приветствую,
              но у нас куча своих «фишечек», которые просто так не реализуешь, используя сторонние библиотеки из вашего списка.

              Ну так видимо и на винфоне это «просто так не реализуешь», а по поводу скорости разработки «кастомного дизайна» и на той и на другой платформе я могу поспорить.
              К тому же, как Слава написал, в WinPhone команде минимальное количество человек, что сокращает оверхед на коммуникации до минимума.

              Так а что мешает создать такую обособленную команду среди андроид разработчиков? берут конкретную ревизию -> форкают -> впиливают экспериментальные фичи -> выпускают как обновление для н-ой группы пользователей и проводят A/B. Если фича хорошая — ее просто мержат в основную ветку и делают для iOS.
              • 0
                Ничего не мешает делать это на андроиде, конечно. У нас оказалось удобнее это делать на винфоне.
                На андроиде мы тоже проводим эксперименты, но не так активно.
          • +3
            Интересно, помогают ли сайты знакомств создать реальные отношения. Висел на сайтах знакомств лет 5, не меньше. Были очень непродолжительные связи, но в целом опыт скорее отрицательный — находились либо девушки, которым по совокупности внешних и прочих качеств сложно найти партнера, либо любительницы острых ощущений, типа изменить мужу/парню, либо вообще какие-то непонятные девушки из параллельных миров. Почему-то кажется, что сама идея в чем-то ущербна. Но возможно, это мой личный опыт.
            • +2
              Очевидно, задача создания сайта знакомств — повышение количества клиентов сайта знакомств и ARPU с них, а не создание реальных отношений.
              Извините за цинизм.
              • +1
                Привет, NetBUG!
                Ваш цинизм понятен и он вполне справедлив. Как и любой другой сервис, мы естественно заинтересованы в повышении количества наших пользователей. Мы живем за счет них и делаем нашу работу для них.
                Но справедливости ради, должен заметить, что пользователей своих мы любим и стараемся сделать все возможное, чтобы они получили то, зачем пришли. Каждый день мы работаем над придумыванием новых фич и улучшением тех фич, которые у нас уже есть. Мы удаляем то, что потеряло актуальность, «освежаем» интерфейс, пытаемся понравится новым пользователям и удержать старых.
                Все это не работало бы, если бы реальные отношения не создавались. Люди приходят за знакомствами, они их получают.
                • +1
                  К Вам претензий никаких, наоборот, по сравнению с «порталами» из mid-2000s. По крайней мере, не одна девушка с кучей виртуальных аккаунтов на миллион мужчин.
              • 0
                Привет, immaculate!

                Могу с уверенностью сказать, помогают. У нас есть немало успешных историй, какое-то время назад мы собирали их целенаправлено, сейчас часто люди присылают нам в службу поддержки слова благодарности за то, что они наконец нашли свою половину.
                Даже у нас в компании есть несколько сотрудников, которые успешно познакомились на Badoo, влюбились-поженились и дружно живут уже много лет.

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

                То есть, если у вас есть пул сессий — можно подключиться к конкретной сессии, и делать все, что угодно. Это особенно удобно в отладке. Организовать взаимодействие удобно можно, если поднять в приложении Telnet-сервер)) Я правильно понял, что у вас сделано не так? Или вы тоже удаленно управляете?)

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

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