← Теория

📱 Блок 04 — Mobile-тестирование Ozon

UI в мобильном · Баги на устройствах · Трафик · Жизненный цикл · Артефакты

📱 1. Виды мобильного тестирования

ТипЧто тестируемИнструменты
Нативное приложениеAPK/IPA, установленное на устройствоAppium, Espresso, XCUITest
Мобвеб (Mobile Web)Сайт в браузере телефонаSelenium, Playwright, BrowserStack
ГибридноеWebView внутри нативного приложенияAppium + Selenium

Нативное vs Мобвеб vs Гибридное

НативноеМобвебГибридное
УстановкаИз магазина (App Store / Google Play)Через URL в браузереИз магазина, но внутри — WebView
Доступ к устройствуКамера, пуш, контакты, геолокацияОграничен (браузер)Через мост (bridge)
СкоростьБыстроеЗависит от сетиСреднее
ОбновлениеЧерез магазин (не мгновенное)Мгновенное (обновил сервер)Через магазин, контент мгновенно
В вакансии Ozon: "веб, мобвеб и мобильное приложение" — все три типа! Значит нужно знать особенности каждого.

🎨 2. Специфика UI в мобильном

Отличия от десктопа

АспектДесктопМобильное
Размер экранаБольшой, много местаМаленький, всё компактно
ВводМышь + клавиатураTouch (тап, свайп, пинч)
HoverЕсть❌ Нет
КлавиатураВсегда виднаВсплывает, закрывает половину экрана
ОриентацияГоризонтальнаяМожет быть любая (поворот!)
СетьСтабильнаяМожет пропадать (метро, лифт)

Типичные мобильные баги

Touch-события

ДействиеСобытиеЧто проверить
Тапtap / clickКнопка реагирует, не двойной клик
Долгое нажатиеlong pressКонтекстное меню, выделение
Свайпswipe (left/right/up/down)Навигация, удаление элемента
Пинчpinch (zoom)Увеличение карты/картинки
Тяни-толкайpull-to-refreshОбновление контента

🏗 3. Жизненный цикл приложения

Android Activity Lifecycle

CreatedStartedResumed (активно на экране)
↓ свайп вниз / переключение
PausedStoppedDestroyed
↑ возврат
Restarted → Started → Resumed

iOS App Lifecycle

Not RunningInactiveActive (на экране)
↓ кнопка Home / переключение
InactiveBackgroundSuspended
↓ память нужна
Terminated

Что тестировать

СценарийЧто проверить
Свернуть и вернутьДанные на месте, состояние сохранено
Убить процессПри открытии — корректное состояние (не краш)
Входящий звонокПриложение не крашится, после звонка — нормально
Низкая памятьOS убивает приложение — при возврате корректно
Поворот экранаВёрстка не ломается, данные не теряются
Смена языкаПеревод корректный, текст помещается
На собе: "Нужно тестировать жизненный цикл: свернуть/вернуть, убить процесс, входящий звонок, поворот экрана. Данные должны сохраняться, приложение не должно крашиться."

📲 4. Тестирование на реальных устройствах

Эмулятор vs Реальное устройство

Эмулятор / СимуляторРеальное устройство
СкоростьБыстро запуститьНужно физическое устройство
TouchМышь (не то же самое)Настоящий палец ✅
ПроизводительностьСкорость ПК (нереалистичная)Реальная ✅
Push / Камера / GPSЧасто работает кривоРаботает реально ✅
РазнообразиеЛюбая комбинацияОграничено парком устройств
СтоимостьБесплатноДорого (или BrowserStack)

Что тестировать на реальном устройстве

Инструменты

ИнструментЧто делает
BrowserStackОблачные реальные устройства (ты уже используешь!)
ADBУправление Android-устройством с компьютера
XcodeСимуляторы iOS (только на Mac)
Android StudioЭмуляторы Android
CharlesПерехват трафика с мобильного (через прокси)

🌐 5. Трафик через мобильное устройство

Для мобильного QA нет DevTools → нужно перехватывать трафик через прокси.

Как настроить Charles для мобилки

  1. Компьютер и телефон в одной WiFi-сети
  2. Узнать IP компьютера (например 192.168.1.100)
  3. На телефеле: Настройки WiFi → Прокси → Вручную → IP + порт Charles (8888)
  4. Установить SSL-сертификат Charles на телефон (чтобы видеть HTTPS)
  5. Всё — Charles показывает весь трафик телефона

Что можно делать

На собе: "Для анализа трафика мобильного приложения используем Charles Proxy. Настраиваем телефон на прокси компьютера. Можно видеть запросы, подменять ответы, эмулировать плохую сеть."

📋 6. Артефакты для баг-репорта

В мобильном тестировании баг-репорт должен содержать больше информации, чем в вебе.

Что обязательно указать

ПолеПочему важноПример
УстройствоБаг может быть только на конкретномiPhone 14 Pro, Samsung S24
ОСiOS vs Android — разное поведениеiOS 17.4, Android 14
Версия приложенияМожет быть пофикшено в новойv2.3.1 (build 456)
ОриентацияБаг только при повороте?Портретная / Ландшафтная
СетьWiFi / 4G / без сетиWiFi, плохой 3G
Скриншот / ВидеоВоспроизведение багаСкрин + запись экрана
ЛогиCrash-лог для разработчикаADB logcat, Console (iOS)

Как получить логи

ПлатформаКакКоманда
AndroidADB logcatadb logcat > logs.txt
iOSConsole.app (Mac) или XcodeDevices → Open Console
На собе: "В мобильном баг-репорте обязательно: устройство, ОС, версия приложения, ориентация, сеть. Плюс скриншот/видео и логи (ADB logcat для Android, Console для iOS)."

🍎🤖 7. iOS vs Android — отличия для QA

АспектiOSAndroid
УстройстваМало моделей, предсказуемоОгромное разнообразие
ОСКонтролируемая AppleПроизводители добавляют свои оболочки
НавигацияСвайп назад от левого краяКнопка Back (системная)
ТаббарВнизу (UITabBar)Внизу (BottomNavigation)
НотификацииЦентр уведомлений (сверху вниз)Шторка (сверху вниз)
ЖестыFace ID → свайп вверх для HomeЗависит от модели (кнопка / жесты)
ВозвратСвайп слеваСистемная кнопка ←
ТестированиеНужен Mac для сборки/симулятораADB работает с любого ПК
На собе: "Android — больше разнообразие устройств и оболочек → больше комбинаций для тестирования. iOS — меньше моделей, но нужны Mac/Xcode. Главное отличие навигации: iOS — свайп назад, Android — системная кнопка Back."

💬 Вопросы для самопроверки