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

ebpzw1pldcclaoqdqpgxduz9vmo.png

Всем привет!

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

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

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

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


cixbibkgfhcrdcmwrugwfotbtze.png

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

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

4sfydiavdkygloyonwj2-azvuqe.png

Как видно из графика, в августе прошлого года бета-версия 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. Начните с новых функций ОС.

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

cxu2g4_zqglm5fa0m48pjhnwln8.png

Шаг 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 в обычном режиме.

Процессор:

hwkry2npmpjhdfjgwoigp7ntjt0.png
iOS 12 Beta

0aimzvhn7jseuwvkfs-qnoyrspe.png
iOS 11

Память:

mk-ifzkzf4yhrwf7q_nv03wk_og.png
iOS 12 Beta

mzk11o2uatuchul_0xwuitlhecs.png
iOS 11

Батарея:

mk-ifzkzf4yhrwf7q_nv03wk_og.png
iOS 12 Beta

mzk11o2uatuchul_0xwuitlhecs.png
iOS 11

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

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

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

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


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

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

  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 баги, хотя официальный релиз состоялся в сентябре. Было бы здорово разработчикам поторопиться с фиксами, так как после активной фазы обновления в этом месяце большинство пользователей окажется под ударом.

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

© Habrahabr.ru