company_banner

Что общего у мобильного QA и осьминога



    Привет! Я Катя, и я – трудоголик тестировщик самого популярного приложения для новых знакомств.

    Итак, раннее утро, вы – мобильный QA. Вы приходите на работу, завариваете крепкий кофе и хотите взять пару мобильных устройств для тестирования новой фичи, осознавая, какие муки выбора вам предстоят. Что это будут за устройства?

    Рано или поздно каждый мобильный тестировщик задаётся вопросом, на каком количестве устройств тестировать новый функционал, чтобы поймать максимальное количество девайсозависимых багов, потратив минимум времени. Автотесты ещё не написаны, перед вами абсолютно новые фичи. И если с iOS есть хоть какая-то ясность, и список устройств ограничен, то Android «расплодился» в полнейший ад. Вы удивитесь, но для счастья нужно всего три–четыре Android-устройства. Я хочу рассказать, как с точки зрения опытного тестировщика их выбрать.


    Зачем тестировать на разных девайсах и насколько опасна фрагментация


    Если ваше приложение только начинает путь к вершинам маркета приложений, то, казалось бы, для тестирования должно быть достаточно одного эталонного устройства от Google. Однако, если тысячи человек пользуются вашим приложением каждый день, то вам придётся задуматься о расширении «зоопарка» девайсов и лоб в лоб столкнуться с особенностями и проблемами, связанными с многообразием SamAndroid-устройств.

    Пусть ваше приложение отлично работает под эмулятором, или на вашем нереально синем Pixel, однако в статистике популярных Android-устройств нет таких, которые занимают более 10% рынка, в отличие, например, от iOS-девайсов. Так что такое точечное тестирование не гарантирует отсутствия проблем у большинства пользователей. У разных устройств различные «улучшения» от производителей, разные версии ОС и железные характеристики – всё это может стать причиной девайсозависимых багов.

    Чем популярнее ваше приложение, тем больше устройств вам нужно для полной проверки. И чем больше функционала в вашем приложении, тем вероятнее, что вы столкнётесь с проблемами. И выход в этой ситуации один – копить девайсы.


    А вы пробовали играть в дженгу из смартфонов?

    В нашей компании большой парк мобильных устройств (на данный момент у нас около 60 различных Android смартфонов и планшетов) и стенд-автоматизаторов, где на реальных девайсах бегают автотесты.


    Тестировщик спит, автотесты работают!

    Какие баги мы ищем?


    Баги, которые вы можете встретить на каких-то девайсах, но не получить на других, можно условно разделить на три категории:

    • связанные с производителем устройства – например, нестандартный API камеры или кастомная системная библиотека;
    • связанные с версией ОС Android – например, несовместимые API и проблемы производительности (флагманы всего-то пятилетней давности и не мечтали о 512 Мб памяти);
    • связанные с размером/ разрешением экрана, чипсетом и прочими различиями в железе.

    Чаще всего эти проблемы не взаимосвязаны, так что использовать pairwise testing не приходится.
    Знаете всё о таких багах? Тогда сразу переходите к разделу про выбор устройств.

    Баги производителей


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

    image Ввиду такой реализации UI начинает искажаться (как на скрине), а значит, девелоперам придётся либо учитывать это, либо использовать собственный шрифт и не давать возможность использовать сторонние. Раньше эта проблема встречалась только на дешёвых китайских устройствах, но сейчас она добралась и до корейских флагманов (не хочется приводить конкретные примеры и делать производителям антирекламу). Стоит ли принимать во внимание такие девайсы, подскажет статистика по вашему приложению.
    Фантастическая К и где искать её работу и образование

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


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

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

    Баги Android’a


    Девелоперы любят использовать всё новое и интересное, но не всегда любят гуглить таблицы совместимости разных API и версий ОС. Девелоперы крепко спят, но нам, тестировщикам покоя нет – с несовместимостью версий связано большое количество потенциальных багов.

    Тут нам достаточно вооружиться девайсами с наиболее популярными версиями ОС. Их, как правило, не очень много. С выбором вам поможет мой любимый сайт Android Developers.

    Стоит учесть и вашу собственную статистику по устройствам, потому что ваше приложение может накладывать свой отпечаток на пользовательскую базу.

    image Поиск багов для самой свежей версии ОС, безусловно, очень важен: примерно через год эта версия станет самой популярной. Всё-таки ваше приложение не должно падать на родных девайсах от Google. С другой стороны, пока что девайсов с последней на текущий момент версией ОС Nougat мало, и обновления выкатываются редко. Поэтому можно либо доверить поиск таких багов автотестам, либо иногда проводить ручной прогон регресс-тестов на таких устройствах. Главное – не упустить какую-нибудь потенциальную опасность, как, например, агрессивный Doze Mode и его последствия, особенно если ваше приложение отслеживает подключение к Интернету. Не только девелоперы, но и тестировщики должны следить за изменениями, произошедшими в свежих версиях Android.
    Не все Андроиды любят овалы!

    Другая группа проблем возникает на слабых девайсах. Операционная система Android не накладывает ограничений на используемое железо, чем не преминули воспользоваться многие производители, чтобы сэкономить на всём. Практически любое приложение упадёт при нехватке памяти на слабом мобильном устройстве. Полностью защититься от этого невозможно, но стоит это учитывать, особенно если вы используете какие-нибудь «прожорливые» функции вроде видеозвонков или записи видео.
    Для тестировании вам обязательно нужен слабенький девайс – необходимо следить за тем, чтобы приложение на нём адекватно функционировало. Интересными кейсами будут тесты работы при малом количестве оперативной памяти или недостатке внутренней памяти.

    Кривые разрешения и режимы



    Похожи или разные?

    Строго говоря, эти проблемы не всегда относятся к девайсозависимым, чаще это просто недоработки, связанные с интерфейсом вашего приложения. Однако популярность тех или иных разрешений и размеров экрана тесно связана с популярностью устройств, и эти показатели постоянно меняются. Также производители могут добавить что-нибудь интересное, например, возможность выбора Pixel Density, как на OnePlus 3 (а в Nougat так вообще по умолчанию прямо из настроек).

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

    Итоги: выбираем девайсы




    Как правило, тестировщик начинает работу с утреннего кофе позитивных тестов, так что для начала вам нужен идеальный девайс для позитивного тестирования. Наиболее подходящими устройствами для этого являются самые популярные устройства пользователей вашего приложения. Статистику по устройствам можно найти в Google Play Store Developer Console или Google Analytics. Другими полезными ссылками поделюсь в конце поста.

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

    Выбирать будем так:

    • Выясняете, какие девайсы самые популярные для вашего приложения на текущий момент
    • Проверяете актуальную информацию по версиям Android и разрешениям экрана (или воспользуйтесь собственной статистикой из Google Play Developer Console).
    • Выбираете наиболее популярный девайс для проведения позитивных тестов.
    • Из остальных популярных девайсов выбираете слабое устройство с самым маленьким разрешением экрана.
    • Проверяете, все ли популярные версии Android, разрешения и размеры экрана охвачены выбранными устройствами.

    Плюс: выбираете самый популярный планшет (как дополнительный девайс).
    Как правило, всего три устройства покрывают бо́льшую часть всевозможных различий.

    Это наш выбор!


    Сейчас на Badoo более 333 миллионов зарегистрированных пользователей по всему миру, а количество установок на платформе Android превысило 100 миллионов. Давайте прогоним этот алгоритм на данных, актуальных для Badoo, пока остывает кофе.

    Самые популярные устройства (по данным собственной статистики; не буду указывать точные проценты, так как это значение очень быстро меняется, популярность тут не более 5% по каждому из устройств):

    • Samsung Galaxy S4;
    • Samsung  Galaxy S5;
    • Samsung Galaxy S6;
    • Samsung Galaxy S7.

    Самые популярные версии Android (эти данные от Google очень близки к нашей собственной статистике):

    • Android 6.0 – 26,3%;
    • Android 4.4 – 24%;
    • Android 5.1 – 23,2%;
    • Android 5.0 – 10,8%.



    Самые распространенные размеры и разрешения экрана девайсов (эти данные от Google также очень близки к нашей собственной статистике):

    • Normal с HDPI – 38,0%;
    • Normal с XHDPI – 31,4%;
    • Normal с XXHDPI –15,8%;
    • разрешение MDPI также популярно (9,4%), но среди девайсов с различными размерами экрана.


    Расшифровка этой таблицы.

    Популярные производители мобильных устройств (статистика по популярным производителям зависит от стран, в которых сейчас популярно ваше приложение. Для нас это):

    • Samsung;
    • Motorola;
    • Huawei;
    • LG.

    Если проанализировать все эти данные, то, на текущий момент, идеальным устройством для позитивных тестов для нас является Samsung Galaxy S6 с Android 6.0 и XXHDPI large/normal screen.

    Поскольку Samsung Galaxy S3 c Android 4.4 и XHDPI normal screen (UPD: SGS3, который S3 Neo) является популярным устройством с самым маленьким экраном (UPD: по сравнению с SGS4 и SGS6) и, при этом достаточно слабым (это довольно старое устройство 2014 года выпуска), то он отлично подходит для негативного тестирования.

    Плюс берём Samsung Galaxy S4 c Android 5.0 и XHDPI normal screen, он идеально дополнит набор популярной версией Android 5.0 и средним размером экрана.

    На основе этих трёх девайсов мы получим следующее покрытие Android-фрагментации:

    – версии Android: 26,3+24+10,8=61,1%, но нужно прибавить сюда 23,2 и получить целых 84,3% (т.к. баги, которые встречаются только на версии 5.0, но не встречаются на 5.1 – большая редкость);
    – размеры экрана: 6,7+ 88,3=95%;
    – разрешения экрана: 32,4+15,8=48,2%, но нужно прибавить сюда 38,8 и получить целых 87% (UPD: т.к. мы мы используем разные модели SGS3 для тестирования, SGS3, SGS3 Neo и SGS3 mini).

    То есть при помощи всего трёх-четырех устройств мы получаем покрытие более 80% по всем интересующим нас различиям между Android-девайсами. Если у вас не получается покрыть около 80% по какому-либо показателю, значит, нужно добавить ещё одно устройство. Но как правило, трёх вполне достаточно.

    Хорошими дополнениями могут стать:
    – планшет;
    – устройство с чистым Android;
    – девайс, который увеличит покрытие по популярным производителям устройств.

    Я обычно добавляю Asus Nexus 7 (2013) как планшет с чистым Android. Также подходит Huawei MediaPad M2.

    image То есть четыре устройства – это идеальный комплект Android-тестировщика, а значит, осьминог будет идеальным тестировщиком (по два щупальца на девайс)!

    Берём Asus Nexus 7, Samsung Galaxy S3, S4 и S6 и идём пить кофе!
    Как оказалось, всё не так страшно, а кофе ещё даже не остыл.

    Ссылки по теме



    P.S. Стикеры из поста.

    Екатерина Михеева, Android QA
    Badoo 254,61
    Big Dating
    Поделиться публикацией
    Комментарии 29
    • +2
      Спасибо, познавательно.

      Давно хотел спросить: когда на Play Market мне говорят, что «Данное приложение не поддерживается на вашем устройстве» — это окончательный диагноз? И кого в этом винить — строгую политику Гугла или все же разработчиков?

      С iOS все давно понятно — их политика такова: немолодые девайсы должны быть на свалке истории. Что с блеском подтверждает мой iPod Touch 3gen. А вот как с Андроидом? Я допускаю, что осью 2.3.1 сейчас мало кто пользуется. Но что мешает при разработке поставить галочку, чтобы приложение было совместимо с старыми девайсами (если это не 3D игра, а простой файл-менеджер). Или проблема тут глубже, чем просто галочка?

      Заранее спасибо за ответ
      • +6
        Да, «Данное приложение не поддерживается на вашем устройстве» — это окончательный диагноз и Гугл тут не при чем. Разработчики приложения сами решают какие версии ОС Android будут поддерживать. К сожалению, поддерживать все версии — очень трудоемкая задача, а не просто «галочка», потому что, как я и писала, с каждой новой версией ОС Android претерпевает значительные изменения, поддерживать все старые API может быть очень сложной задачей, а также будет влиять на размер самого приложения и скорость добавления новых фич в него, в худшую сторону соответственно. В вопросах поддержки тех или иных версий разработчики руководствуются статистикой по количеству пользователей на той или иной версии ОС, например, на версии Android 2.3.1 сейчас менее 1,2% пользователей, а по данным нашей собственной статистики было и того меньше на тот момент, когда мы тоже решили перестать ее поддерживать.
        • +1
          Справедливо будет добавить, что если ограничение не в версии ОС (или другом техническом факторе), то можно попробовать скачать и установить apk принудительно. Разработчики могут ставить «политические» ограничения (те самые галочки), например «только устройства определённого бренда» для фирменных приложений.
          • 0
            Соглашусь, единственное, лучше не ожидать стабильной работы от установленного принудительно приложения, так как оно не было протестировано на этой старой ОС. Потому что может возникнуть желание пустить тестировщиков на мыло, а они не при чем :)
            • 0
              можно попробовать скачать и установить apk принудительно

              Это первое, что пришло в голову. Не помогло. «Ошибка анализа пакета».
              Я потому такой настойчивый, что данное приложение на данном железе работало. А после выхода новой версии приложения — перестало. Видать, убрали совместимость…
              • 0
                Да, очень похоже, что в новой версии приложения перестали поддерживать какие-то старые API, а не просто так заблокировали возможность установки на старых версиях ОС.
            • 0
              Грустно конечно все это.
              Являюсь обладателем автомобиля не особо старого, в котором установил пару-тройку лет назад вместо штатной мультимедиа-системы — систему под управлением Андроид. В которой, как казалось на тот момент, «можно почти все». Китайщина конечно, хоть и под местным брендом Prology.
              Сделал так потому что не люблю висящие на панели/стекле присоски с телефонами, «сопли» из проводов зарядок и проч.
              С магнитолой шел лицензионный Навител, и еще можно было установить те же Яндекс.карты или Яндекс.Навигатор
              Примерно через год на магнитолу стало нельзя установить Яндекс.Навигатор свежий, и Яндекс.Карты. Андроид слишком «старый». Еще через год — перестал корректно запускаться Навител. Новая версия сама обновляется из маркета, после чего вываливается с ошибкой (новых версий уже вышло несколько, и все вываливаюся, разработчик багрепорты принимает и далее молчит)
              Вроде все ничего, но со старыми версиями программ не работают новые версии карт. То есть еще чуть — и навигатор начнет мне показывать маршруты по несуществующим улицам.
              Я конечно понимаю разработчиков, которым нужно делать новые релизы программ, и делать свистоп… делки удобнее под новые версии Андроидов, но менять каждый год магнитолу в машине или даже весь автомобиль — ну это уж черезчур. Да, когда я был помоложе — я и автомобили менял по паре раз в год. Теперь мне это не интересно, и хочется чтобы просто вещь работала, пока технический износ не наступил.
              А то получается что-то вроде
              Внимание! В доступе отказано. С сегодняшнего дня Вы не можете проживать в вашей квартире (взятой в ипотеку на 30 лет), потому что версия прошивки Вашего напольного покрытия устарела и больше не поддерживается. По статистике такой версией покрытия пользуется не более 1.2% пользователей квартир во всем мире. Вам необходимо сменить квартиру.


              И да. В новой версии Яндекс.Навигатора появились действительно «необходимые» для навигатора функции, такие как: рекламный банер при запуске, постоянные предложения установить «яндекс.браузер» (боже, я вероятно заблудился и ищу маршрут, а мне яндекс браузер в магнитолу подсовывают!), ну и еще я могу оплатить штраф (видимо прямо с магнитолы)
            • +1
              Иногда и самые новые устройства «не поддерживаются». Мне с моим планшетом от Samsung не дали скачать официальное приложение от Samsung для планшетов Samsung по причине того, что оно только для Samsung. Пришлось выдрать .apk, в который раз отметив про себя, что верить нельзя никому.
              • +3
                Мне кажется, что у всех мобильных девелоперов и тестировщиков нежная любовь к Samsung ;)
              • 0
                Кроме этого, в консоли разработчика можно выключать конкретные устройства. Например, из-за особенностей китайских прошивок я на какое-то время запретил все Huawei и ZTE, что нашел. И еще обратите внимание, что одно и тоже устройство может по разному отображаться в консоли Google Play и Google Analytics.
              • +1
                Разработка софта под андройд (я не андройд девелопер, но судя по статье), как разработка сайтов лет так 10 назад с зоопарком браузеров, которые рендерели страницы как хотели :)
                • +2
                  Почти :), только вот голова болит сильнее, устройств сильно больше чем браузеров)
                • 0
                  Можете подробнее рассказать про стенд-автоматизатор, что вы используете для тестов и как он работает?
                  • +3
                    О нем можно многое рассказать! Мой коллега написал интересный пост на эту тему:
                    https://habrahabr.ru/company/badoo/blog/309104/
                    Если хочется узнать что-то подробнее, то можно задать вопросы в этом посте или тут.
                  • 0
                    Интересная у вас статистика «Самые популярные» по Android: только Samsung и только флагманы. Вы точно не по Корее статистику считали? :)
                    • +1

                      Мы даем статистику общемировую и во всем мире SAMSUNG лидирует.
                      Если ваше приложение создано для определенного региона то надо смотреть на статистику этого самого региона например тут
                      А вот и наша статистика по РФ за последнюю неделю, например:
                      image

                    • 0
                      Ох, ожидал почитать про автоматизацию тестирования, ну там чтобы скрипт (или механическая рука))) тыкала в кнопочки, и соответственно все бы заворачивалось на кукумбер-подобный API.
                      • 0
                        Поддержу, автоматизация тестирования на андроид сильно интересна. Что-нибудь вроде Chaos monkey или Gremlins.js (тут недавно про них статья была)?
                        • 0
                          Мы используем обезьянку ui monkey exerciser на Android. Чуть подробнее можно поглядеть тут и тут
                      • 0
                        Поскольку Samsung Galaxy S3 c Android 4.4 и HDPI small screen является популярным устройством с самым маленьким экраном и, при этом достаточно слабым (это довольно старое устройство 2014 года выпуска), то он отлично подходит для негативного тестирования.

                        Вы серьезно?
                        SGS3 — флагман 2012-го года.
                        Официальный Android 4.4 на него никогда не выходил. Можно прошить кастом, но телефон с кастомной прошивкой никак не попадает в ряд популярных девайсов.
                        Наконец, 4,8" экран с HD разрешением — это xhdpi normal screen.
                        • +1
                          Прошу прощения за неточность, дело в том, что SGS3 это не одно устройство, а 3 брата, три похожих устройства, SGS3, SGS3 Neo+ и SGS3 mini. В нашей собственной статистике эти устройства до сих пор находятся рядом друг с другом в топе популярных. Потому я их условно обобщила в одно, SGS3 Neo+ как раз с 4.4 Android, а у mini small screen. Условно, потому что тестируем мы на всех них время от времени.
                          Большое спасибо за комментарий, поправлю информацию в статье!
                        • +1
                          Всем привет
                          Совсем недавно занимался поиском информации по топселлерам Андройд в россии ( активно скачивающие приложения пользователи)
                          У меня список получился таким по 3-му кварталу 2016

                          1. Xiaomi Redmi Note 3 (5-8%)
                          2. Samsung Galaxy S5 (3-6%)
                          3. Samsung Galaxy A5 (~2%)
                          4. Samsung Galaxy s3 neo (~2%)
                          5. Samsung Galaxy A5(2016 ) (~1/6%)
                          6. Asus ZenFone 2 (ZE551ML) (2-5%)
                          7. LG Nexus 5 hammerhead (0,9-2%)
                          8. ASUS ZenFone 2 Laser (ZE500KL) (~1.4%)
                          9. Samsung Galaxy A3 (1,4%)
                          10. Samsung Galaxy S6 Edge (1.4%)
                          11. Meizu m3 note (~1.4%)
                          12 Galaxy A3(2016) (~1.2%)
                          13. Xiaomi Redmi 3 (1.2-2.2%)
                          14. Xiaomi Redmi Note 2
                          15. Samsung Galaxy S7 Edge
                          16. Samsung Galaxy S6
                          17. Sony Xperia Z2
                          18. Sony Xperia Z1
                          19. Meizu m2 note
                          20. Lenovo A536
                          21. Samsung Galaxy Grand Prime
                          22. Lenovo Z90a40
                          23. Lenovo A2010-a
                          • 0
                            Очень интересная статистика! Спасибо! А какими сайтами вы пользовались для ее сбора?
                            Да, Xiaomi выбирается в топ, еще бы, Redmi Note 3 имеет отличные характеристики! Я тоже остановилась на Xiaomi Redmi Note 3, когда искала популярное в России и интересное Android устройство пару месяцев назад. Кстати, забыла указать в ссылках отличный русскоязычный сайт со свежей и актуальной информацией из мира Android.
                            • 0
                              Я основывался на доступной информации anTuTu (топ 10) и на скачиваниях разрабатываемых в компании приложениях.

                              • 0

                                Проблема anTuTu в том что они там показывают девайсы на которых чаще мерили попугаев де факто :)

                                • 0
                                  то есть это активные пользователи которые скачивают приложения
                                  я сначала не очень доверял их рейтингу, но по факту, он на 80 процентов совпал с статистикой приложений у нас =)
                          • 0
                            Вы упомянули про Doze Mode. Что на счет подобных программ от производителей, таких как Stamina от Sony. Вы уделяете особое внимание таким нюансам? Существует какой-то список условий, при котором вы не можете ограничить пользователя в установке приложения, но не гарантируете стабильную работы и безопасность использование вашего приложения, например, на рутованом устройстве?
                            • 0

                              Таких условий нет. Все решается на connectivity layer. В общем случае всегда есть API, который сам расскажет в каком состоянии ваше приложение и что ему в данный момент можно.

                              • 0
                                С появлением doze, «настоящую» stamina убрали же? По-моему не дублировать функционал ОС вполне здравое требование.

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

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