Файл: Этапы разработки, тестирования и ввода в эксплуатацию мобильных приложений (Ресурсы устройства:).pdf
Добавлен: 29.03.2023
Просмотров: 611
Скачиваний: 3
Цель тестирования — убедиться, что взаимодействие приложения с аппаратной и программной платформой смартфонов и планшетов будет именно таким, как предполагалось на этапе прототипирования.
Существует немалое количество способов протестировать приложение.
В мобильной разработке тестировщик – это человек, вокруг которого одни телефоны.
Чтобы понять особенности тестирования мобильных приложений следует принимать во внимание моменты, принципиально отличающие мобильные приложения от десктопных: специфичность ОС для мобильных платформ, различные компании-изготовители устройств и конфигурации комплектующих, функциональность устройств как коммуникаторов и т.п.
Тестировать приложение не должны его же разработчики.
Тип тестирования выбирают исходя из проверяемой характеристики приложения:
- Функционал – должен соответствовать заявленному. Хорошо, если у подрядчика есть QA-команда, а у неё – план тестирования со списком всех функций приложения и его желаемым поведением. Но если таковой нет – необходимо позаботиться об этом и нанять специально обученных специалистов. Юзабилити – интерфейс мобильного приложения должен быть интуитивно понятным и дружелюбным. О проблемах с этими качествами вам лучше всего расскажут те, кто видят продукт впервые.
- Производительность – никто не будет пользоваться приложением, которое грузит рабочий экран больше 10 секунд. И хотя производительность обычно тестируют на более поздних стадиях разработки, следить за временем отклика надо уже сейчас.
- Дизайн – тут дизайнерам придётся ещё раз включиться в работу и удостовериться в том, что каждая деталь визуального стиля была реализована разработчиками в соответствии со стайлгайдом. Кстати, это ещё одна веская причина работать с компаниями, которые занимаются и разработкой, и дизайном.
Но и это ещё не всё:
- Регрессионное тестирование – используется для проверки уже протестированного кода на ошибки, исправленные ранее, или возникшие в результате этих исправлений. Здесь на помощь вновь приходит QA-команда с чек-листами изменений, внесённых в код на каждом из спринтов.
- Тестирование под платформу – существует бесчисленное количество комбинаций мобильных устройств и установленных на них операционных систем. Посмотрите, как приложение работает на смартфонах с разными размерами и разрешениями экранов, и запустите его на всевозможных версиях ОС [23] .
Приемочное пользовательское тестирование – проводится будущими пользователями приложения и показывает, готов ли продукт к выходу на рынок. Собирайте отзывы и готовьтесь к старту, только если только ваше приложение с блеском прошло все предыдущие проверки.
В связи с этими особенностями, подход к разработке приложений и, в частности, тестированию на мобильных устройствах довольно сильно отличается от десктопного. Возникает множество дополнительных важных нюансов и требований, которые необходимо протестировать. Немного осветим основные отличия в некоторых видах тестирования:
Тестирование обновлений – частые обновления операционной системы (относительно десктопов) приводят к необходимости обновлять приложение. Обновление должно проходить просто и не требовать от пользователя специфических знаний. Следует так же проверять различные возможные пути установки приложения (Wi-Fi, 3G, установка с ПК, на SD) [15].
Тестирование интернационализации позволяет на раннем этапе процесса разработки мобильного приложения убедиться в поддержке культурных особенностей других стран (главным образом, в языковой поддержке). Интернационализация в мобильных приложениях крайне распространена, так как является относительно простым способом серьёзного увеличения целевой аудитории. В процессе могут возникнуть многие специфичные для мобильных платформ проблемы, такие как недостаток свободного пространства на экране.
Тестирование удобства пользования (usability). Этот вид тестирования является одним из важных, так как в условиях высокой конкуренции юзабилити приложения входит в список основных параметров, влияющих на популярность продукта. Позволяет выявить части приложения, которые недостаточно привлекательны или вызывают затруднения в навигации или использовании на сенсорных экранах. Следует так же убедиться, что модель потребления ресурсов приложением соответствует целевой аудитории. Например, приложения-напоминания не должны вызывать чрезмерное потребление энергии. Зачастую это тестирование проводится в виде бета-тестирования [23] .
Нагрузочное тестирование подразумевает наблюдение за использованием памяти и системных ресурсов; кроме того, нагрузочное тестирование позволяет выявить “узкие” места в приложении, связанные с производительностью, а также обнаружить опасные утечки памяти.
Случайное тестирование (fuzzy testing, “monkey” testing) – приложение должно корректно реагировать на возникновение случайных и непредсказуемых событий. Мобильные устройства чаще других попадают в условия, в которых получают хаотичную бесполезную информацию (например, незаблокированный девайс в кармане), потому приложение должно адекватно реагировать на подобные потоки данных.
Мультиплатформенное и мультидевайсовое тестирование – приложение должно правильно работать на всех конфигурациях всех устройств, для которых разрабатывалось. Из-за фрагментации мобильных телефонов задача тестирования всех доступных видов устройств, на которых используются различные сборки ОС, и которые имеют различные разрешения экранов, функционал и аппаратное обеспечение, настолько же важна, насколько трудновыполнима.
Лабораторное тестирование – имитация реальных условий качества связи и окружающей среды. Обычно неочевидно, как поведёт себя приложение, например, при нестабильном сигнале Wi-Fi или с нулевым балансом на счету в сети 3G. Данный вид тестирования позволяет проверить подобные случаи [23].
Аттестационное тестирование используется для подтверждения соответствия приложения стандартам, лицензионным соглашениям и условиям использования, например Android:
- Установочный файл приложения (.apk) должен быть согласован с Program Policies .
- В случае публикации обновлённой сборки желательно придерживаться порядка управления версиями (например, принятого порядка нумерации версий).
- Приложение не должно противоречить документу UIG .
Так же для отдельных магазинов приложений (Amazon App Store, Samsung Apps, Yandex.Store и подобных) могут существовать свои собственные требования и гайдлайны [26].
Аттестационное тестирование используется для подтверждения соответствия приложения стандартам, лицензионным соглашениям и условиям использования, например iPhone:
- Приложение должно иметь уникальное имя.
- Приложение должно принадлежать к определённой категории.
- Нужно предоставить ссылку для осуществления обратной связи с разработчиком.
- Приложение не должно противоречить документу Human Interface Guidelines.
- Приложение может быть отказано в сертификации по причинам наличия запрещённых материалов, непредвиденных задержек в работе или повторении существующих функций.
Аттестационное тестирование используется для подтверждения соответствия приложения стандартам, лицензионным соглашениям и условиям использования, например Windows 7-8 Приложение должно соответствовать всем категориям app certification requirements.
Перечень моментов, которые должны быть протестированы:
1. Размер экрана и touch-интерфейс:
- Все элементы должны быть такого размера, чтобы пользователь мог однозначно попасть по ним.
- Отсутствие пустых экранов в приложении – пользователь не должен оказываться в ситуации, в которой не очевидно, что сейчас происходит и что делать.
- Следует проверять многократное быстрое нажатие на кнопку – часто при этом может случиться падение приложения. Так же следует проверять мультитач – нажатие на несколько кнопок одновременно.
- Следует проверять наличие или отсутствие «нативных» жестов (pinch-to-zoom, doubletap) – если, например, поддерживается зум части приложения, то должен использоваться жест по умолчанию. А если нет необходимости выделять картинку, то по даблтапу она не должна выделяться.
2. Ресурсы устройства:
- Утечки памяти. Особенно может проявляться на окнах, с большим количеством информации (длинные списки как пример), во время задач с длительным workflow (когда пользователь долго не выходит из приложения), при некорректно работающем кэшировании изображений.
- Обработка ситуаций нехватки памяти для функционирования ОС, когда приложение активно или работает в фоне.
- Недостаток места для установки или работы приложения.
- Отсутствие в некоторых устройствах поддерживаемых приложением функций (3G, SD-карта и т. п.).
- Установка или перенос приложения на карту SD.
3 .Различные разрешения экрана и версии ОС:
- Ретина и обычные экраны. На ретина-экранах элементы интерфейса и текст отображаются мельче. Картинки для ретина-экрана могут попасть в неретина версию и тогда будут слишком большими.
- Адаптация приложения к портретной и альбомной ориентациям устройства.
- Версии ОС. Приложение не должно устанавливаться на неподдерживаемые устройства. Обязательна проверка на всех доступных из поддерживаемых девайсов.
- Поддержка необходимых медиа-файлов данной моделью и ОС, потому что отдельные разработчики могут урезать поддержку работы с некоторыми форматами.
- Соответствие, используемых в приложении view, их смысловому назначению и концепциям платформы. Проектные решения, которые имеют смысл для одной платформы, могут выглядеть и быть неуместными в контексте другой платформы.
4. Реакция приложения на внешние прерывания
- Входящие и исходящие SMS, MMS, звонки, оповещения других приложений.
- Выключение устройства, изъятие аккумулятора, разрядка устройства.
- Переход в режим ожидания (в том числе и с защитой паролем). Смена ориентации устройства в режиме ожидания.
- Отключение и подключение провода.
- Отключение и включение сети, Bluetooth, авиарежима, GPS.
- Потеря связи с сервером или прокси (подключение есть, но пакеты не доходят).
- Отключение и подключение SD-карты, дополнительных устройств вроде физической клавиатуры или гарнитуры.
- Зарядка устройства.
- Работа с акселерометром.
- Работа с физической клавиатурой (если в списке поддерживаемых моделей есть такие).
5. Платный контент внутри приложения:
- Соответствие цены и содержимого, заявленного в приложении, тому, что попадает к пользователю.
- Восстановление покупки (обновление приложения).
6. Интернационализация (проверять и в портретном, и в ландшафтном режиме!):
- Проверка корректности перевода.
- Проверка того, что все надписи входят в соответствующие формы, кнопки и т.п.
- Проверка форматов дат, разделителей в числах, специфических особенностей локализации (вроде пробела перед знаком вопроса во французской, верхних индексов “o” и “a” в порядковых числительных в испанской и других нетривиальных моментов).
7. Постоянная обратная связь с пользователем:
- У всех нажимаемых элементов должно быть нажатое состояние (отклик на действие) – благодаря этому пользователь всегда будет видеть, действительно ли нажатие случилось. В Android-приложениях у элементов может быть ещё одно состояние – focused.
- Реакция кнопок на нажатие. Скорость отклика элементов должна быть достаточно высокой. Желательно использовать для проверки этого пункта самые слабые устройства среди поддерживаемых.
- Сообщения при загрузке контента или прогресс-бар.
- Сообщения при ошибке доступа к сети, BT, GPS.
- Наличие понятных сообщений при попытке удалить важную информацию.
- Наличие экрана или сообщения при окончании процесса или игры.
- Наличие и синхронность звуков или вибрации с уведомлениями и другими событиями на экране.
8. Обновления:
- Убедиться, что поддерживаются те же версии ОС, что и предыдущая версия (если новая версия приложения использует новые возможности ОС, то для старых поддерживаемых версий ОС необходимо создание урезанной версии приложения).
- Проверка адекватного обновления (сохраняются все данные пользователя и т. п.).
Различные версии ОС могут использовать отличные соглашения и правила (интерпретация жестов, правила навигации). Следует учитывать это при поддержке приложением нескольких версий ОС [23].
Проблемы, с которыми сталкивается тестировщик мобильного приложения - первый и самый важный момент заключается в том, что тестирование мобильных телефонов займёт больше времени, чем вы предполагаете, даже если вы и так допускаете, что оно займёт больше времени. (Peter-Paul Koch).
Мобильные устройства работают от аккумуляторов, и потому вынуждены автоматически переходить в режим ожидания спустя пару минут бездействия. Это значит, что вам придётся включать телефон перед каждым тестированием, что при одновременном тестировании нескольких телефонов, занимает приличное количество времени. Конечно, на многих устройствах можно отключить автоматическую блокировку (или хотя бы сделать время отключения довольно большим), но желательно всё же работать с самыми распространёнными среди пользователей настройками ОС.