четверг, 13 августа 2015 г.

Тестирование мобильных приложений

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

Мобильные приложения - область, которая развивается очень быстро. Многие компании выпускают мобильные версии своих продуктов. Например, у меня на телефоне установлено приложение Facebook. Да, я могу зайти и через браузер, но это не так удобно и быстро.

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

В тестировании мобильных приложений есть очевидная трудность - огромное количество платформ. Можно попробовать посчитать количество комбинаций таких переменных, как: ОС (Андроид, iOS, Windows Phone), версия ОС, разрешение и размеры экрана, емкость батарейки, оператор, количество сим карт, наличие или отсутствие WiFi. Оно будет.. большим :)

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

Существует множество способов увеличить тестовое покрытие возможных устройств. Некоторые компании наряду с внутренним тестированием проводят внешнее тестирование (краудсорс или бета). К примеру, есть сервисы вроде utest и testlio, где любая компания может найти тестировщиков с определенным девайсами. Существуют удаленные лаборатории, в которой разработчики и тестировщики могут получить доступ практически к любым устройствам. Чаще всего это, конечно, не бесплатно. Есть открытые лаборатории устройств, об организации которых можно почитать в статье

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

  • Установка приложений
  • Сбор логов
  • Снятие снимков экрана и видео
  • Оценка интерфейса
  • Изучение компонентов приложения на диске устройства
  • Сбор показателей производительности
  • Эмуляция различных прерываний работы приложения (звонков, получения SMS, отключения устройства из-за севшей батарейки)
  • Моделирование различных уровней связи
Конечно, выбор инструментов, которые могут использоваться для этих задач, зависит от конкретного устройства и приложения. Для Android приложений существуют свои инструменты (к примеру, Android SDK), для iOS - свои (к примеру, XCode). Информацию о новых инструментах можно найти на сайте у Александра Хози. Поначалу всё это выглядит довольно сложно. Поэтому совет такой - ищите инструменты по мере необходимости, начинайте с простого (как сделать снимок экрана, как скачать файл с устройства на компьютер) и постепенно переходите к более сложным вещам (запуск приложения под отладчиком, сбор статистики его работы, анализ сетевого трафика).

В плане внешнего вида - существуют специальные руководства, которые описывают, как должно выглядеть приложение на той или иной ОС. Например, для Android или для iOS. Любители всего визуального (такие, как я :)) найдут для себя много интересного в этих документах. Насколько я знаю, и AppleStore, и Google Play при публикации приложений проводят проверку внешнего вида на соответствие правилам. И если вы заинтересованы в более быстром релизе вашего продукта - знание этих правил очень пригодится и на этапе дизайна, и на этапе тестирования.

Какие техники тест дизайна использовать? Или, по-простому, как придумывать тесты для мобильных приложений?

Мне очень нравится статья Mobile App Test Coverage Model : LONG FUN CUP (спасибо Леше Федорову за наводку) - в ней дается модель, которая помогает в генерации идей тестов. Особенно понравились советы вроде: "It’s a sin to test mobile app sitting at your desk, lie in the couch".

Также советую почитать бесплатную книжку Mobile testing: Ready reckoner, это отличный сборник. Некоторые вещи мне даже в голову не приходили :)   

Какие критерии качества проверять?

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

Пытался придумать название для критерия качества, который означал бы, что мобильные приложения должны работать везде, в любых условиях. И в любых нештатных ситуациях (а их в жизни мобильных приложений бывает очень много) они должны работать корректно или хотя бы выдавать понятную ошибку. Давайте назовём это неубиваемостью или стойкостью. Хотя похоже и на надежность. В общем, мобильное приложение в любой ситуации должно сохранять pocker face, как будто ничего страшного не произошло :)

Еще немного интересных материалов по теме:

Надеюсь сообщение получилось легким и не перегруженным информацией.

Еще раз приглашаю всех на сессию викенд тестирования, посвященную мобильному тестированию. Увидимся!

3 комментария:

  1. Ответы
    1. Благодарен за конструктивную критику :)

      Удалить
  2. Роман, спасибо! Нашел много чего полезного. Теперь из-за вас я не буду спать по ночам.

    ОтветитьУдалить