company_banner

8 интересных багов беты iOS 12 и как мы их искали



    Всем привет!

    Я Катя, тестирую мобильные приложения в Badoo. Сегодня я расскажу о том, почему тестировать бета-версии так важно, как мы проводим мануальное тестирование таких версий и что интересного мы обнаружили в ходе проверки iOS 12 Beta.



    Каждый год в сентябре Apple выпускает новую версию iOS, и на каждой WWDC представители компании хвастаются, что пользователи iOS устанавливают обновления гораздо быстрее, чем пользователи Android.

    Причина этого не только в том, что iOS крута сама по себе, но и в том, что в Apple знают, как заставить юзеров обновиться:

    • меняя положения кнопки «Напомнить позже», чтобы некоторые невнимательные пользователи случайно нажали на кнопку обновления;
    • не разрешая понизить версию;
    • показывая красный маркер на иконке настроек;
    • наконец, мой любимый ход — ежедневный показ сообщений об обновлении.



    Кстати, в бета-версии был раздражающий баг. Уведомление об обновлении всплывало всякий раз при разблокировке экрана или закрытии центра уведомлений; доступных апдейтов при этом не было.  

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


    Как видно из графика, в августе прошлого года бета-версия iOS 11 была установлена лишь у 1,05% наших пользователей, а к концу октября этот показатель достиг почти 60%.

    Пример из личной практики

    В сентябре 2017 года я обновила версию своего устройства до iOS 11, и приложение электронной почты, которой я активно пользуюсь, перестало присылать push-уведомления.  Да, вам не померещилось: ПЕРЕСТАЛО. ПРИСЫЛАТЬ. ПУШИ. Таким образом, чтобы узнать, пришло ли мне письмо или нет, приходилось открывать приложение и проверять папку «Входящие». Это жутко раздражало, так что я написала о проблеме в техподдержку, и её решили. Это заняло три недели! После выхода фикса уведомления вернулись, но зато пропал счётчик на иконке. С растущей волной недовольства я сообщила и об этом баге. Короче говоря, я начала пользоваться новым приложением (старым тоже пользуюсь, но уже не на постоянной основе).

    Мобильное ПО постоянно меняется, и нам нельзя отставать. Вот почему, когда выходит новая бета-версия iOS, мы должны её тестировать. Почти сразу.

    Начиная с какой бета-версии стоит проводить тестирование?

    В этом году мы начали с Beta 6. «Почему не с первой?» — Спросите вы. Дело в том, что бета-версии на самом старте очень «сырые», а активно тестировать нестабильную версию довольно бессмысленно. Вам может встретиться множество различных ошибок, которые уже в скором времени исправит Apple. Мы видели это своими глазами: между версиями 5 и 9 было решено множество проблем.

    Пример. На экране с превью видеозаписей у нас случались краши. Такая проблема существовала в Beta 5 и исчезла усилиями Apple в Beta 6.

    Как выглядит процесс тестирования беты


    Шаг 0. Установите на своём устройстве бета-версию ОС.

    Ознакомьтесь со списком устройств, поддерживающих iOS 12. Самый старый и наименее производительный iPhone — 5s, самый новый и наиболее производительный — XS Max. Так что, если вы ещё этого не сделали, обновите свою коллекцию гаджетов. Кроме того, советую вам регулярно проверять рейтинг наиболее часто используемых устройств для вашего приложения.
    После того как устройство выбрано, можете устанавливать бету. Вот доступная инструкция.

    Шаг 1. Начните с новых функций ОС.

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



    Шаг 2. Мануальная регрессия.

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

    Советы

    • Сверяйтесь с последней релизной версией.
    • Ведите учёт всех встречающихся вам багов и надейтесь, что их исправит всемогущая техподдержка Apple. Разумеется, когда выйдет новая бета, вам надо будет их все перепроверить.
    • Будет полезно вновь просмотреть список проблем, возникавших при предыдущем переходе (с iOS 10 к iOS 11), и удостовериться, что всё работает как надо. В рамках этого пункта я советую обратить особенное внимание на осуществление оплаты (через Sandbox и других провайдеров, а также единичные покупки и подписки), разрешения на доступ (к камере, местоположению и т. д.), работу камеры (фото- и видеосъёмка, загрузка из галереи, предпросмотр), определение местоположения (онлайн и офлайн), переписку (все виды сообщений и офлайн-синхронизация) и работу сети (переключение между Wi-Fi и мобильным Интернетом).
    • Прежде чем выпустить новую версию iOS, Apple обычно выпускает новую версию Xcode. Логично предположить, что поддержка iOS 12 последней версией вашего приложения означает, что она была скомпилирована при помощи последнего Xcode. Тем не менее, работая в приложениях, скомпилированных в разных версиях Xcode, вы можете столкнуться с самыми разными багами. Поэтому всё тщательно проверяйте.

    Шаг 3. Нефункциональное тестирование.

    Обычно для нефункционального тестирования мы задействуем инструменты Xcode. Тем не менее, если у вас установлена бета-версия iOS 12, для отслеживания расхода энергии (Energy Log) и мониторинга состояния системы (Activity Monitor) вам придётся использовать бета-версию Instruments. Скачав Xcode отсюда, вы можете использовать Instruments в обычном режиме.

    Процессор:


    iOS 12 Beta


    iOS 11

    Память:


    iOS 12 Beta


    iOS 11

    Батарея:


    iOS 12 Beta


    iOS 11

    Как показало наше исследование, значительных изменений в работе процессора, памяти и батареи с переходом на iOS 12 Beta в приложении Badoo не произошло.

    Шаг 4. Удостоверьтесь, что ваши автотесты проходят на новой бете.
    В частности, установите бета-версию Xcode на агенты и обновите Facebook WebDriverAgent. Подробнее об этом пункте читайте в следующей статье.

    Шаг 5. Включите проверку на iOS 12 Beta в ваш процесс тестирования.
    Советую включать проверку на iOS 12 Beta сразу, как только бета-версия станет стабильной. Мы включали такие проверки в тестирование фича-бранчей, их интеграции, а также в релизное тестирование.

    Какие баги мы нашли в Badoo и других приложениях


    Вот лишь самые достойные представители:

    1. Краш при запуске приложения — классика жанра. Так крашился, например, мессенджер, который я использую для общения с родителями. Эту проблему исправили сами разработчики приложения, поэтому после обновления воспроизвести баг не удалось.
    2. Прочие краши. Работая над статьёй, я столкнулась с такой проблемой: приложение для сбора рецензий крашилось при попытке ответить на комментарий, когда выскакивало сообщение о низком заряде батареи. В этом случае обновление приложения не помогло.
    3. Приложение Badoo крашилось при попытке открыть собственный профиль в приложении, собранном с SDK 12.0. Это было вызвано ошибкой при использовании enum Objective-C, инициализированного некорректным значением rawValue. Вылет происходил, когда во время исполнения программы не находилось соответствующего значения в операторе switch. Данный баг (см. гифку ниже) исправили наши разработчики (нам ещё нужны, кстати).


    4. Зависания при подключении к сторонним приложениям (например, при загрузке фотографий или при верификации аккаунтов в соцсетях). Эту проблему мы тоже решили своими силами.
    5. Сообщение «Галерея пуста» при попытке загрузить фото. Этот баг коснулся приложения, которое я использую для отправки фотографий друзьям и другим людям из списка контактов. Я жду, что его разработчики исправят эту проблему, а пока пользуюсь стандартным диалогом «Поделиться», что кажется мне очень неудобным.
    6. Неправильный порядок уведомлений. Эта проблема наблюдается в приложении, в котором я читаю блоги. Всё ещё жду фикса.
    7. Дублирование диалога о запросе доступа в симуляторе. Этот баг был в нашем приложении, и наша команда автоматизации была очень недовольна. Исправив его, мы вновь можем полагаться на результаты тестов.
    8. Баги с анимацией и клавиатурой. Приложение-навигатор, которым я пользуюсь, начинало мигать, как сумасшедшее, оставшись без доступа к Интернету. Кроме того, в одном банковском приложении ломалась вёрстка страницы при открытии сообщения от техподдержки через push-уведомление. Жду от разработчиков фикса обеих проблем.

    Отмечу, что мы тестировали Badoo на приложениях, скомпилированных при помощи:

    • старой версии Xcode 9 на последней iOS Beta (6—12) и GM (iOS 12);
    • свежей бета-версии Xcode 10 на последней iOS Beta (6—12) и GM (iOS 12);
    • свежей бета-версии Xcode 10 на старых версиях iOS (11).


    Другие приложения тестировались из любопытства с приложением, скомпилированным при помощи старой версии Xcode 9 на последней iOS 12 Beta (6—12).

    Удивительные выводы


    Тестирование бета-версий невероятно полезно — оно помогает оградить пользователей от очень неприятных багов. Некоторые баги встречались в самой iOS и уже исправлены Apple, но большая их часть исправлялась нашими доблестными разработчиками. И теперь, после ретеста фиксов, мы можем быть уверены в том, что пользователи iOS 12 смогут насладиться приложением Badoo в полной мере.

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

    В общем, ребята, тестируйте беты — это полезно как с позиции вашего личного роста, так и для ваших пользователей.
    Badoo
    351,00
    Big Dating
    Поделиться публикацией

    Комментарии 29

      0
      На iOS пользователи, как мне кажется, просто обновляются быстрее, потому что их к этому вынуждают. В частности, довольно старый андроид 4.3 ещё очень популярен до сих пор. Это потому что он хорошо работает и благодаря app-compat'у не доставляет огромных проблем при разработки основных приложений.
      Что мы видим у Apple? Вы должны чуть-ли не через неделю выкладывать версию приложения в AppStore, собирая под новейшую ОС. Пользователи со старой ОС — по боку.
        +8
        Звучит как Стокгольмский Синдром.
          +11
          Это потому что он хорошо работает

          Главная причина заключается в отсутствии обновлений.
            –1

            А на старые iOS устройства тоже прилетают обновления?

              +4

              На iPhone 5S, который вышел в 2013 году, доступна iOS 12, вышедшая в прошлом месяце

                –4

                Не знаю, у меня на работе 5s говорит, что нифига и нету, хотя для xcode апдейт уже прилете

                  0
                  На ipsw.me можно найти ссылки для скачивания полных прошивок. А еще можно просто подключить к iTunes на компьютере — он наверняка предложит обновиться
                  0
                  У меня ipad3, там последняя 9.3.5. Многие приложения из стора тупо не ставятся, тк требуют 11+. Помню, что Tumblr, читалки манги, некоторые банк-клиенты крупных банков не поставились.

                  Кстати, работать он начал очень медленно в последние три года — иногда замедляется настолько, что при наборе буквы появляются с большим опозданием, иногда в пару секунд на букву. Т.е. пробежал пальцами по клавиатуре, набрал предложение, сидим смотрим как оно само печатает. Как печатная машинка, ей-богу.
              +3
              Добрый вечер! Спасибо за ваш комментарий.
              Да, действительно, Apple вынуждает пользователей быстро обновляться и нам необходимо поддерживать официальные релизы новой ОС как можно скорее.
              Но это совсем не означает что мы перестаем поддерживать старые версии ОС. Так, например, в течении следующего года все новые релизы Badoo будут актуальны и для пользователей с iOS 11. Что касается пользователей с iOS 10 и ниже, они все еще смогут скачать приложение с AppStore и активно им пользоваться. Но им будут не доступны новые фичи.
                +3
                старый андроид 4.3 ещё очень популярен

                популярен, потому что обновления не приходят
                  –1

                  У меня был планшет nexus 10, там была доступна 5.1, но я откатился на 4.4 потому что она лучше работала. Продал на днях, до сих пор не было ни одного приложения, которое бы не работало на 4.4. Обновления безопасности приходят отдельно от ос, не вижу смысла обновлять ОС на старых устройствах, они только больше тормозят. Девайс 2012 года.
                  В то же время вышел iPhone 5, который был у меня недавно — абсолютно бесполезный кусок металла, на котором вылетал телеграм, при попытке открытия некоторых чатов.
                  Еще смешнее с макбуками: там без обновления ОС не поставишь вообще никаких новых версий программ, а если обновить, то двухлетний макбук нас не. работать как asus eeepc

                    +2
                    Еще смешнее с макбуками: там без обновления ОС не поставишь вообще никаких новых версий программ, а если обновить, то двухлетний макбук нас не. работать как asus eeepc


                    Это откровенное вранье. Если понятия не имеете о чем пишете, то лучше уж не пишите.
                      0
                      Собственно приложения работают на 4.4 как раз из-за довольно большого количества пользователей с устройствами на этой версии ОС. А проблема как раз в том, что производители не спешат выпускать новые версии ОС на старые устройства. Искренне надеюсь что Project Treble посодействует решению этой проблемы.
                        0
                        Вызывающе неверная информация. 4.4 занимает меньше 10% рынка: developer.android.com/about/dashboards
                          0
                          Вы правда готовы отказаться от >7% пользователей? А учитывая тот факт, что лично мне поддержку часто приходится организовывать не для 19 sdk, а для 16 sdk, то мы уже говорим об 11% на момент написания комментария.
                    +1
                    Поддерживать ли старые версии iOS, решает разработчик. У нас было правило — 2 мажорных версии системы на момент планируемого релиза приложения. Т.е. если последней версией на момент запуска была iOS 10, то писали с поддержкой 9 и 10. При выходе 11й версии, 9я не превращается в тыкву автоматически, а постепенно отмирает на протяжении некоторого времени (в соответствии с динамикой количества активных пользователей с этой версией).
                      0

                      Видимо для релизов оно несколько помягче, потому как с выходом 11 версии, нам отказали в публикации с версией 10 в TestFlight'

                        +1
                        Есть требование, что новые билды должны быть собраны новым SDK. Если ОС выходит в сентябре, требование это вступает в силу обычно в феврале-марте. Поддержку старых ОС при этом никто выкидывать не просит — есть время и желание, пожалуйста. Но вот оптимизации, включенные в новый SDK будьте добры использовать
                    0
                    У меня после обновления на 12 iOS мой SE стал разряжаться в 2 раза быстрее. У всех так?
                      +1
                      Попробуйте отключить ScreenTime
                        0
                        Не заметил такого изменения.
                        0
                        При чем разница 30%
                          +1
                          image
                            +1
                            Юзаю уже больше недели 12 версию, пока каких то явных косяков нет, видео с сайтов таких как ru.hdfilmwolrd.com проигрывается нормально.

                              0
                              Если честно не совсем понял главный посыл статьи (с точки зрения разработчика).
                              Apple выпустили «бету», нам нужно потестить, что приложение не сломалось – звучит логично. Предположим, мы нашли какой-то баг и к тому же выяснили, что это не дефект приложения и не какой-то misuse обновившихся API. Что с этим нужно делать? «Костылить» заплатки для операционной системы изнутри приложения? Звучит уже не очень. Но если я понял верно, то что будет, когда (и если) Apple исправят этот дефект? «Раскостыливать» заплатку обратно и проверять все заново? И при этом нужно понимать, что «закостыленные» и «раскостыленные» версии приложения будут установлены у обоих групп пользователей – с дефектными версиями ОС и с исправленными (или даже до-дефектными).
                                0
                                Добрый день, спасибо за ваш комментарий.
                                Главный посыл в том, чтобы быть в курсе проблем в бета-версии и отслеживать их статус ближе к GM. Не нужно чинить все сразу.
                                В описанном вами случае оцените критичность бага — и если он не критичен — ждите GM.
                                Если критичен — скорее всего бизнес поддержит идею «костылить». В таком случае, если Apple починит проблему до GM версии, прийдется «раскостылить». Но объем проверок будет минимальный, так как бета установлена у малого количества пользователей. Если же Apple починит проблему после GM, прийдется не просто «раскостылить», но и проверить на версиях с проблемой, без проблемы и, собственно, обновление.
                                  +1
                                  Понял вашу мысль! Спасибо за ответ!

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

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