В чем разница тестирования ios и android приложений
По разным данным в среднем человек проводит с мобильным устройством от 3 до 6 часов в день. Это большая аудитория, возможно она даже больше аудитории десктопных приложений. Раз мобилками пользуется так много людей, значит там много денег. Чтобы заработать больше деньег качество приложения должно быть на высоте. Конечно же за это качество отвечают в большей степени тестровщики.
Чтобы обеспечить достойное качество мобильного приложения нужно знать основные принципы мобильного тестирования. О них и поговорим ( если что-то забыл, добавляй в комментариях ).
В конце статьи бонусом собрал видео лекции об особенностях мобильного тестирования.
С чего начать
Мобильные приложения делятся на 3 типа:
- Нативное приложение - приложение под определенную платформу доступное через маркетплейс (Google Play, AppStore и т.д.). Еще одно важно отличие - автономная работа в режиме оффлайн. Яркий пример мобильные игры.
- Веб-приложение - открывается через браузер, а значит это просто веб-сайт.
- Гибридное приложение - устанавливается через маркетплейс, а отображается внутри приложения как веб-сайт. Часто это приложения супермаркетов, недорогих доставок еды.
Немного о плюсах и минусах типов
Говорим о плюсах и минусах именно для тестирования. Если говорить в общем, то список будет намного длинее. Например, нативное приложение очень дорогое в ращработке и тестировании, что является минусом для бизнеса.
Плюсы нативного приложения:
- практически вся функциональность доступна в оффлайне
- скорость работы выше других типов моб. приложений
- полный доступ к функциям девайса (FaceID, отпечаток пальца, камера и т.п.)
Минусы нативного приложения:
- правки багов доезжают только при релизе следующей версии
- тестирование на каждой платформе
- занимают больше памяти
- правки багов приезжают быстрее
- тестирование проводится в браузере и не сильно завязано на ОС/модель телефона/платформу
- не требуется тестировать установку, удаление и обновление
- ограниченный доступ к функциональности девайса (FaceID, отпечаток пальца, камера и т.п.)
- не работают в оффлайне
Плюсы гибридного приложения:
- мультиплатформенные, т.е. реализация на всех ОС одна
- правки багов приезжаюь быстрее, т.к. по сути функционал это встроенный веб-сайт в приложение
- могут использовать большинство функций девайса
Минусы гибридного приложения:
- не работают в офлайне
- ограниченный доступ к функциональности девайса
Типы тестирования мобильных приложений
- Функциональное тестирование - проверка реализованного функционала. Чаще всего сравнивается реализация и ТЗ.
- Тестирование пользовательского взаимодействия (также известное, как тестирование удобства использования, тестирование UX) - удобства работы с приложнием: свайпы, тапы, скролы и т.п.
- Тестирование совместимости - установка на разные ОС, платформах, на разных моделях, проверка на разных разрешениях и т.п.
- Тестирование подключения - проверка на разных типах подключения(wi-fi, мобильная сеть), переключение типов и оффлайн работа
- Тестирование производительности - утечка памяти, стабильность работы при большом количестве пользователей и т.п.
Как выбрать устройства для тестирования
Платформа (смартфон или планшет), ОС определяютя техническим заданием.
Выбор версий и моделей базируется на статистике. Это либо внутреняя статистика вашего сервиса (google analytics, яндекс метрика) или общедоступные дашборды:
- официальная статистика использования устройств Apple
- официальная статистика использования устройств Android
- deviceAtlas - позволят получить выборку по разным параметрам (регион, производитель и т.д.)
- statcounter - аналог deviceAtlas
Дальше зависит от технической базы твоей компании. По возможностям выбираете тестирование на физических устройствах, сервисах удаленного доступа к физическим устройствам ( perfecto , Device Everwhere ) или на симуляторах/эмуляторах.
Не стоит забывать про тестирование на пользователях в бете. Это возможно тестирования на широком наборе устройств, с разными ОС, ресурсами и т.д. Например, в Google Play при публикации приложения есть возможность раздать новое приложение только на некоторый процент пользователей.
Основные проверки по типам тестирования
Функциональное тестирование
- Установка приложения
- Тестирование по ТЗ
- Соответствие общепринятым правилам, например, математическим
- Первый запуск приложения
- Открытие приложения из списках активных (горячий старт)
- Открытие приложения, когда его нет в списке активных (холодный старт)
- Открытие приложения интентом, т.е. вызвать другим приложением, например, тап по ссылке в мессенджере вызывает тестируемое приложение
- Закрытие (только тестируемого приложения, всех приложений в менеджере приложений)
- Удаление приложения из разных точек (логнтапом по иконке, из списка установленных приложений)
- Обновление ( важно проверить сохраность пользовательских действий)
Тестирование пользовательского взаимодействия
Про тестирование пользовательского взаимодействия можно говорить много, поэтому поговорим об этом в отдельном посте (не забудь подписаться , чтобы не пропустить).
Тестирование совместимости
- Проверка на платформах: смартфон, планшет. Возможно по ТЗ будет необходимость проверить на умных колонках, часах или навигаторе.
- Тестирование на разных девайсах: модель, производитель, версиях ОС.
- Если это веб-приложение, то проверить на топовых браузерах
- Проверка на разных разрешениях и масштабах, в альбомной и портретных ориентациях экрана
- Перенос приложения на внешний/внутрений носитель
- Проверка доступности 3rd party services (CDN, библиотеки и т.п.)
Тестирование подключения
- Тестирование при подключеном Wi-Fi, 4G/3G/E/etc
- Разрыв и восстановление сети
- Переключение с одного типа сети к другому
- Оффлайн
- Смена, отключение геопозиции
Тестирование производительности
- Если это веб-приложение, то замерить производительность Lighthouse , Яндекс Метрикой и т.п.
- Репорты с маркетплейсов. Например Google Play присылает отчет об опубликованном приложении (безопасность, краши и т.п.)
- Отзывы пользователей
- Нагрузочное/стресс/стабильности тестирование
Особенности, о которых нужно помнить
Некоторые особенности, которые отличают мобильные приложения от десктопных, и как следствие накладывают дополнительные условия тестирования:
- Смена геопозиции в широком диапазоне. Юзер мобильных приложений более подвижные, чем десктопные :)
- Устройства сильно различаются: платформа, ОС, разрешение, ориентация, ресурсы (память, камера, наличие внешней памяти, датчики освещенности, ориентация экрана, датчики bluetooth/NFC/Wi-Fi/4G/etc)
- Способ взаимодействия в 90% тач. Плюс многие сенсоры оснащены мультитачом.
- Отдельно стоит проверить установку/обновление/работы при недостатке памяти
- Работу при отключении/включении функциональности девайса: bluetooth, NFC, режим полета, ночное освещение, движение глазами и т.п.
- Ограничения ОС. Тут куча кейсов с блокировкой кук, передачи геопозиции и т.п. на уровне ОС.
- Извлечение/переключение sim/flash-карты
Бонус
Особенности тестирования мобильных приложений
Важным этапом при разработке приложения является тестирование — проверка полного функционала на работоспособность и отсутствие сбоев. Это ответственный и кропотливый процесс, так как гаджеты различаются по разрешениям дисплея, аппаратным особенностям, версиям операционной системы и другим признакам.
Этапы
Еще до начала разработки тестеры анализируют схему навигации и взаимодействия экранов с учетом требований, невидимых на дизайне.
Пока разработчики анализируют документацию, тестировщики готовят сценарии тестирования, которых иногда бывает и несколько сотен — это зависит от интерфейса.
Проверка графических и текстовых блоков, правильного отображения всех элементов на экране, поддержки различных языков и дополнительной информации: чисел, дат, цен и так далее.
Если приложение не только полезно, но и удобно, то оно обязательно будет пользоваться успехом. Этап выявляет проблемы в навигации, проблемы с элементами управления и многое другое.
Проверка отклика кнопок, оповещений о выполняемых процессах или об ошибках, соответствие нажатых элементов их состоянию. Для полноты результатов тест проводится и на гаджетах с низкой производительностью.
Тестируется простота и понятность апдейтов, сохранение информации при установке новой версии.
Тестируется адекватность реакции приложения на неожиданную остановку и на изменение статуса гаджета: выключение, активация режима ожидания, синхронизацию с ПК, подсоединение к зарядному устройству, поворот экрана.
Все приложения также обязательно проверяются в «экстремальных условиях»: нехватка внутренней памяти, недостаточность дискового пространства для инсталляции, отсутствие необходимой функции у гаджета (карты памяти, камеры), в условиях низкого уровня сигнала или недостаточного баланса счета пользователя. Тестируется возможность сворачивания приложения и его параллельной работы с другими.
Для публикации в ведущих магазинах для Android и iOS продукт должен соответствовать гайдлайнам магазинов.
Функциональное тестирование
После окончания общего этапа и устранения обнаруженных ошибок происходит функциональное тестирование. Исправленные отделом разработки ошибки проходят дополнительную проверку в рамках Sanity Test. Если ошибки не повторяются, то происходит переход к функциональному тестированию, затрагивающему специфику приложения и целевую аудиторию. Вслед за ним проводится предрелизная проверка, которая подразумевает повтор общего этапа, и после этого приложение может быть отправлено в магазины.
Особенности тестрирования для разных операционных систем
Android
- Инсталляционный файл в формате .apk согласуется с Program Policies, которые представляют собой перечень запрещенных к публикации типов материалов: спам, нелегальный контент, конфиденциальная информация, malware и т. д.;
- При публикации новой версии нумерация сборок производится с принятым порядком;
Приложение тестируется на соответствие документу User Interface Guidelines.
Тестирование iPhone приложений
- Для упрощения модерации в App Store имя приложения проходит проверку на уникальность и согласуется с гайдлайнами компании Apple (Human Interface Guidelines),
- Проверяется категория приложения, а также наличие ссылки для обратной связи пользователей с разработчиком,
Важность тестирования в цикле разработки
Тестирование приложения — это неотъемлемая часть разработки, как и проектирование. Разрабатывать мобильное приложение без контроля его качества невозможно. Именно тестирование в своем комплексе показывает качество будущего продукта. Без проверки приложения на ошибки и коллизии на выходе вы сможете получить только недоработанное, «сырое» приложение, которое не привлечет к вам новых клиентов.
Цена ошибки при релизе высока: неполадки в приложении вызывают негативную реакцию у пользователей, которые ставят низкие оценки приложению, а новые пользователи, видя низкие баллы, не устанавливают приложение. Так вы теряете потенциальных клиентов, а значит и свои деньги. Тестирование приложений поможет вам увидеть слабые места в вашем приложении и заблаговременно от них избавиться.
Что должно включать в себя независимое тестирование?
Современный пользователь интернета, гаджетов и программ сильно избалован. Он ждет понятных, удобных и доступных инструментов, которые быстро и четко работают и легко решают поставленные перед ними задачи. Поэтому перед тем как полноценно запустить мобильное приложение, оно должно пройти тщательное тестирование. В противном случае, столкнувшись с багами, пользователь просто найдет другое аналогичное приложение, которых в сети более чем достаточно.
Для проведения тестирования мы применяем следующие технологии:
- Баг трекеры: Mantis, Bugzilla, Jira, Trac, Rational, ClearQuest, Redmine, PR-Tracker, Eventum.
- Инструменты автоматизированного тестирования: WinRunner, Selenium RC, Selenium IDE, TestComplete, AutomatedQA.
- Инструменты управления проектами: Testlink, Confluence, Microsoft Project.
- Инструменты для тестирования производительности: Mercury LoadRunner, Grinder,Wapt, Apache JMeter, WebLoad, Siege, Pylot, LoadImpact.
После окончания тестирования заказчик получает полный отчет о багах и уязвимости мобильного продукта. Исходя из типа тестирования и пожеланий клиента могут быть предоставлены рекомендации по оптимизации и развитию приложения.
Почему стоит обратиться к нам
Наш опыт разработки мобильных приложений включает навыки общей и функциональной проверки. Мы выпускаем только проверенные и качественные продукты, что подтверждено нашими клиентами.
Разработчики и владельцы программного обеспечения для мобильных платформ могут обратиться к нам как за комплексной проверкой работоспособности, так и за отдельными этапами общего и функционального тестирования.
Функциональное тестирование системного приложения, например, сети компании отличается от тестирования мобильного приложения, которое охватывает тысячи, если не миллионы, клиентов. Тестирование мобильных приложений подразумевает тестирование многих конфигураций, а значит занимает несколько этапов.
Мы обнаружили, что контраст в основном заключается в различных требованиях, методах тестирования и необходимых инструментах.
Разграничение между тестированием мобильных и веб-приложений
- Одно из самых очевидных различий - мобильные приложения предназначены для большего числа пользователей, более разнообразных устройств, чем веб-приложения.
- постоянную связь
- управление уведомлениями
- синхронизацию на нескольких платформах
- Различные взаимодействия для разных пользователей.
- тестирования модулей и библиотек
- соответствия UI/UX
- API
- для работы подойдет любой компьютер;
- большое сообщество разработчиков;
- язык программирования Java может быть использован при написании не только мобильных, но и веб-приложений, игр;
- на Android работают не только приложения для смартфонов, но и для умных часов, Smart TV, VR/AR;
- среда разработки анализирует код и может автоматически формировать некоторые его части;
- хороший фреймворк; можно найти готовые модули под самые разные цели;
- платформу можно адаптировать под любую специализированную задачу;
- исходный код Android открыт для всех; есть платформа Android Open Source Project, где компания публикует все данные, и разработчики тоже могут это делать;
- публикация приложений в Google Play происходит практически мгновенно, обычно без участия модераторов – не нужно долго ждать подтверждения;
- небольшая плата за размещение приложений в Google Play ($25 один раз, при регистрации).
- многообразие устройств и их параметров создает почву для багов, неодинаковой работы приложения на разных смартфонах;
- многообразие версий операционной системы: в отличие от iOS, у Android остаются актуальными и могут работать без обновлений устаревшие версии;
- не все обучающие материалы и ответы на форумах актуальны: система существует давно, нюансы разработки меняются;
- приложение и аккаунт могут быть заблокированы без объяснения причин, на жалобы в техподдержку отвечает бот.
- строго ограниченное количество версий смартфона, размеров экрана и самой операционной системы;
- все изменения в ОС прозрачны: Apple ежегодно выпускает гайдлайны по разработке приложений для iOS и объясняет, как заменить элементы кода на более производительные;
- приложений и разработчиков меньше, конкуренция ниже.
- для работы необходима дорогостоящая техника;
- чтобы загружать приложения в AppStore, нужно ежегодно продлевать аккаунт разработчика за $99;
- публикация приложения может занять больше недели, потому что модерация производится вручную.
Хотя различия между этими двумя категориями компьютеров снижаются по мере того, как все больше веб-приложений становятся доступными в мобильных форматах, сложность мобильных приложений постоянно расширяется с увеличением сложности функций, которые мобильные устройства должны поддерживать. Мобильное приложение может работать на нескольких устройствах, включая смартфон, планшет, кардиостимулятор, систему блокировки или фитнес-трекер.
В то время как мобильные приложения должны постоянно выполнять «на ходу» вычислительные функции, веб-приложения обычно сосредоточены на стационарных портативных или настольных операциях, с классическими функциональными возможностями мыши, курсора или маршрутизатора Wi-Fi, которые менее задействованы в мобильных приложениях. Когда тестирование web приложений переходит к тестированию мобильных приложений задача последовательно расширяется. Тестирование мобильных приложений должно касаться нескольких различных функций в отношении нескольких различных сред в нескольких разных условиях.
Увеличение интереса пользователей и их привязанности к мобильным устройствам привело к тому, что QA должны проверять приложения на:
Более того, важнее, чем цели, задачи, планирование - клиент. Таким образом, тестирование программного обеспечения представляет собой задачу координации и обеспечения уровня функциональности мобильных устройств, которая будет учитывать требования и предпочтения клиентов.
Технические вызовы
Различия между мобильным и веб-тестированием:
Многие мобильные устройства по-прежнему поставляются с 1 или 2 ГБ оперативной памяти, а также со сравнительно небольшими 16 ГБ SSD. Это создает серьезные ограничения для оперативной памяти и емкости хранилища для тестирования, особенно в отношении огромного объема памяти и хранилища, которые доступны любому современному веб-браузеру. Кроме того, такие услуги, как рекламные платформы, могут серьезно замедлить работу мобильного браузера, так что перенос вашего веб-приложения на телефон или планшет может вызвать трудности.
Взаимодействия для компьютеров и ноутбуков стабилизировано более 30 лет - мышь и клавиатура - это стандарт для всего, от работы в Facebook до флэш-игры. Это составляет особенности тестирования веб приложений.
Проблема со стороны мобильных приложений заключается в широком спектре сенсорных действий - прокрутка, вытягивание, защемление + голосовые возможности (Siri и Google Now). Специфические для конкретного устройства инновации, такие как жесты hand wave на некоторых гарнитурах Samsung или новый набор аудио iPhone, добавляют сложности на тестирование ios приложений и Android-приложений.
Десктопное веб-приложение разработано на HTML, CSS и JavaScript с некоторыми вариантами в зависимости от того, какие платформы разработчик хочет использовать. Мобильные приложения не так просты. Они могут быть созданы, как нативные приложения на Java или Objective-C, или как гибридные, которые могут использовать специальные платформы для представления системных API в качестве API-интерфейсов JavaScript, адресованных веб-кодом. Очень важно, чтобы был разработан roadmap для платформы, чтобы управлять испытаниями для всех типов тестирования.
Веб-приложение, работающее на Mac или ПК, будет бесполезным без подключения к Интернету. То же самое для мобильного веб-приложения. Однако нативное или гибридное мобильное приложение может обладать автономными функциями. Некоторые игры могут воспроизводиться без подключения, а редакторы документов также могут сохранять функциональность в режиме полета. Необходимо проверять, как мобильные приложения ведут себя при переключении между соединениями или использовании нестабильных сетей.
Это поможет провести тестирование андроид приложений, а также iOS и веб-приложений более качественно.
Конечно, существует некоторое совпадение между веб-и мобильными приложениями. Многие мобильные приложения частично относятся к веб-приложениям, и тестировщики придерживаются некоторых общих схем тестирования в рамках гибкого цикла разработки. Наличие программного обеспечения для управления тестированием является ключевым строительным блоком, поскольку вы формируете общую стратегию тестирования и обращаете внимание на учет широкого круга рабочих процессов, ресурсов и возможных проблем, связанных как с мобильными, так и с веб-приложениями.
Виды тестирований
Важно заметить, что ручное тестирование, как и автоматизированное играют важную роль для QA. Машина может значительно сэкономить время и облегчить процесс, но не все тестовые процессы обойдутся без участия человека.
Не забываем и про тестирование безопасности веб приложений, это обеспечивает комфортную работу для клиентов и избавляет от обработки багов после релиза приложений.
Особенности тестирования мобильных приложений - ключевой фактор для того, чтобы получить отличный продукт. Тестировщики команды Artjoker внимательно относятся к любым мелочам и понимают важность правильного функционирования как web, так и мобильных приложений. Мы поможем провести тестирование приложений android или iOS на высоком уровне.
Если вы только пришли в разработку, невозможно заняться iOS и Android одновременно. Разработка под эти операционные системы ведется на разных языках программирования. Для iOS необходимо владение Swift и Objective-C. Для Android – Kotlin или Java. Больше того, вам потребуется разная техника. Для iOS – Mac или iPhone. Для Android подойдет любой компьютер и смартфон. Существуют эмуляторы, но для постоянной работы и тестирования этот вариант не подходит.
Прежде чем выбирать операционную систему и делать ее своим полем деятельности, стоит освоиться в IT-разработке в целом. Если это новая для вас сфера, можно записаться на бесплатный курс для новичков или заняться изучением основ самостоятельно. Например, в открытом доступе есть гарвардский курс «CS50. Основы программирования» на русском языке. Ориентируясь на ту технику, что у вас есть, выберите программное обеспечение и язык. Осваивайте их, экспериментируйте. Попробуйте для начала сделать несколько проектов для портфолио, по фану. Можно найти заказчиков для своих пробных проектов среди друзей. Ваши шансы на успех повысит владение английским языком (на нем написаны многие материалы, необходимые для работы) и готовность постоянно учиться, следить за трендами.
В базе вакансий HeadHunter на момент написания этого материала открыто 2773 вакансии по запросу «Android developer» в России.
По данным «Хабр Карьера», на 2020 год средняя зарплата разработчика на Java – 130 тыс. рублей, на Kotlin – 125 тыс. рублей.
Согласно исследованию «Яндекса», к концу 2019 года зарплата Android-разработчиков с опытом меньше года составляла около 46 тыс. рублей. Специалисты с опытом больше 6 лет могли рассчитывать на зарплату в районе 207 тыс. рублей.
Преимущества для разработчиков:
В базе вакансий HeadHunter на момент написания этого материала открыто 2497 вакансий по запросу «iOS developer».
По данным «Хабр Карьера», на 2020 год средняя зарплата разработчика на Swift – 130 тыс. рублей, на Objective-C – 150 тыс. рублей.
Согласно исследованию «Яндекса», на 2019 год зарплата iOS-разработчиков с опытом меньше года составляла около 69 тыс. рублей. Специалисты с опытом больше 6 лет могли рассчитывать на зарплату в районе 216 тыс. рублей.
В Сети легко найти обучающие курсы по мобильной разработке. Например, на «Нетологии», Skillbox, Geekbrains. Можно даже поступить в университет и изучить это как предмет в рамках бакалаврской программы по информатике. Однако некоторые наши специалисты считают, что можно научиться всему необходимому самостоятельно.
Вполне возможно самому научиться качественной разработке под Android. Но в любом случае придется читать курсы. Бесплатные, например. Основное – это практика. Уже на практике обнаруживается много подводных камней. Когда появляется какая-либо ошибка, часто ответ находишь на форумах, а не в официальной документации.
Главный специалист компании «ЛУКОЙЛ-Технологии», iOS-разработчик ReactiveНаучиться разработке для iOS можно самому и без специальных курсов. Дело в человеке. Если он упертый, то сядет и найдет всю необходимую информацию. В книгах, в интернете. Все курсы и видео есть на торрентах. Можно скачать, сесть и учиться самостоятельно. Платные курсы могут помочь с мотивацией: раз заплатил, по-любому результат надо получить. Плюс, обычно на курсах преподает лектор, ему можно задать любые вопросы, быстрее прийти к пониманию. А если учишься сам, очень помогает, когда среди знакомых есть разработчики в нужной сфере. Можно советоваться с ними.
Вадим Ахмаров, Android-разработчик Reactive:
«Зависит от того, сколько у человека денег. На Android можно начать бесплатно, а на iOS придется Mac покупать. Если говорить о технической сложности, Android сложнее из-за большего количества устройств».
Антон Лунегов, главный специалист компании «ЛУКОЙЛ-Технологии», iOS-разработчик Reactive:
«Начинать с iOS не рекомендую. Вообще для начала нужно понимание программирования в целом, базовые знания. Просто так прийти из другой сферы невозможно. Необходимо изучать языки программирования. Стартовать в мобильной разработке я бы рекомендовал с Android. По Android больше структурированного материала. Книги написаны более понятно.
Я и сам начинал с Android. После шести лет в этой сфере занялся iOS, теперь параллельно работаю над проектами для обеих операционных систем. У меня уже было понимание, что из себя представляет разработка для iOS, оставалось только изучить язык. Тогда в «Лукойле», где я работаю до сих пор, была необходимость адаптировать под iOS приложение, Android-разработкой которого я руководил. Специалиста со стороны подключить было сложно. В итоге я сам за это дело взялся. Мне предоставили и iPhone, и MacBook, и достаточное количество времени. Я просто стал изучать, погружаться и сам написал это приложение».
Конечный выбор только за тобой. Успехов тебе и новых свершений.
Кстати, нам бывают нужны junior-разработчики. Следи за новыми вакансиями здесь.
Читайте также: