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

Планета Корусант всегда славилась лучшими мастерами мобильного тестирования. В этом уровне ты будешь учиться на этой планете, не подведи имя мастера. Да прибудет с тобой сила!
Особенности мобильного тестирования
- Документация
- Инсталляционное тестирование
- Тестирование совместимости
- Стресс тестирование
- Нагрузочное тестирование
- Функциональное тестирование
- Локализация и Usability
Анализ документации
Прежде чем приступить к работе, необходимо внимательно изучить проект и его функционал, помня о выдвинутых к системе требованиях и пожеланиях заказчика. Далее разработать тест-план работ, и подготовить всю тестовую документацию, в соответствии с которой вы и будете работать в дальнейшем.
Важно помнить, что платформа, на которой будет опубликованно ваше приложение также имеет свои требования, без которых приложение удалят, либо не допустят к публикации. При выпуске приложения нужно быть уверенным, что оно удовлетворяет всем требования платформы.
Инсталляционное тестирование
Причиной возникновения багов при установке является большое разнообразие как в начинке мобильных устроствах так и в версиях прошивки того же android например. По этому при инсталляционном тестировании нужно помнить обили версий каждой конкретной системы (будь то android, iOS или даже Blackberry).
Мобильному тетсировщику нужно следить за изменениями происходящими в мире, например, за появлением новых мобильных платформ, таких как Win Mobile OS, Chrome OS.
Очень важно помнить о разнообразии устройств, которые уже есть на рынке и могут быть у пользователя и протестировать:
1. Вариации самих типов устройств: планшеты, телефоны, плееры;
2. Различные конфигурации железа в устройствах;
3. Вариации разрешения дисплеев устройств.
4. Различные подверсии прошивок
Как это применяется на практике. Для каждого из этих параметров выполнить тесты:
1. Установить приложение на iphone/ipod/ipad
2. Установить на "слабом" и "среднем" по производительности устройстве, с камерой/без камеры, с 3G/без 3G и прочее...
3. Установить на одном из устройств из одной группы разрешения (далее будет подробнее о разрешениях)
4. Установить на устройстве с android 4.4 и 5.1 (выберите два самых популярных релиза подряд)
я тоже android
Тестирование совместимости
Тут обычно все довольно просто. Продакт менеджеры (руководство) вашей компании должны определить целевую аудиторию вашего приложения. Ваша же задача будет протестировать функционал приложения на каждой из поддерживаемых версий. Например на данный момент apple поддерживаются версии iOS 8.4.1/ 9.3/ 9.3.1/ 9.3.2
Cтресс тестирование
Для мобильных устройств стрессовыми ситуациями будут внешние прерывания. Вам необходимо проверить, что приложение правильно обрабатывает исключительные ситуации и не сбоит, не крэшится, не теряет введенные данные, не прерывает транзакции и тому подобное. Вот минимальный чек лист прерываний которые
могут возникнуть при штатной работе приложения у пользователя:
- Входящие и исходящие SMS и MMS
- Входящие и исходящие звонки (убедиться, что приложение
переходит в фоновый режим в случае входящего звонка)
- Изъятие аккумулятора
- Отключение и подключение usb провода
- Отключение и подключение сети
- Переход из режима wifi на 3G/4G и обратно
- Отключение и подключение SD-карты
- Включение и выключение проигрывателя
- Зарядка устройства
- Пуш уведомлениях сторонних приложений
- Засыпании устройства
- Включение наушников
Нагрузочное тестирование
Также известно как тестирование производительности. Это автоматизированное тестирование, которое имитирует работу определенного количества пользователей какого-либо общего ресурса. В основном оно актуально для онлайн приложений (особенно мобильных онлайн игр). В случае однопользовательского приложения нагрузочное тестирование сведется к максимальной нагрузке устройства всеми возможными операциями в приложении, добавлении максимального количество элементов на рабочий стол и тому подобное.

Основные задачи тестирования производительности:
- Определить количество пользователей, которые могут одновременно работать с приложением
- Проверить, как ведет себя приложение при увеличении интенсивности выполнения каких-либо операций
- Проверить работоспособность приложения при многочасовом использовании на средней нагрузке
- Проверить поведение приложения при критической нагрузке
- Проверить работу в условиях «разросшейся» базы данных - насколько быстро выполняются запросы
- Проверить как приложение восстановит данные если "уложить" сервер
мы дроиды, намного производительнее людей
Функциональное тестирование
Наконец мы добрались до функционального тестирования! Наверное этот самый важный вид тестирования в конце потому, что список самый длинный :) В первую очередь функциональное тестирование проводится на основе требований вашего продукта, а во вторую (или если, О Ужас! Требований нет) согласно чек листу мобильного функционала. В этом чек листе собраны основные проверки тесты которые нужно выполнить надо мобильным приложением. И так вперед, к победе над мобильным тестированием.
- Как ведет себя приложение при малом количестве места на устройстве(Недостаток места для установки или работы приложения)
- При низком заряде аккумулятора
- Установка на карту SD и в память устройства
- Проверка очистка данных приложения при удалении его с устройства
- Работа с включенным/выключенным gps
- Поддержка необходимых медиа-файлов данной моделью и ОС
- Локализация приложения. Проверить верстку дял каждого языка
- Проверка адекватности обновления (сохраняются все данные пользователя). Не крешится ли после обновления.
- Пуш уведомления приложения, и их открытие
- Гироскопический датчик обычно это горизонтальное и вертикальное положение экрана, но бывают приложения реагирующие на положение в пространстве более тонко
- Выход в фон (свернуть и восстановить приложение)
- Переходы в социальные сети, регистрация с помощью соц. сетей
- Проверка работы одного приложения с несколькими пользователями одновременно (соц. сети) в офлайн/онлайн режиме.
- Верстка - все элементы должны быть такого размера, чтобы пользователь мог однозначно попасть по ним пальцем
- Кликабельность - у всех нажимаемых элементов должно быть нажатое состояние (отклик на действие)
- Жесты (особенно у айфонов). Проверка реакции на зумирование двумя пальцами, скрол, поворот и так далее.
- Работа с физической клавиатурой (если в списке поддерживаемых моделей есть такие) – переносы строк, перемещение по ним и т. п.
- Восстановление покупки (повторная установка в случае удаления)
- Проверка влияния различных форматов дат, чисел и языков системы
- Убедиться, что устройство работает в многозадачном режиме, когда это необходимо
- Проверить, присутствует ли надлежащая навигация между важными модулями приложения
- Проверить наличие сообщений об ошибках, например, сообщения «Ошибка сети. Пожалуйста, попробуйте позже» в случае некорректной работы сети
- Убедиться, что установленное приложение не препятствует нормальной работе других приложений, и не съедает их память
- Убедиться, что автоматический запуск приложения работает корректно (если есть)
- Убедиться, что существует доступное руководство пользователя.
Usability мобильных приложений и сайтов
Специалист по юзабилити Патрик Кокс сформулировал 10 принципов, на которых должна
основываться разработка мобильных приложений и сайтов.
Тестируя дизайн мобильной версии сайта или мобильного приложения, мыслите не в терминах страниц, а в терминах экранов. В своей статье, о мобильном дизайне, он пишет - "Каждый экран должен включать в себя не более трех функций или элементов". Важно понимать, что эти и дальнейшие принципы не являются четким критерием, а просто рекомендацией к действиям. Если в вашем приложении больше трех элементов на странице, то не надо сразу заводить баг. Просто это повод обсудить данный недостаток дизайна с продакт менеджером.
Давайте рассмотрим все принципы качественного мобильного usability:
- Отсутсвует перезаполнение экранов
- Не применяется выделенные состояния (подчеркиваний, яркие цвета)
- Нет иконок непривычного вида для обозначения типов
действий («добавить», «изменить», «назад», «вперед» и т. п.)
- Текст должен быть крупным шрифтом, написан просто и понятно
- Не пользуются функцией прокрутки без особой необходимости (скролл
который ничего не прокручивает это баг)
- Используйте элементы содержимого сайта в навигации (например логотип
содержит ссылку на главную страницу)
- Не забудьте проверить ваше приложение на наличие обратной связи с пользователем: Сообщения при загрузке контента / прогресс-бар Сообщения при ошибке доступа к сети Наличие сообщений при попытке удалить важную информацию Наличие экрана / сообщения при окончании процесса / игры Наличие и синхронность звуковых и вибрационных уведомлений с уведомлениями на экране.
- Сохраняются пустые места в верстке. Увеличение высоты строк делает текст более удобным для чтения на экране мобильного устройства.
Что стоило бы не упускать из виду при тестировании
Для функционального тестирования вам необходимо как минимум 2 вида устройства - телефон и планшет, а для полного тестирование верстки необходимо минимум 4 различных устройства с экранами в диапазоне форматов (ldpi > mdpi > hdpi > hxdpi). Каждое устройство тестируется в двух ориентациях экранов landscape и portrait. Подробнее разрешение этих форматов представлено на схеме:
Android устройства
Android - операционная система для смартфонов, интернет-планшетов, электронных книг, цифровых проигрывателей, наручных часов, игровых приставок, нетбуков, смартбуков, очков Google, телевизоров и других устройств. В будущем даже планируется поддержка автомобилей и бытовых роботов для android. Основана ОС на ядре Linux, но имеет собственную реализацию виртуальной машины Java от Google. Изначально разрабатывалась компанией Android Inc., которую затем купила Google. Впоследствии Google инициировала создание альянса Open Handset Alliance (OHA), который сейчас занимается поддержкой и дальнейшим развитием платформы. Android позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки.
В 86 % смартфонов, проданных во втором квартале 2014 года, была установлена операционная система android. При этом за весь 2014 год было продано более 1 миллиарда Android-устройств.
Популярные мобильные устроства: планшет, фаблет, смартфон, плеер
Расширения экранов android

Размер экрана в дюймах
Вид размера
Плотность изображения (dpi)
Вид плотности

Самое популярное разрешение для смартфонов
Самое популярное разрешение для планшетов
iOS устройства
iOS (до 24 июня 2010 года - iPhone OS) - операционная система для смартфонов, электронных планшетов и носимых проигрывателей, разрабатываемая и выпускаемая американской компанией Apple. Была выпущена в 2007 году; первоначально - для iPhone и iPod touch, позже - для таких устройств, как iPad и Apple TV. В отличие от Windows Phone (Microsoft) и Android (Google), выпускается только для устройств, производимых фирмой Apple.
В iOS используется ядро XNU, основанное на микроядре Mach и содержащее программный код, разработанный компанией Apple, а также код из ОС NeXTSTEP и FreeBSD (одна из ветвей Unix/Linux систем). Ядро iOS почти идентично ядру настольной операционной системы Apple OS X. Начиная с самой первой версии, iOS работает только на планшетных компьютерах и смартфонах с процессорами архитектуры ARM.
Линейка устройств iOS: планшет ipad, ipad mini и смартфон iPhone 6, 5S, 5с, 4S, 4
Расширения экранов iOS
Запомни что важно учитывать Retina и не Retina экраны. На ретина экранах элементы интерфейса и текст будут в 2 или 4 раза мельче. В свою очередь изображения для ретина-экрана могут попасть в не-ретина версию и тогда будут очень большими на обычных мониторах. Целая проблема с этими ретинами! Кстати, в 2016 windows планшеты также начали выпускать с ретина дисплеями.
Windows phone
Windows Phone - мобильная операционная система, разработанная Microsoft, вышла 11 октября 2010 года. Эта операционная система является преемником Windows Mobile, хотя и несовместима с ней, с полностью новым интерфейсом и впервые, с интеграцией сервисов Microsoft: игрового Xbox Live и медиаплеера Zune. В отличие от предшествующей системы, Windows Phone в большей степени ориентирован на рынок потребителей, чем на корпоративную сферу.
Новая операционная система Windows 10 для мобильных устройств получила название «Windows 10 Mobile», вместо Windows Phone 10 и является продолжением этой линии хоть и сильно перекликается с десктопной версией. В дополнения была выпущена универсальная Windows 10, которая может рабоать, как в режиме планшета так и в режиме десктопа.
Смарфоны и планшеты с windows mobile производят очень многие компании, например: Samsung, HTC, Nokia, LG, Huaiwei и прочие
Расширения windows смартфонов
* так как устройства очень разношёрстные, приведены только основные форматы
Виды мобильного тестирования
За времея чтения материала у меня накопилось можество вопросов, давай попробуем вместе ответить на них.
Как Вы проведете Smoke тестирование для мобильного приложения?
В каком порядке и как будет выполняться тетсирование нового функционала?
Что думаете по поводу Regression testing мобильного приложения?
Как будете выполнять Acception testing?

Перед тестированием приложения необходимо всегда составлять план работы:
- Объем - что включать в тестирование, а что не затрагивается изменениями и может быть пропущено
- Как часто проводить регрессионное тестирование
- На каких устройствах - выбрать список поддерживаемых устройств и подготовить их к тестированию. Установить приложения, настроить логгеры и прочее.
Помоги себе сам. Инструменты
Вашему вниманию, предоставляются примеры тулозовин необходимых тестировщику мобильных приложений для работы с тестовыми устройствами. Они необходимы для установки тестовых приложений на девайс, работы с файлами, памятью устройства и прочего.
- Утилита для работы с *.apk файлами и переноса их на sdcard
- Программа Airdroid, для быстрого преренесения файлов на android чрез Internet
- DroidExplorer. Еще одно приложения для работы с приложениями без Google Play
Приложения для тестирования на iOS устройствах. Позволяет установить тестовые версию по на яблокофоны
Основаня программа для работы с iOS устройствами
Снятие логов, скриншотов
Очень часто для установления причины бага программистам необходима знать код и текст ошибки возникающей во время бага. В браузере для этого предусмотренна консоль, поэтому в web-тестировании все было просто - открываешь консоль и копируешь ошибку в описание бага, все дело сделанно! Но толи дело мобильное приложение, тут логи нужно добыть, а среди них отыскать нужную ошибку. Обычно, для этого, лог устрйоства очищается, а затем нужно воспроизвести баг опять. Ошибка упадет в лог последней. Для вас собанны программы для чтения логов мобильных устройств.
(находится в папке tools Android sdk).
CatLog - Cамый простой вариант для чтения логов, это приложение, которое отображает лог устройства
Screens (Утилита входящая в комплекс Android sdk и ddms.bat), позволяет делать скриншоты подключенного смартфона или планшета
Android Screenshots and Screen Capture.
Программа для захвата скриншотов с устройства подключенного к ПК
Sсreen recorder - одна из многочисленны программ для записи видео с экрана. Для захвата скриншота просто нажмите одновременно кнопки "сон" + "громкость вниз". Если у вас нет кнопок громкости, гуглите, как захватить скриншот с Вашего устройства
Таже программа Testflight, что
упоминалась уже ранее используется для чтения логов яблокофонов
Если подключить iOS устройство к компьютеру, на котором установлен Xcode, то логи можно вытащить тут: Organizer – Devices
~/Library/Logs/CrashReporter/MobileDevice
Захват скриншота на устройстве - зажмите кнопки Home + Power. Одинаково для iPhone и iPad
Скришоты программ описанных выше



Эмуляторы и симуляторы
Эмулятор Android встроенный в Android sdk. Сложный и извилистый метод для настойчивых людей. Вам прийдется погуглить и покопаться чтобы его запустить
Скины для эмулятора Android sdk. Представлет собой код для запуска конкретных моделей: Nexus,Samsung.
GenyMotion - моя любимая программа для эмуляции android. основана на программе VirtualBox (предыдущий уровень).
GenyMotion - официальный сайт, а еще можно скачать программу здесь
Симулятор для iOS встроенный в программу разработки Xcode. Для работы с ним вам потребуется mac ПК. На данный момент не существует официальной версии для других ОС. Только кряки и виртуалки, они не стабильны и доставит много проблем.
В программе Xcode эмулятор
находится тут:
~/Library/Application Support/iPhone
Simulator/6/Applications/<файл>
Эмулятор встроенный в android SDK

Данная информация дополнительная в этом уровне. На рабочем месте вам может понадобиться настроить android SDK для дебаггинга android приложения. Это можно сделать на windows PC, по этому ниже преведено руководство как это сделать.
Скачиваем и устанавливаем :
- Java SE Runtime Environment
- Android SDK (Путь к папке с установленным sdk не должен содержать букв кириллицы)
В Android SDK Manager выбираем все необходимые компоненты для установки, устанавливаем их.
После завершения всех скачиваний необходимо открыть AVD (Android Virtual
Device Manager) и создать новое виртуальное устройство.
Выбираем в списке AVD созданное устройство и запускаем кнопкой “Start”.
(Первый раз этот процесс занимает гораздо больше времени, и может
продлиться несколько минут). Да, добавим - данный механизм эмуляции требует больших ресурсов компьютера. Бессмысленно это делать на устройстве слабее Core 2 Duo + 4 Gb RAM.
Скришоты программы android SDK



Android Debug Bridge
ADB, Android Debug Bridge - это утилита командной строки входит в Android SDK от Google. С помощью данной утилиты можно: копировать файлы на устройство и обратно, устанавливать и удалять приложения, выполнять резервное копирование и восстановление, и многое другое используя команды, выполнять множество Linux команд, получать отчеты об ошибках и т.д.
Кстати android это ветвь Linux систем. Да, теперь ты можешь себя считать бородатым админом владельцем Linux : ). Более подробная статья, о том как настроить и установить ADB. Далее приведены популярные команды для работы в консоли с вашим android через эту программу.
Работает в командной строке.
- adb shell <cmd> - выполнить команду <cmd> в Android
- adb push <local> <remote> - залить файл или директорию на устройство
- adb pull <remote> [<local>] - копировать файл или директорию с устройства
- adb install < package.apk > - установить пакет
- adb uninstall <package.apk> - удалить программу
- adb connect <ip:port> - соединиться с Android через сеть. Требует некоторой подготовки устройства, а именно настройку ADB через TCP
- adb logcat [filer] - посмотреть вывод логов в реальном времени. Можно задать фильтр.
- adb backup - сделать бекап
- adb restore <file> - восстановить из бекапа
Инструменты для автоматизированного тестирования
Эта тема еще более дополнительная. Когда вы углубитесь в мобильное тестирование на работе и захотите автоматизировать мобильные тесты, вам в помощь придут эти программы:
TestDroid – это плагин для Эклипса, который позволяет записывать тесты
(record&play) в формате Robotium
MonkeyRunner. Позволяет выполнять функциональное тестирование
приложения, предоставляя API для управления устройством.
Robotium – “It's like Selenium, but for Android”. Это фреймворк для создания мобильных автотестов. Вам это пригодится когда вы поймете что предложение значило : )
UIAutomation – позволяет выполнять написанные на JavaScript тестовые
сценарии как в эмуляторе, так и на устройстве iOS
Fonemonkey - Record&Play решение, интересно тем, что тесты записываются и
редактируются прямо из тестируемого приложения на телефоне или
эмуляторе
Пример автотеста запущенного в UIAutomation

Настало время практики. Ты давно уже не падаван, а настоящий джедай тестирования! Для тебе, у меня будет настоящее боевое задание.
Вчера на базу было доставлено секретное android приложение под кодовым названием Probid.
Твоя задача его протестировать полностью. Ходят слухи что ситхи повлияли на программистов и те допустили в нем ошибки. Приложение представляет собой,
Тебе предстоит установить это приложение на свой смартфон, а если у тебя нет android,- что же прийдется подолбаться с эмулятором. Магистр объяснял как им пользоваться, если ты любитель сложных путей во вселенной.
Так как я уверен что ты легко с ним справишься, вот тебе задание номер два. Протестировать мокапы мобильного приложения, которое еще только находится в разработке, и найти в нем баги. Да, все верно, часть багов закладывается в приложение еще на этапе проектирования! Ответ отправь через форму.
Да и как всегда, пройди тест на мобильную пригодность от QA Academy. Отчет по тестированию впиши в Google Doc и отправь через форму. Для багов достаточно указать: Summary/ Priority/ Steps to reproduce/Actual result/Expected result
















