Все разборы

Мобильное

Как ответить на вопрос «Чем мобильное тестирование отличается от веба» на собеседовании QA

Что рассказать на собеседовании о мобильном тестировании: прерывания, сеть, разрешения, фон, устройства, обновления и ожидаемое поведение в каждой ситуации.

Зачем это спрашивают

Кажется, что мобильное приложение — тот же сайт, только экран поменьше. Именно этот ответ интервьюер и хочет не услышать. Телефон живёт в другой среде: пользователь идёт по улице, теряет сеть в лифте, отвечает на звонок посреди оплаты, сворачивает приложение, и система выгружает его из памяти. Вопрос проверяет, видите ли вы эти ситуации и умеете ли превратить их в проверки с ожидаемым результатом.

Даже если вакансия в основном про веб, вопрос нередко задают: у многих продуктов есть приложение, и тестировщику приходится его проверять.

Как построить сильный ответ

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

Чем мобильная среда отличается

  1. Прерывания. Входящий звонок, уведомление, будильник, блокировка экрана, переход в другое приложение и обратно.
  2. Жизненный цикл приложения. Приложение уходит в фон, а система может выгрузить его ради памяти. При возврате пользователь должен оказаться там же, с теми же введёнными данными.
  3. Сеть. Потеря соединения посреди запроса, переключение Wi-Fi на мобильную сеть, медленный интернет, режим полёта.
  4. Разрешения. Камера, геолокация, уведомления. Что будет, если пользователь отказал, разрешил «только сейчас» или отозвал разрешение в настройках.
  5. Поворот экрана. На Android при смене конфигурации экран по умолчанию пересоздаётся, и плохо написанный экран теряет состояние.
  6. Разнообразие устройств. Размеры и плотность экранов, версии ОС, оболочки производителей со своими правилами энергосбережения, вырезы под камеру.
  7. Установка и обновление. Чистая установка, обновление поверх старой версии с сохранением данных, принудительное обновление, удаление.
  8. Ссылки на внутренние экраны. Переход по ссылке из письма или пуша должен открыть нужный экран, в том числе если приложение не запущено или пользователь не авторизован.
  9. Ввод и ресурсы. Жесты, клавиатура, перекрывающая поле, расход батареи и трафика.

Как показать глубину

Возьмите один экран и для каждой ситуации назовите ожидаемое поведение. Например, экран оплаты:

ситуация ожидание
звонок во время оплаты после звонка экран на месте, данные не потеряны
сворачивание и возврат форма заполнена, оплата не ушла повторно
выгрузка из фона приложение восстанавливает экран или понятно сообщает, что делать
потеря сети в момент отправки понятное сообщение, нет «вечного» индикатора, повтор не создаёт второй платёж
смена Wi-Fi на мобильную сеть запрос завершается или корректно повторяется
поворот экрана введённые данные сохраняются
двойное нажатие на «Оплатить» ровно один платёж

Для проверки удобно знать пару инструментов: adb logcat для логов, adb install -r app.apk для обновления поверх с сохранением данных, прокси для имитации плохой сети, режим разработчика «Не сохранять действия» для проверки восстановления экрана.

Пример ответа

Главное отличие не в размере экрана, а в среде. Мобильное приложение постоянно прерывают: звонки, уведомления, блокировка, переход в другое приложение. Система может выгрузить его из фона, сеть пропадает или переключается с Wi-Fi на мобильную посреди запроса. Есть разрешения, которые пользователь может не дать или отозвать, поворот экрана, огромное число устройств, версий ОС и оболочек, установка и обновление поверх старой версии, переходы по ссылкам сразу на внутренние экраны. На каждую такую ситуацию я формулирую ожидание. Например, на экране оплаты после звонка или сворачивания введённые данные на месте, при потере сети — понятное сообщение, а повторное нажатие или повторная отправка не создают второй платёж.

Частые ошибки

  • «Экран меньше, поэтому проверяю вёрстку». Это малая часть отличий.
  • Список ситуаций без ожиданий. Интервьюер спросит «и что должно произойти?», и ответа не будет.
  • Тестировать только на эмуляторе. Звонки, датчики, энергосбережение и оболочки производителей лучше проверять на реальных устройствах.
  • Забывать про обновление. Чистая установка проходит, а обновление поверх старой версии ломает сохранённые данные.
  • Не проверять, где баг. Если приложение показывает неверные данные, стоит посмотреть трафик и понять, ошибка в ответе сервера или в клиенте — так же, как на вебе.

Пример на MarketCove

У учебного магазина https://shop.tomiddle.com есть Android-приложение, и на нём удобно тренироваться. Как вы могли бы построить проверки:

  • Корзина. Добавить товары, свернуть приложение, открыть несколько тяжёлых приложений, вернуться. Ожидание — корзина на месте.
  • Оформление заказа. На шаге отправки включить режим полёта. Ожидание — понятное сообщение, после возврата сети заказ можно отправить, и он создаётся один.
  • Форма заказа. Заполнить «Имя» и «Адрес» и повернуть экран. Ожидание — введённые данные на месте, форму не нужно заполнять заново.
  • Вход. Войти, закрыть приложение и открыть снова. Ожидание — сессия сохранена или приложение понятно просит войти заново.
  • История заказов. Оформить заказ в приложении и сверить его с профилем и ответом GET /api/orders.

Задание для практики

Выберите один экран приложения магазина, например оформление заказа. Составьте таблицу из восьми строк: прерывание или смена состояния и ожидаемое поведение. Пройдите таблицу на эмуляторе, а если есть возможность — на реальном телефоне, и отметьте, где поведение расходится с ожиданием. Сравните свой список с вопросами в разделе про мобильное тестирование.

Что спросят следом

  • Чем нативное приложение отличается от гибридного и веб-версии?
    Нативное приложение написано под конкретную платформу и напрямую работает с её возможностями: камерой, уведомлениями, хранилищем. Гибридное показывает веб-страницы внутри оболочки приложения, поэтому часть багов у него веб-природы, а часть связана с оболочкой. Мобильная веб-версия открывается в браузере и тестируется как сайт с учётом размера экрана и сенсорного ввода.
  • На каких устройствах тестировать, если их сотни?
    Опираться на аналитику: какие модели, версии ОС и размеры экрана реально у пользователей продукта. Дальше собрать матрицу, где покрыты минимальная поддерживаемая и свежая версии ОС, маленький и большой экран, разные производители. Эмуляторы подходят для ежедневной работы, но прерывания, датчики и поведение оболочек надо проверять на реальных устройствах или в облачной ферме.
  • Какие инструменты нужны для тестирования Android-приложения?
    Android Studio с эмуляторами, adb для установки сборок и чтения логов через logcat, прокси вроде Charles или mitmproxy для просмотра и подмены трафика. Полезны настройки для разработчиков, например режим, в котором система уничтожает экраны при уходе с них. Для автоматизации — Appium или фреймворки самой платформы.
  1. Q-01
    Какие техники тест-дизайна вы знаете и как выбираете?
  2. Q-02
    Как понять, где баг: на фронтенде или на бэкенде?
  3. Q-03
    Протестируйте лифт (ручку, кофемашину)

Отрепетировать ответ с куратором

В сопровождении — весь банк вопросов, мок-собеседование и разбор каждого настоящего собеседования, пока не придёт оффер. Гарантий трудоустройства не даём — готовим к тому, что спросят.