Manual Testing

БЛОК 12. Мобильное тестирование — 29. Основы mobile testing

📚 25 вопросовПройти тест →
Лекция

БЛОК 12. Мобильное тестирование — 29. Основы mobile testing

Manual Testing

БЛОК 12. Мобильное тестирование — 29. Основы mobile testing

🧭 Введение: почему мобильное тестирование отличается от веба

В мобильных приложениях баги часто проявляются не только в логике экрана, но и в поведении устройства.
Один и тот же сценарий может пройти на эмуляторе и упасть на реальном телефоне из-за сети, памяти, жестов или прерываний.
Поэтому mobile testing требует отдельного подхода и дисциплины.
💡 Совет:
Проверяй мобильный сценарий не только «внутри приложения», но и в контексте устройства и окружения.
Вывод:
Базовое mobile testing — это проверка приложения вместе с реальным поведением телефона.

⚠️ Проблема -> решение

Проблема: junior QA часто проверяет мобильную фичу как обычный web-flow и пропускает дефекты, связанные с устройством.
Решение: строить проверку по семи обязательным зонам:
  • устройство (эмулятор + реальное);
  • installation/update/uninstall;
  • permissions;
  • ориентация;
  • жесты и системная навигация;
  • прерывания (звонок/уведомления/сворачивание);
  • сеть (медленная, нестабильная, потеря соединения).
🟢 Если совсем просто:
В mobile важно не только «что делает приложение», но и «что в этот момент делает телефон».
🎯 Как понять, что этап прошел успешно:
Сценарий стабильно проходит на нескольких устройствах и не ломается при типичных мобильных сбоях.

🛠️ Чем помогает и как работает

Системный mobile-подход снижает риск сюрпризов после релиза.
Как это работает:
  • Шаг 1: фиксируем device matrix (ОС, версия, тип устройства, экран).
  • Шаг 2: прогоняем базовый happy path на эмуляторе для быстрой обратной связи.
  • Шаг 3: подтверждаем критичные потоки на реальном устройстве.
  • Шаг 4: проверяем installation/update/uninstall сценарии.
  • Шаг 5: проверяем permissions (allow/deny/settings).
  • Шаг 6: тестируем ориентацию, жесты, прерывания и сеть.
  • Шаг 7: фиксируем результат в QA summary с device/context.
Вывод:
Mobile testing — это не один прогон на «удобном телефоне», а контролируемая проверка в разных мобильных условиях.

📚 Ключевые термины (простыми словами)

  • Эмулятор — программная модель устройства на компьютере.
  • Реальное устройство — физический телефон/планшет, где видны реальные аппаратные эффекты.
  • Device matrix — список устройств/ОС, на которых обязательна проверка.
  • Orientation — ориентация экрана (portrait/landscape).
  • Gesture — жест (tap, long press, swipe, pinch, back swipe).
  • Interruption — внешнее прерывание сценария (звонок, уведомление, блокировка экрана).
  • Network loss — потеря или деградация сети во время действия пользователя.
  • Permission — системное разрешение на доступ к функциям устройства (camera/location/microphone и т.д.).
  • Clean install — первая установка «с нуля».
  • Update path — обновление приложения с предыдущей версии.
  • Uninstall/Reinstall — удаление и повторная установка приложения.

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

Эмулятор очень полезен для скорости, но не заменяет реальный телефон на критичных сценариях.
🟢 Если совсем просто:
Эмулятор — для быстрых проверок, реальный девайс — для финального подтверждения качества.
🎯 Как понять, что этап прошел успешно:
Критичный поток проверен и на эмуляторе, и на реальном устройстве.
Назначение:
Баланс скорости тестирования и реалистичности результатов.
Простыми словами:
Эмулятор помогает работать быстро, реальное устройство показывает, как это будет у пользователя.
Для новичка:
Если проверяешь авторизацию, платеж, загрузку фото или push-логику — обязательно дублируй тест на реальном устройстве.
Аналогия:
Как тренировка на симуляторе и реальный выезд на дорогу.
Пример: На эмуляторе камера работает стабильно, а на реальном устройстве при первом открытии неправильно отрабатывает permission flow.
🔎 Как это происходит на практике:
QA делает быстрый smoke на эмуляторе, затем критичные сценарии подтверждает на 1–2 реальных устройствах из device matrix.
Характеристики:
  • эмулятор: быстро, удобно, автоматизируемо;
  • реальное устройство: ближе к прод-реальности;
  • вместе дают лучший результат.
Когда использовать:
Эмулятор — каждый день для быстрых проверок; реальные устройства — на ключевых потоках и перед релизом.
Вывод:
Для mobile QA важна связка двух подходов, а не выбор «или/или».

2. Installation / Update / Uninstall

Для mobile это одна из базовых зон: приложение живет версиями, а пользователь часто обновляет его без «чистого старта».
Именно здесь появляются баги миграции данных, первый запуск после update и потери состояния.
🟢 Если совсем просто:
Нужно проверить, как приложение ведет себя при установке, обновлении и переустановке, а не только «после обычного запуска».
🎯 Как понять, что этап прошел успешно:
Сценарии clean install, update и uninstall/reinstall проходят без потери критичных пользовательских данных.
Назначение:
Проверить жизненный цикл приложения между версиями.
Простыми словами:
Приложение должно стабильно переживать путь «поставили -> обновили -> снова открыли».
Для новичка:
Минимальный набор:
  1. чистая установка,
  2. обновление с предыдущей версии,
  3. первый запуск после update,
  4. удаление и переустановка,
  5. проверка, какие данные должны сохраниться, а какие — нет.
Аналогия:
Как переезд в новую квартиру: важно, что перенеслось корректно, а что должно быть «с нуля».
Пример: После update приложение открывается, но локальные настройки языка сбрасываются, хотя по требованиям должны сохраняться.
🔎 Как это происходит на практике:
QA ставит v1.17, делает пользовательские настройки, обновляет до v1.18, проверяет первый запуск и сверяет expected сохранение данных.
Характеристики:
  • ловит баги миграции;
  • важен для релизов с изменением storage/schema;
  • критичен для user settings и авторизации.
Когда использовать:
В каждом релизе, особенно если менялись локальные данные, авторизация, onboarding, кеш или база приложения.
Вывод:
Installation/update/uninstall — must-have блок даже для базового mobile testing.

3. Permissions: camera, microphone, location, notifications, files

Разрешения — частая зона дефектов в мобильных приложениях: логика может быть правильной, но пользовательский путь ломается на системном диалоге.
🟢 Если совсем просто:
Нужно проверить не только «allow», но и «deny», повторный запрос и возврат через settings.
🎯 Как понять, что этап прошел успешно:
Каждое критичное permission-сценарий обрабатывается предсказуемо: allow/deny/retry/settings.
Назначение:
Проверить корректную работу приложения с системными разрешениями.
Простыми словами:
Если пользователь не дал доступ, приложение должно безопасно объяснить, что делать дальше.
Для новичка:
Для каждого permission проверяй:
  1. первый запрос,
  2. отказ,
  3. повторный запрос (если допустимо),
  4. переход в settings и возврат в приложение.
Аналогия:
Как доступ в здание по пропуску: важно не только «пустили», но и что делать, если пропуск отклонен.
Пример: Пользователь отказал в доступе к геолокации; приложение должно показать fallback и кнопку «Открыть настройки», а не падать.
🔎 Как это происходит на практике:
QA проверяет flow на чистой установке, потом сбрасывает permissions в системе и повторяет сценарий deny -> settings -> allow.
Характеристики:
  • тесно связано с системными диалогами iOS/Android;
  • часто ломается на edge-сценариях;
  • критично для camera/location/notifications.
Когда использовать:
Во всех фичах, где есть доступ к датчикам, файлам, пушам, геоданным и микрофону.
Вывод:
Permission-testing — базовая часть mobile QA, без которой лекция и проверка будут неполными.

4. Ориентация и адаптация интерфейса

Поворот экрана часто ломает состояние формы, позиционирование элементов и доступность кнопок.
🟢 Если совсем просто:
Если приложение не держит поворот экрана, пользователь теряет данные и контекст.
🎯 Как понять, что этап прошел успешно:
После смены ориентации состояние экрана корректно сохраняется и UI остается usable.
Назначение:
Проверить устойчивость интерфейса к смене portrait/landscape.
Простыми словами:
Телефон поворачивается — приложение не должно «ломаться» или сбрасываться без причины.
Для новичка:
Проверяй не только верстку, но и состояние: введенный текст, выбранные фильтры, текущий шаг формы.
Аналогия:
Как держать разговор при смене положения телефона, не начиная всё сначала.
Пример: Пользователь заполняет форму, поворачивает экран, и половина полей очищается — это дефект.
🔎 Как это происходит на практике:
QA делает поворот на каждом критичном шаге: ввод данных, подтверждение, экран успеха/ошибки.
Характеристики:
  • проверка layout и состояния;
  • важна на длинных формах и checkout-потоках;
  • часто ловит скрытые UI-дефекты.
Когда использовать:
Во всех экранах с формами, media, таблицами, картами и длительными пользовательскими потоками.
Вывод:
Ориентация — обязательная часть mobile smoke и regression.

5. Жесты и системная навигация

Мобильный пользователь чаще взаимодействует жестами, чем кнопками интерфейса.
🟢 Если совсем просто:
Если жесты обработаны плохо, пользователь «вылетает» из сценария.
🎯 Как понять, что этап прошел успешно:
Ключевые действия корректно работают при tap/swipe/back и не конфликтуют с системной навигацией.
Назначение:
Проверить корректность пользовательских жестов и переходов.
Простыми словами:
Приложение должно правильно понимать движения пользователя и не путать их с системными жестами.
Для новичка:
Проверяй минимум: tap, long press, swipe list, back gesture, pull-to-refresh.
Аналогия:
Как вежливый диалог: система не должна «перебивать» пользователя его же жестами.
Пример: На экране деталей товара back swipe закрывает весь поток покупки вместо возврата на предыдущий шаг.
🔎 Как это происходит на практике:
QA прогоняет один и тот же шаг разными действиями: кнопкой «Назад», системным жестом, свайпом.
Характеристики:
  • сильно влияет на UX;
  • особенно критично на iOS gesture navigation;
  • частый источник «редких» дефектов.
Когда использовать:
Во всех многошаговых и навигационных сценариях.
Вывод:
Проверка жестов — это не «дополнительно», а базовая часть mobile качества.

6. Прерывания: звонок, уведомления, блокировка, возврат

Реальный пользователь почти всегда сталкивается с прерываниями: уведомление, входящий звонок, переключение в другое приложение.
🟢 Если совсем просто:
После прерывания пользователь должен вернуться в приложение без потери важного состояния.
🎯 Как понять, что этап прошел успешно:
Сценарий корректно продолжается после паузы, без дублирования действий и потери данных.
Назначение:
Проверить устойчивость приложения при переходе в background/foreground.
Простыми словами:
Приложение не должно «забыть», что пользователь делал до прерывания.
Для новичка:
На критичных шагах всегда проверь: свернуть приложение, вернуть, заблокировать экран, открыть снова.
Аналогия:
Как поставить разговор на паузу и продолжить с того же места.
Пример: Во время оплаты приходит звонок; после возврата форма повторно отправляется и создаёт дубликат транзакции.
🔎 Как это происходит на практике:
QA на шаге подтверждения действия делает interruption, потом возвращается и проверяет, что сценарий консистентен.
Характеристики:
  • критично для платежей и форм;
  • часто связано с гонками и дубликатами;
  • требует проверки реальным устройством.
Когда использовать:
На checkout, login, загрузке медиа, отправке форм и всех операциях с риском повторной отправки.
Вывод:
Interruption testing — один из самых практичных способов поймать «дорогие» mobile-баги до релиза.

7. Сеть: slow network, timeout, offline

Мобильная сеть нестабильна по природе: переходы между Wi‑Fi/LTE, слабый сигнал, временная потеря соединения.
🟢 Если совсем просто:
Mobile-приложение должно корректно переживать плохую сеть, а не просто падать.
🎯 Как понять, что этап прошел успешно:
При деградации сети пользователь получает понятный статус и может безопасно продолжить сценарий.
Назначение:
Проверить поведение приложения на нестабильной сети и в offline.
Простыми словами:
Если интернет «прыгает», приложение должно вести себя предсказуемо.
Для новичка:
Проверь минимум: slow 3G, полное отключение сети во время действия, возврат сети и повтор.
Аналогия:
Как разговор по плохой связи: важно не потерять смысл и не повторить важную команду дважды.
Пример: Пользователь отправил форму в момент потери сети, нажал повторно и создал дублирующую заявку.
🔎 Как это происходит на практике:
QA включает network throttling, делает действие, отключает сеть на критичном шаге и проверяет восстановление потока.
Характеристики:
  • проверка error handling;
  • проверка retry-логики;
  • проверка идемпотентности действий.
Когда использовать:
Во всех сетевых сценариях: логин, загрузка, отправка данных, покупки.
Вывод:
Network testing в mobile — это проверка надежности продукта в реальных условиях пользователя.

🆚 Сравнение: веб-подход vs mobile-подход

АспектТолько web-подходMobile-подход
УстройствоЧасто один браузерDevice matrix + реальные девайсы
ВзаимодействиеКлики/клавиатураЖесты + системная навигация
ПрерыванияРедко критичныОбязательная зона риска
СетьОбычно стабильнееНестабильная сеть — норма
Жизненный циклОбновление страницыInstall/Update/Uninstall сценарии
PermissionsРедко критичныОбязательны для camera/location/push
Вывод:
Mobile testing требует отдельной карты рисков, а не простого переноса web-практик.

✅ Must-know факты

  • Эмулятор не заменяет реальное устройство на критичных сценариях.
  • Installation/update/uninstall нужно проверять в каждом релизе как отдельный базовый блок.
  • Первый запуск после update часто ловит миграционные дефекты.
  • Permission-flow нужно проверять в четырех режимах: first ask, deny, повторный запрос, settings и возврат.
  • Проверка ориентации должна включать не только верстку, но и сохранение состояния.
  • Жесты и системная кнопка/жест «назад» часто ведут к разному поведению.
  • Прерывания (звонок, сворачивание, lock screen) — обязательный тест для ключевых потоков.
  • Потеря сети и повтор действия — типичный источник дубликатов.
  • В баг-репорте по mobile всегда указывай устройство, ОС, версию приложения и условия сети.

Частые мифы

Миф: Если на эмуляторе всё работает, значит релиз безопасен.
Как правильно: Ключевые сценарии нужно подтверждать на реальном устройстве.
📎 Почему это важно: Аппаратные и системные особенности часто проявляются только на физическом девайсе.
Миф: Installation/update — это задача разработчика, QA достаточно проверить «с нуля».
Как правильно: QA обязан проверять путь обновления и первый запуск после update.
📎 Почему это важно: Миграционные дефекты чаще всего видны именно между версиями.
Миф: Если permission один раз дали, дальше тестировать нечего.
Как правильно: Нужно проверять deny, повторный запрос и возврат через settings.
📎 Почему это важно: Большая часть permission-багов проявляется не в happy path.
Миф: Прерывания проверять не обязательно, это редкость.
Как правильно: Прерывания — обычная часть мобильного поведения пользователя.
📎 Почему это важно: Именно на прерываниях часто появляются дубли, зависания и потеря контекста.
Миф: Сеть проверяется только на «есть/нет интернета».
Как правильно: Нужно тестировать деградацию: slow network, timeout, обрыв во время действия, восстановление.
📎 Почему это важно: Большая часть mobile-проблем связана именно с нестабильной сетью.

Часто спрашивают на собеседованиях

Вопрос: Чем mobile testing отличается от web testing на базовом уровне? ✅ Ответ: В mobile добавляются обязательные зоны риска: устройства, installation/update/uninstall, permissions, ориентация, жесты, прерывания и нестабильная сеть.
Вопрос: Можно ли тестировать mobile-приложение только на эмуляторе? ✅ Ответ: Нет, эмулятор полезен для скорости, но критичные потоки нужно подтверждать на реальном устройстве.
Вопрос: Что входит в базовую проверку installation/update? ✅ Ответ: Clean install, обновление с предыдущей версии, первый запуск после update, uninstall/reinstall и проверка сохранения пользовательских данных по требованиям.
Вопрос: Как тестировать permissions на базовом уровне? ✅ Ответ: Проверять first ask, deny, повторный запрос, переход в settings и возврат в приложение с новым состоянием разрешения.
Вопрос: Что считается обязательным interruption-сценарием? ✅ Ответ: Как минимум: входящий звонок/уведомление, сворачивание приложения, блокировка экрана и возврат в поток.

🚨 Типичные ошибки

  • делать выводы по одному устройству;
  • не фиксировать версию ОС и модель устройства в баге;
  • не проверять update-путь, ограничиваясь только clean install;
  • тестировать permissions только в режиме allow;
  • проверять ориентацию только на стартовом экране;
  • игнорировать системные жесты;
  • не проверять прерывания на критичных шагах;
  • ограничивать сеть только режимом «полностью offline».

🌟 Best Practices

  • поддерживай минимальный device matrix и обновляй его по аудитории продукта;
  • в каждом релизе делай короткий install/update/uninstall smoke;
  • веди permission-checklist по критичным разрешениям (camera, microphone, location, notifications, files);
  • критичные потоки проверяй на реальном устройстве в каждом релизном цикле;
  • добавляй в чек-лист mobile: orientation, gestures, interruption, network;
  • в баг-репортах фиксируй: device, OS, app version, network condition, repro rate;
  • для действий с риском дублей проверяй поведение на retry после обрыва сети;
  • разделяй smoke mobile-проверку и расширенный regression по рискам.

🧾 Заключение

Основы mobile testing — это практический фундамент, который сразу влияет на качество релиза.
Когда QA системно проверяет устройство, install/update, permissions, ориентацию, жесты, прерывания и сеть, дефекты ловятся раньше и стоят дешевле.
Вывод:
Для junior QA мобильное тестирование начинается с простого правила: проверяй приложение в реальных мобильных условиях и во всем жизненном цикле версии, а не только в «идеальной лаборатории».
🎯

Проверьте знания

Закрепите материал — пройдите тест по теме «БЛОК 12. Мобильное тестирование — 29. Основы mobile testing»

Пройти тест →