С чего начать тестирование мобильных приложений
t.me/qa_chillout
Привет! Эта статья рассчитана на тех, кто уже имеет опыт работы тестировщиком — вы тестируете веб-приложения или API, знаете основы клиент-серверной архитектуры, понимаете, как работает HTTP и умеете работать с инструментами вроде Postman, Swagger или DevTools.
Теперь вы хотите перейти к тестированию мобильных приложений. Например, ваш продукт расширяется и вам надо начать погружаться в мобайл.
Чем мобильное тестирование отличается от веба и API
Когда вы начинаете работать с мобильными приложениями после веба или API, важно понимать: базовые принципы тестирования остаются теми же (функциональность, стабильность, безопасность), но появляются новые.
1. Устройства и платформы
- Фрагментация: на рынке десятки моделей смартфонов и планшетов: разные диагонали экранов, версии Android и iOS. Различаются форм-факторы и конфигурации экранов — от моноблоков до складных устройств (Flip/Fold), от вырезов под камеру («чёлка») до Dynamic Island. Всё это влияет на отображение элементов интерфейса и адаптивность верстки.
- Особенности платформ: Android и iOS по-разному реализуют UI-компоненты, систему разрешений, работу с уведомлениями.
2. Пользовательский интерфейс (UI/UX)
- На вебе вы работаете с браузером, который стандартизирует отображение.
- В мобилке — у каждого устройства своя плотность пикселей (dpi), своя навигация (жесты, кнопки, свайпы).
3. Интеграция с системой
- Приложение использует камеру, микрофон, геолокацию, push-уведомления, доступ к памяти.
- Нужно проверять права доступа и корректность работы в разных состояниях.
4. Сеть и ресурсы
- Пользователь может быть в метро без сети, на 3G или Wi-Fi.
- Мобильные приложения должны корректно обрабатывать обрывы соединения и ограниченные ресурсы батареи/памяти.
5. Обновления и установка
- Веб-приложение обновляется на сервере, и пользователь видит новые изменения сразу.
- В мобильном мире приходится ставить апдейты через App Store или Google Play, а часть пользователей остаётся на старых версиях. Кроме того, каждое обновление проходит ревью в сторах — проверку на соответствие правилам и политикам платформ. Это влияет на релизный цикл: баг или несоответствие требованиям стора (например, отсутствующее разрешение на сбор данных) может задержать публикацию или привести к отклонению сборки, а также влияет на стоимость бага в целом.
Инструменты
Прежде чем тестировать мобильные приложения, важно подготовить окружение. Для начала стоит обзавестись устройствами: хотя бы одним реальным смартфоном на Android или iOS и эмулятором или симулятором.
Эмуляторы (Android Studio AVD) и симуляторы (Xcode Simulator) удобны для быстрых проверок, но всегда нужно помнить, что реальное устройство надёжнее — только на нём можно проверить производительность, работу с железом без моков (камера, GPS, датчики).
Следующий шаг — установка инструментов. Даже если вы не планируете писать код, полезно поставить Android Studio или Xcode. Эти IDE позволяют работать со сборками и логами, подключать эмуляторы и удобно управлять приложением.
Для Android поставьте ADB (Android Debug Bridge). С его помощью можно ставить и удалять apk-файлы, снимать логи, делать скриншоты и управлять устройством через консоль.
На iOS аналогичную роль частично выполняет Xcode и его утилиты, например simctl для работы с симуляторами.
Ещё один важный слой инструментов — это снифферы трафика, такие как Charles Proxy, Fiddler или Proxyman. С их помощью можно перехватывать и анализировать сетевые запросы между приложением и сервером, проверять корректность передаваемых данных, заголовков и параметров, а также отлавливать лишние или повторяющиеся обращения к API. Это незаменимые помощники для локализации багов.
Тестирование
Когда окружение готово, можно переходить непосредственно к тестированию. Начните с установки приложения. Обычно у вас есть два варианта: тестовая сборка, которую вы получаете от разработчиков или через систему дистрибуции (например, Firebase App Distribution, TestFlight или просто apk/ipa-файл), и релизная версия из App Store или Google Play. Сравнение поведения этих версий полезно: тестовая может содержать отладочные логи или новые фичи (которых ещё нет у пользователей), а релизная — максимально приближена к тому, что видят пользователи.
Параллельно с ручным тестированием всегда смотрите логи. На Android для этого используется Logcat, на iOS — системная Console. Это поможет увидеть дублирующиеся вызовы, ошибки при обработке ответов или повторные попытки при нестабильной сети.
Например, приложение при отключении сети начинает многократно повторять один и тот же запрос, такие ретраи лучше всего видны в логах:
- Android — Logcat: фильтруйте по тегу или компоненту сетевого слоя —
adb logcat | grep -i YourNetworkTag - iOS — Xcode или Console.app: подключите устройство к Mac и просматривайте системные и app-логи.
Отдельно проверяйте работу приложения в разных сетевых условиях. Пользователи редко находятся в идеальных условиях, поэтому важно симулировать отключение интернета, переключение с Wi-Fi на мобильные данные или работу на слабом соединении (3G). Это можно делать в реальных условиях (например, выйти из зоны покрытия) и с помощью встроенных инструментов — Network Link Conditioner на iOS или эмуляции сети в Android Studio. Также многие снифферы (Charles, Proxyman и др.) умеют ограничивать скорость, добавлять задержку и потерю пакетов.
Типичные ошибки
Многие забывают про поведение при блокировке и разблокировке экрана, смене ориентации, потере сети, низком заряде батареи, ограничении памяти, работе в фоне, получении уведомлений. Эти сценарии напрямую связаны с особенностями мобильной среды и часто становятся источником критических багов.
Ещё одна типичная проблема — полагаться исключительно на эмуляторы и симуляторы. Они не отражают реальных условий: на них нельзя полностью проверить расход батареи, корректность работы push-уведомлений, влияние слабого сигнала сети или работу датчиков (камера, гироскоп, GPS). Начинающие тестировщики часто делают выводы на основе «идеальной» среды, а потом сталкиваются с неожиданными багами на реальных устройствах.
Нередко новички не обращают внимания на версионность платформ и устройств. В мобилке же один и тот же экран может выглядеть нормально на Android 14, но ломаться на Android 11, или отлично работать на iPhone 14, но зависать на iPhone SE с меньшим экраном и другим железом. Игнорирование этой фрагментации приводит к тому, что часть багов обнаруживают только пользователи в отзывах стора.
Часто встречается и недооценка сценариев «нестабильности»: что будет, если во время загрузки экрана отключить интернет, если во время оплаты приложения разрядится батарея или если пользователь сменит ориентацию экрана. Такие ситуации редко приходят в голову новичкам, но именно они больше всего похожи на реальные условия использования приложения.
Ещё одна ошибка — фокус только на функциональности и забывание про пользовательский опыт. Например, формально приложение работает: экран открывается, кнопки кликаются, данные отправляются. Но при этом навигация неудобная, анимации дергаются, текст обрезается на маленьком экране. Новички часто упускают такие «мелочи», хотя именно из-за них пользователи ставят низкие оценки в сторах.
И наконец, начинающие тестировщики редко системно работают с логами. Многие ограничиваются визуальной проверкой и не заглядывают в Logcat или Console. В результате баги, которые можно было бы поймать на раннем этапе (ошибки авторизации, проблемы с кэшем, утечки памяти), остаются незамеченными. Привычка всегда снимать логи параллельно с тестированием сильно повышает шанс найти скрытые дефекты.
Статьи, которые помогут углубиться в мир мобильного тестирования
Android
- Жизненный цикл android приложения
- Что такое wake lock в Android
- Режим разработчика в Android - часть 1
- Режим разработчика в Android - часть 2
- Принцип работы ADB
- Android Debug Bridge (adb)
- Android App Bundle
- Что не упустить при тестировании приложений на Android
iOS
- Что не упустить при тестировании приложений на iOS
- simctl command-line tool
- Жизненный цикл ios приложения
- Режим разработчика в iOS
Общее
- Тестирование диплинков в мобильных приложениях
- Тестирование доступности
- Тестирование производительности мобильных приложений
- Тестирование push-уведомлений в мобильных приложениях
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».