В статье рассказываем, что такое мобильное тестирование и тестирование Android-приложений. Разбираемся с инструментами, особенностями, этапами, спецификой и смотрим на реальные баги, которые встречаются даже в самых популярных продуктах.
Что такое мобильное тестирование
QA расшифровывается как Quality Assurance, или «гарантия качества». Другими словами, тестирование ПО — это когда анализируют программное средство и сопутствующую документацию, чтобы найти все ошибки (баги).
Рынок IT-продуктов динамичный и конкурентный, а мобильные телефоны — основной способ взаимодействия с сервисами. Чтобы удержать пользователей, нужно выпускать качественные продукты без багов. Здесь и начинается работа QA-инженеров. Они должны убедиться, что в программе или приложении ничего не сломалось, а новые функции (фичи) пользователи видят так, как задумывалось руководителем продукта.
Получить профессию тестировщика можно на курсе Skypro «Инженер по тестированию». За несколько месяцев освоите знания и навыки, которые нужны для первой работы. А устроиться на нее еще во время обучения помогут специалисты центра карьеры. Потренируетесь на тестовых собеседованиях, составите цепляющее резюме и соберете портфолио из курсовых проектов.
Особенности QA
У тестирования мобильных приложений есть специфика. Чтобы баг пропал, нужно установить обновление. Но многие пользователи либо забывают, либо просто не обращают внимания на обновления. Поэтому так важно выпускать новые релизы без багов, а баги в мобильных приложениях бывают очень запутанные.
Что случится с функциями приложения, если во время поездки в метро пропадет интернет? А если приложением будут пользоваться в другой стране? Или пользователь выключит геолокацию, поменяет язык в телефоне?
Можно придумать много таких вопросов, и все они будут различаться в зависимости от функциональности приложения. Задача мобильного QA-инженера — сделать так, чтобы у пользователей в мобильном телефоне было приложение, которое работает стабильно и предсказуемо во всех ситуациях.
Типы мобильных приложений
Современные мобильные операционные системы запускают разные программы. Есть приложения, которые написаны для платформы, на которой запускаются. Это нативные приложения. А есть те, которые работают через веб-браузер вне зависимости от операционной системы. Это мобильные веб-приложения.
Нативные
Они эффективнее используют ресурсы платформы и выглядят для пользователя более плавными и удобными. В некоторых случаях без нативного подхода не обойтись. Например, когда работаете с камерой или блютусом.
Веб
Если в приложении немного функций и все они не зависят от платформы, можно обойтись веб-приложением. Это позволит написать код один раз и запустить его на всех платформах.
Гибридные
Чаще всего компании выбирают гибридный подход. Большая часть приложения нативная, но некоторые части работают как веб-приложение.
Такой подход выбирают по разным причинам: например, какие-то не самые важные экраны можно сделать сразу на две платформы — или компания переписывает старые экраны нативным подходом.
Сейчас большинство приложений гибридные. Удобно совмещать сразу два подхода: можно вложить в приложение больше рабочих функций.
Способы тестирования
По степени автоматизации, или по степени непосредственной вовлеченности человека в процесс различают ручное и автоматизированное тестирование.
Ручное
Процесс, в котором участвует человек. Тестировщик вручную на устройстве проверяет, как работают функции приложения.
Сейчас не нужно постоянно обновлять приложения и дорабатывать мелочи, поэтому большую часть времени QA-инженер занимается регрессионным тестированием.
Регрессионное тестирование — это когда проверяют работу функций, которые не изменялись в текущем релизе. Еще есть new feature testing — когда тестируют только новые функции, которые добавили в приложение.
Один из главных недостатков ручного тестирования — количество времени, которое QA-инженер на него тратит. Если в приложении много функций и разных экранов, то понадобится несколько дней, чтобы провести полный цикл регрессии на разных устройствах и версиях операционной системы.
При частых релизах ручное тестирование не подойдет, поэтому компании стремятся максимально автоматизировать процесс.
Автоматизированное
Для него пишут специальные программы — тесты. Есть много разных видов тестов: какие-то из них пишут разработчики, а какие-то — QA-инженеры.
Такие тесты можно запускать когда угодно, и они занимают гораздо меньше времени в отличие от ручного тестирования.
Хорошая практика — прогонять тесты несколько раз в сутки, чтобы сразу видеть, что и где сломалось.
Что выбрать
На рынке труда больше ценятся специалисты, которые умеют автоматизировать процесс тестирования.
На курсе «Инженер по тестированию» от онлайн-университета Skypro можно разобраться с видами тестирования, научиться тестировать API, мобильные приложения и получить одну из самых востребованных IT-профессий с нуля.
Инструменты для мобильного тестирования
Главный инструмент QA-инженера — это устройство с установленным приложением. Но у этого инструмента есть недостатки: девайс работает на определенной версии ОС и поменять это сложно.
Эмуляторы
Для решения этой проблемы тестировщик использует эмуляторы. Эмулятор симулирует Android-девайсы на компьютере, чтобы тестировать приложения на различных устройствах и Android API без физического устройства.
DevTools
В настройках Android-устройства есть экран, который называется Developer options. Он скрыт для обычных пользователей. Чтобы его включить, нужно семь раз нажать на поле Build Number на экране информации о системе.
Опции разработчика позволяют включить настройки, которые помогают понять, есть ли проблемы с производительностью приложения, и протестировать «экстремальные» условия его работы.
Например, можно посмотреть частоту обновления экрана или расположение пользовательских элементов.
Сервисы TestFlight и Beta
Если команда QA-инженеров распределенная или нужно протестировать раннюю версию приложения на большом количестве устройств, можно воспользоваться сервисами TestFlight (iOS) и Beta (Android).
С их помощью удаленно устанавливают новые версии приложения, собирают обратную связь и делают баг-репорты, которые будут видны в консоли разработчика.
Снифферы
Помогают понять, на чьей стороне баг и правильно ли приложение отправляет запросы на сервер. С их помощью можно отслеживать весь интернет-трафик с устройства. Снифферы нужны на этапе тестирования — разработчики встраивают их в дебаг-версии своих приложений.
Логи — специальные файлы, которые записывают информацию со снифферов. QA-инженер должен знать, куда пишутся логи, уметь их читать и понимать, что в логах важно, а что нет. Очень часто прямо по логам можно понять, почему в интерфейсе что-то работает неправильно, — а это уменьшит количество времени на исправление ошибки.
Программы имитации состояния, геопозиции, например, помогают воспроизводить и искать баги, а программы записи экрана телефона — продемонстрировать найденный дефект.
Этапы тестирования Android-приложений
Настройка тестового окружения
Работа QA-инженера начинается с настройки тестового окружения. В зависимости от компании этот процесс может немного различаться, но основные шаги примерно одинаковые:
- скачать и установить Android-эмулятор;
- установить Python или другой язык, на котором будут писать тесты;
- скачать репозиторий с тестами;
- зарегистрироваться как бета-тестировщик приложения.
Планирование
Тестирование начинается еще до того, как начнут писать код. Разработчики и QA-инженеры анализируют продукт и погружаются в задачу. На этом этапе возникает много вопросов к руководителю проекта: зачем делать этот продукт? Кто им будет пользоваться и как?
Во всём этом нужно разобраться, чтобы выстроить правильную стратегию тестирования.
Создание тест-кейсов
Как только разработчики и тестировщики получат ответы на все вопросы, они начинают придумывать тест-кейсы — сценарии, при которых приложение должно работать корректно.
При обсуждении тест-кейсов нужно не только учесть позитивные сценарии использования, но и попытаться «сломать» продукт. Например, в процессе работы выключить интернет, попробовать ввести @ вместо имени пользователя, поэкспериментировать с поворотом экрана.
Выполнение тест-кейсов
Можно начинать, как только есть MVP — минимальная версия продукта с работающими функциями. Тут важно не ждать полностью готового решения, а дать обратную связь разработчикам как можно скорее, чтобы они сразу начали исправлять ошибки.
Написание баг-репортов
Если какие-то сценарии не соответствуют ожиданиям, то заполняют баг-репорт — технический документ с полным описанием бага: суть, критичность, приоритет и так далее. Еще в баг-репорте пишут об условиях возникновения ошибки.
После этого разработчики исправляют баг, отдают новую версию приложения QA-инженеру, и процесс повторяется.
На курсе Skypro «Инженер по тестированию» учат не только писать баг-репорты, но и правильно коммуницировать с коллегами из отдела разработки. Тестировщику приходится много общаться с другими членами команды, поэтому ему важно развивать не только практические навыки, но и личные качества.
Некоторые баги воспроизводятся только на Xiaomi или Samsung, а иногда воспроизвести баг и вовсе нельзя, потому что нет нужного устройства или его невозможно получить.
Android-приложения нужно тестировать еще и для разных магазинов приложений: Google Play Market, Huawei App Gallery, Xiaomi market, RuStore. С загрузкой обновления из разных магазинов тоже могут возникать проблемы.
Поддержка устройств Huawei требует отдельную версию приложения — и ее нужно тестировать отдельно.
Размер и плотность экрана
У Android-смартфонов разные производители и разная прошивка. А еще у них разные размер и плотность экрана. Это значит, что интерфейс, который работает хорошо на одном экране, может выглядеть плохо и работать некорректно на другом.
Характеристики железа
Если приложение активно использует низкоуровневые API для взаимодействия с системой, могут возникнуть баги, связанные с железом. И даже если в смартфоне установлен самый новый процессор, производительность будет низкой. Такие баги бывает очень сложно отловить и воспроизвести.
Чтобы уменьшить процент таких багов, большие компании часто собирают свой парк устройств. Стараются подбирать максимально разнообразные, с разным железом: так выше шанс воспроизвести и исправить баг. Еще можно связаться с техподдержкой производителя и надеяться, что бага не будет в новой прошивке смартфона.
Обратная совместимость
Пожалуй, самая интересная тема — это тестирование и разработка приложений для разных версий Android. Не у всех Android-смартфонов есть обновления, а многие компании только недавно убрали поддержку Android 4.4 KitKat, который вышел в 2013 году.
С поддержкой старых версий связаны и проблемы обратной совместимости — когда написанный код работает корректно на свежей версии Android, но есть баги на старых версиях.
Проблемы безопасности
На старых версиях Android могут быть проблемы с безопасностью. Злоумышленникам легче получить доступ к данным пользователей или незаметно сделать скриншот, когда человек вводит данные банковской карты. Это тоже нужно предусмотреть при тестировании.
Программы для автоматизированного тестирования
Разберем основные и посмотрим, зачем они нужны.
MonkeyRunner
MonkeyRunner предоставляет API для написания программ и взаимодействия с Android-устройством не из кода приложения.
Используя MonkeyRunner, можно писать программы на Python, которые установят тестовое приложение на устройство, будут взаимодействовать с интерфейсом приложения, делать скриншоты интерфейса и отправлять их на тестовый сервер.
MonkeyRunner сделан для тестирования приложений на функциональном уровне.
Appium
Appium — это кросс-платформенный фреймворк для автоматизации тестов под нативные, гибридные, мобильные веб- и десктопные приложения. Изначально его написали только для тестирования Android- и iOS-приложений, но он вырос до полнофункционального тестового фреймворка.
Selendroid
Selendroid пишет тесты для нативных, гибридных и мобильных веб-приложений, используя Selenium 2 client API.
Espresso
Espresso — это фреймворк для разработки UI-тестов под Android. Тесты на этом фреймворке пишут в основном разработчики на Java или Kotlin.
Robotium
Robotium — еще один фреймворк для написания тестов. Сейчас проект заброшен, последние обновления были в 2016 году.
BrowserStack и Ranorex
BrowserStack и Ranorex — платные SaaS-решения, которые настраивают тестовую инфраструктуру и тестируют мобильные приложения в облаке без девайсов.
UI Automator
UI Automator — это утилита. По принципам работы похожа на Espresso, но с помощью нее можно писать тесты на функциональном уровне. Они тестируют поведение приложения end to end.
OWASP Zed Attack Proxy
OWASP Zed Attack Proxy тестирует безопасность приложения.
ADB и XCode command line tools
ADB и XCode command line tools нужны для управления устройством, которое подключено к компьютеру. С их помощью можно управлять несколькими устройствами одновременно и тестировать приложения на фермах устройств.
Postman
Postman — программа для взаимодействия с API сервера напрямую, без использования интерфейса приложения. Иногда это бывает легче, чем искать нужный экран и выполнять нужный сценарий в приложении.
Работать с этими и другими сервисами учат на курсе Skypro «Инженер по тестированию». Овладеть основными инструментами тестировщика можно за несколько месяцев — и найти работу еще в процессе обучения. В этом помогут специалисты центра карьеры: составите классное резюме и подготовитесь к собеседованию.
Особенности ручного тестирования
Ручное тестирование не хуже автоматизированного — просто выполняет немного другую задачу. Оно может занимать больше времени, чем прогон автотеста, но иногда намного легче прогнать какие-то сценарии вручную, чем разрабатывать тест.
В краткосрочной перспективе ручное тестирование дешевле и сэкономит много денег бизнесу. Его стоимость зависит от стоимости времени QA-инженера, но не от стоимости инструментов для автоматизации: серверов, ферм устройств, программ и сервисов для тестирования.
Ручное тестирование можно рассматривать как взаимодействие профессионального тестировщика и софта с целью поиска багов. Во время ручного тестирования можно получать фидбэк, что невозможно при автоматизированной проверке.
То есть при взаимодействии с приложением напрямую тестировщик может сравнивать ожидаемый результат с реальным и оставлять рекомендации.
Примеры багов в мобильной разработке
Баги можно поделить в зависимости от приоритетов.
- Minor:
- шрифт в приложении обрезается;
- орфографическая ошибка в тексте;
- дерганая, некрасивая анимация.
- Average:
- пуш-сообщение приходит несколько раз вместо одного;
- открытая клавиатура перекрывает часть UI — и для того, чтобы выполнить ввод, нужно скроллить экран;
- иногда вместо аватара пользователя показывается серый круг.
- Major:
- лента твиттера прыгает вверх, и человек теряет твит, который читал;
- на Google Pixel 6 камера иногда записывала треск вместо звука на видео (этот баг починили только с новой прошивкой и спустя восемь месяцев после релиза устройства).
- Critical:
- в новом IPhone 14 камера в некоторых приложениях не могла сфокусироваться и просто издавала треск;
- невозможно отправить деньги в банковском приложении из-за краша приложения;
- на счете отображается неправильная сумма денег, и пользователи обрывают телефоны поддержки;
- авторизация в приложении перестала работать после обновления.
Краткие итоги
Тестирование мобильных приложений — интересный и многогранный процесс. Путей развития специалиста много. Часто инженеры, которые пришли тестировать приложения, понимают, что им больше нравится тестировать бэкенд, или ручные тестировщики становятся автоматизаторами.
Можно тестировать практически любую часть продукта, поэтому у QA-инженеров есть возможность поучаствовать во всех процессах и взаимодействовать со всеми коллегами цикла разработки: менеджерами, аналитиками, разработчиками.
Одно из главных преимуществ тестирования — специалист не привязан к платформе iOS или Android. Принципы тестирования и инструменты у этих платформ очень похожи, поэтому хороший тестировщик всегда сможет найти работу.
Добавить комментарий