Skip to content

Repository files navigation

Мобильное тестирование

Проект по тестированию мобильных приложений: эмуляторы, логи, снифферы трафика

О проекте

В проекте изучены особенности тестирования мобильных приложений под Android и iOS. Освоены работа с эмуляторами в Android Studio, снятие логов через Logcat, перехват и анализ трафика с помощью Charles Proxy. Рассмотрены типы мобильных приложений, мобильные ОС и их отличия, инструменты для дистрибуции тестовых сборок.

Что выполнено

📱 Задание 1. Мобильные операционные системы

Изучены способы доставки тестовых сборок для iOS. Проанализированы 3 сервиса: TestFlight (Apple, бесплатно, но ограничения по количеству тестировщиков), Firebase App Distribution (Google, бесплатно до определённого лимита, интеграция с Firebase), Diawi (платный, просто для быстрых сборок).

Составлена сравнительная таблица по критериям: стоимость, простота настройки для разработчика, простота установки для тестировщика, ограничения. Дана рекомендация для стартапа с ограниченным бюджетом: Firebase App Distribution как оптимальный баланс функциональности и цены.

Составлен чек-лист внешних прерывателей для мобильного приложения (15 пунктов):

  • Входящий звонок, SMS, уведомления от других приложений
  • Низкий заряд батареи, режим энергосбережения
  • Потеря сети, переключение Wi-Fi/4G/5G
  • Поворот экрана, сворачивание приложения, открытие шторки
  • Блокировка экрана, выключение/включение экрана
  • Подключение/отключение зарядки, наушников, Bluetooth
  • Смена языка системы, смена часового пояса
  • Скриншот, запись экрана, вызов голосового ассистента
  • Перегрузка памяти (открыто много приложений), вызов из другого приложения

Для 3 критичных прерываний финансового приложения написаны сценарии тестирования:

  1. Входящий звонок во время перевода денег — проверка сохранения состояния после возврата
  2. Потеря сети при подтверждении платежа — проверка отката транзакции и уведомления
  3. Низкий заряд батареи (1%) — проверка предупреждения и корректного завершения

Изучена тема утечки памяти в мобильных приложениях. Написано сообщение коллеге с объяснением проявлений: замедление работы, вылеты (OutOfMemoryError), повышенное потребление батареи, нагрев устройства.

📲 Задание 2. Типы мобильных приложений

Проанализированы 4 типа приложений для сервиса доставки еды с ограниченным бюджетом и сроком 4 месяца до прототипа.

Тип Суть Плюсы Минусы
Нативное Отдельно для iOS и Android на родных языках Макс. производительность, полный доступ к API устройства Дорого, долго, два параллельных процесса
Гибридное WebView + оболочка, один код Быстрая разработка, один код для двух платформ Низкая производительность, ограниченный доступ к API
Веб-приложение Адаптивный сайт, не требует установки Макс. скорость запуска, не нужен магазин приложений Нет push-уведомлений, ограниченный доступ к геолокации
Кроссплатформенное Flutter/React Native, один код в нативный Близко к нативу по производительности, один код Сложная отладка, зависимость от фреймворка

Выбран тип: кроссплатформенное приложение (React Native или Flutter).

Аргументы:

  1. Один код под обе платформы — укладываемся в бюджет и срок 4 месяца
  2. Доступ к нативным API (геолокация, push, камера, платежи) есть через плагины
  3. Производительность достаточна для MVP-прототипа, близка к нативной

Риски для качества:

  1. Проблемы с производительностью при интенсивной работе с геолокацией
  2. Ошибки на одной из платформ из-за особенностей плагинов
  3. Сложность отладки мостов между общим кодом и нативными модулями

Рекомендации по фокусу тестирования: тщательная проверка push-уведомлений на обеих платформах, тестирование геолокации в разных условиях (город, тоннель, отсутствие GPS), нагрузочное тестирование платёжного шлюза.

🖥️ Задание 3. Работа с Android Studio

Установлена Android Studio. Создан эмулятор с поддержью Play Market (Pixel 4, API 33). Приложен скриншот запущенного эмулятора.

Изучен процесс включения режима разработчика на Android: 7 нажатий на Build number в Настройках → О телефоне. Сделан скриншот раздела Для разработчиков.

Изучена функция Logcat в Android Studio:

  • Фильтрация по уровню (Verbose, Debug, Info, Warn, Error, Assert)
  • Фильтрация по тегу (поиск конкретного компонента приложения)
  • Фильтрация по PID (идентификатор процесса)
  • Поиск по ключевым словам

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

Изучены гайды по созданию симулятора в Xcode. Составлена пошаговая инструкция для коллеги:

  1. Установить Xcode из App Store (только на macOS)
  2. Открыть Xcode → Preferences → Platforms
  3. Выбрать нужную версию iOS и скачать симулятор
  4. В меню Window → Devices and Simulators
  5. Нажать + → выбрать тип устройства и версию ОС
  6. Запустить симулятор через Xcode → Open Developer Tool → Simulator

Важные моменты: Xcode работает только на macOS, для скачивания симулятора нужно минимум 5-10 ГБ свободного места, старые версии iOS могут быть недоступны для скачивания.

📝 Задание 4. Логи и логирование

Сценарий: приложение онлайн-банка аварийно завершается при просмотре истории операций.

Определены уровни логов, важные для анализа:

  • ERROR — фатальные ошибки, приводящие к крашу
  • WARN — предупреждения перед ошибкой (некорректные данные, таймауты)
  • DEBUG — детали запросов к серверу и ответов

Обоснование: ERROR покажет место краша, WARN поможет найти предшествующие аномалии, DEBUG — параметры запроса истории.

Механизм получения логов:

  • Android: Logcat через Android Studio или adb logcat
  • iOS: Console.app на macOS или устройства Xcode

Базовые шаги:

  1. Подключить устройство к компьютеру
  2. Открыть Android Studio → View → Tool Windows → Logcat
  3. Выбрать устройство и пакет приложения
  4. Воспроизвести краш

Фильтры для Logcat:

  • По тегу: package:com.bank.app
  • По уровню: level:ERROR
  • По ключевым словам: "history" или "transaction"
  • Комбинация: package:com.bank.app level:ERROR "history"

Драфт баг-репорта:

Заголовок: Приложение онлайн-банка аварийно завершается при попытке просмотреть историю операций за последний месяц

Критичность: Critical Серьёзность: High

Шаги воспроизведения:

  1. Открыть приложение онлайн-банка
  2. Авторизоваться
  3. Перейти в раздел История операций
  4. Выбрать период Последний месяц
  5. Нажать Показать

Ожидаемый результат: Отображается список операций за последний месяц

Фактический результат: Приложение аварийно завершается, возврат на домашний экран

🔍 Задание 5. Charles Proxy

Установлен Charles Proxy. Настроены сертификаты: SSL-сертификат на ПК (Help → SSL Proxying → Install Charles Root Certificate), на мобильном устройстве (настройки прокси на IP и порт 8888, установка сертификата через chls.pro/ssl).

Изучены функции Charles Proxy и их применение в тестировании:

Функция Назначение Практическая задача тестировщика
Фильтрация запросов Отображение только нужных запросов Отфильтровать запросы конкретного домена при анализе
Работа с логами Сохранение, экспорт, очистка сессий Сохранить сессию с багом для разработчика
Зашифрованный трафик Расшифровка HTTPS через установку сертификата Проверка содержимого защищённых запросов/ответов
Map remote Перенаправление запросов на другой сервер Тестирование на тестовом бэкенде без смены конфигурации
Breakpoint Остановка запроса/ответа для редактирования Изменение данных "на лету" для проверки обработки
Rewrite Автоматическое изменение заголовков/URL/тел Подмена цены, статуса, заголовков без ручного вмешательства
Throttling Симуляция скорости и качества сети Проверка работы приложения при плохом соединении

Практическая реализация на интернет-магазине (выбран demo.opencart.com):

Breakpoints — перехват и редактирование запроса Создан скринкаст. Настроен Breakpoint на запрос добавления товара в корзину. В перехваченном запросе изменено название товара на "Тестовый товар". После отправки изменения в корзине отображается новое название.

Map Local — подмена картинки товара Создан скринкаст. Подготовлена локальная картинка. Настроен Map Local: URL запроса картинки → путь к локальному файлу. При загрузке страницы товара вместо оригинальной картинки отображается локальная.

Rewrite — подмена цены Создан скринкаст. Настроено правило Rewrite: Response Body — замена старой цены на новую (999 руб → 1 руб). После обновления страницы цена изменилась.

Throttle — симуляция медленной сети Включен Throttle: 3G (300 kbps, задержка 150 ms). Поведение сайта до и после:

  • До: картинки и контент загружались быстро (<1 сек)
  • После: загрузка картинок заметно замедлилась (5-10 сек), сначала отображались плейсхолдеры, прерывать загрузку можно нажатием "Stop"

Технологии и темы

Тема Что освоено
Мобильные ОС Android vs iOS, способы доставки тестовых сборок
Типы приложений Нативные, гибридные, веб, кроссплатформенные — выбор под бюджет и сроки
Эмуляторы/симуляторы Различия, создание эмулятора в Android Studio, Xcode симуляторы
Логи Logcat, уровни (ERROR/WARN/DEBUG), фильтрация, анализ крашей
Снифферы трафика Charles Proxy: установка сертификатов, фильтрация, breakpoints, rewrite, throttle, map local/remote

Структура проекта

Файл Содержание
src/task_1.md Сравнение сервисов iOS, чек-лист прерываний, сценарии тестирования, утечка памяти
src/task_2.md Анализ типов приложений, выбор и обоснование для доставки еды
src/task_3.md Скриншоты Android Studio, эмулятора, Logcat, инструкция по Xcode
src/task_4.md Баг-репорт с логами, анализ уровней и фильтров
src/task_5.md Скринкасты Breakpoints, Map Local, Rewrite, анализ Throttle

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors