Перейти к содержанию
Тестирование

9 вопросов по теме «QA: Веб, мобильное и безопасность» на собеседовании

В этом материале — 9 вопросов из русской колоды RecallDeck по теме «QA: Веб, мобильное и безопасность». Сначала сформулируйте короткий ответ сами, затем откройте подробный разбор и проверьте примеры, ограничения и отказные случаи.

8 мин чтения9 подробных ответовПроверено 24 августа 2026
Главная мысль

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

Вопросы и ответы

9 подробных ответов

01

Чем отличаются cookies, localStorage и sessionStorage?

Короткий ответ: Cookies ограничены ~4 КБ и автоматически летят на сервер с каждым запросом, у них есть срок жизни и флаги httpOnly/secure. localStorage и sessionStorage вмещают ~5 МБ, на сервер сами не уходят и читаются только из JS; разница — localStorage живёт бессрочно, а sessionStorage стирается при закрытии вкладки.

Подробно:

  1. Размер и отправка — cookie мал (~4 КБ) и добавляется в заголовок каждого HTTP-запроса, поэтому раздувать его нельзя; Web Storage крупнее и на сервер не передаётся.
  2. Срок жизни — cookie живёт до Expires/Max-Age, localStorage — пока его явно не удалят, sessionStorage — до закрытия вкладки.
  3. Доступ и безопасностьhttpOnly-cookie недоступна из JS, поэтому её не украдёт XSS; localStorage читается любым скриптом на странице.
Свойство Cookie localStorage sessionStorage
Размер ~4 КБ ~5 МБ ~5 МБ
Летит на сервер да, каждый запрос нет нет
Срок жизни до expiry бессрочно до закрытия вкладки
Доступ из JS нет при httpOnly да да

⚠️ Частая ошибка: хранить auth-токен в localStorage «для удобства». Токен сессии безопаснее в httpOnly+secure-cookie — localStorage вычитывается XSS-инъекцией за одну строку скрипта.

02

Что такое IDOR и как проверить защиту от него?

Короткий ответ: IDOR (Insecure Direct Object Reference) — уязвимость, когда сервер отдаёт чужой ресурс по прямому идентификатору из запроса, не проверяя, что пользователь имеет на него право (/orders/123/orders/124). Проверяют так: под пользователем A подставляют ID ресурса пользователя B и ждут 403/404, а не чужие данные.

Подробно:

  1. Суть — приложение доверяет ID из URL/тела/параметра и не сверяет владельца объекта с текущей сессией.
  2. Как тестировать — авторизуйтесь как A, перехватите его запрос, замените ID на принадлежащий B и повторите. Корректная реакция — отказ авторизации, а не 200 с чужими данными.
  3. Где искать — числовые ID заказов, документов, счетов; параметры user_id, account; вложенные объекты (/users/B/cards).
GET /api/orders/124 HTTP/1.1
Host: shop.example.com
Cookie: session=<токен пользователя A>

→ ожидаем 403 Forbidden или 404 Not Found
→ уязвимо: 200 OK с заказом пользователя B

⚠️ Частая ошибка: проверять доступ только через интерфейс, где кнопки чужого заказа не видно. IDOR живёт на уровне API — проверять нужно прямыми запросами (Burp/Postman), а не кликами по UI.

03

Какие проверки из OWASP Top 10 может сделать обычный тестировщик?

Короткий ответ: Без пентеста и спецтулов тестировщик закрывает уровень awareness: ручные проверки на SQL-инъекцию, XSS, IDOR, отсутствие rate limiting и утечку чувствительных данных в URL/логах. Достаточно 1–2 конкретных проверок на пункт, а не полноценной эксплуатации.

Подробно:

  1. Инъекции — подставить ' OR 1=1-- в поле логина/поиска и смотреть, не ломается ли запрос или не пускает ли внутрь.
  2. XSS — ввести <script>alert(1)</script> в текстовое поле и проверить, экранируется ли вывод.
  3. Контроль доступа (IDOR) — подмена чужого ID в запросе.
  4. Аутентификация — брутфорс пароля без блокировки/капчи (нет rate limiting).
  5. Утечки — токены, пароли, номера карт в URL, логах, ответах API.
Уязвимость Быстрая ручная проверка
SQL-инъекция ' OR 1=1-- в поле ввода
XSS <script> в текстовых полях
IDOR подмена ID чужого объекта
Нет rate limiting 100 попыток входа подряд
Утечка данных секреты в URL/логах/ответах

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

04

Чем тестирование мобильного приложения отличается от веба?

Короткий ответ: Мобилка добавляет целые классы рисков, которых нет в вебе: фрагментация устройств и версий ОС, нестабильная сеть, системные прерывания, работа в фоне и восстановление состояния, permissions, deep links, биометрия и расход батареи. «Экран меньше» — это лишь верхушка.

Подробно:

  • Фрагментация — сотни моделей, разные разрешения, версии Android/iOS, вендорные прошивки.
  • Сеть — офлайн, 2G, обрывы посреди операции, переключение Wi-Fi↔LTE.
  • Прерывания — входящий звонок, будильник, пуш, сворачивание — приложение должно пережить и восстановиться.
  • Жизненный цикл — фон/убийство процесса ОС, возврат к сохранённому состоянию.
  • Платформенное — permissions, deep links, биометрия, установка/обновление из стора.
  • Ресурсы — батарея, память, нагрев, производительность на слабых устройствах.
Веб:     браузер + сеть + вёрстка
Мобилка: + фрагментация устройств/ОС
         + прерывания и фон
         + permissions / deep links / биометрия
         + батарея / память / нестабильная сеть

⚠️ Частая ошибка: свести различия к «адаптивной вёрстке под маленький экран». Интервьюер ждёт именно прерывания, жизненный цикл процесса и фрагментацию — это и есть мобильная специфика.

05

Как протестировать, что push-уведомление приходит, когда приложение закрыто?

Короткий ответ: Проверять нужно в двух слоях. Вручную: полностью убить приложение (не свернуть), триггернуть пуш, убедиться, что он появился в шторке ОС, и по тапу открыл нужный экран через deep-link из payload с холодным стартом. В автоматизации: замокать пуш-сервис или перехватить доставку тестовым харнессом.

Подробно:

  1. Убить, а не свернуть — смахнуть из списка задач, чтобы процесс реально завершился; фон и «закрыто» ведут себя по-разному.
  2. Доставка — уведомление отрисовалось в шторке с корректным заголовком/текстом/иконкой.
  3. Тап и переход — payload с deep link открывает конкретный экран, а не просто главную, при cold start.
  4. Автоматизация — мок FCM/APNs или тестовый эндпоинт, чтобы не зависеть от живого пуш-сервиса.
Состояние приложения Где видим пуш Что проверяем
Закрыто (killed) шторка ОС доставка + cold start по тапу
Фон (background) шторка ОС переход на нужный экран
Открыто (foreground) in-app баннер обработка без шторки

⚠️ Частая ошибка: проверить пуш только на открытом приложении. Именно закрытое состояние ловит баги доставки и холодного старта — интервьюер ждёт оба слоя (ручной + автоматизацию).

07

Как проверить доступность веб-страницы для скринридеров?

Короткий ответ: Проверка идёт по слоям: корректная семантика и ARIA-роли/лейблы в разметке, полная навигация с клавиатуры с логичным порядком фокуса и достаточным контрастом, затем автосканеры (axe-core/Lighthouse) в CI и обязательный ручной проход реальным скринридером (NVDA/VoiceOver).

Подробно:

  1. Разметка — семантические теги, aria-label/aria-labelledby там, где нет видимого текста, роли для кастомных контролов, живые регионы для динамики.
  2. Клавиатура — всё достижимо через Tab, порядок фокуса совпадает с визуальным, фокус виден, нет ловушек фокуса.
  3. Инструменты — axe-core/Lighthouse отлавливают часть проблем автоматически и встают в CI.
  4. Ручной проход — реальный скринридер: озвучиваются ли лейблы, состояния, ошибки формы.
Слой 1 · Разметка   → ARIA-роли, лейблы, alt, заголовки
Слой 2 · Клавиатура → Tab-порядок, видимый фокус, без ловушек
Слой 3 · Тулы       → axe-core / Lighthouse в CI
Слой 4 · Скринридер → NVDA / VoiceOver вручную

⚠️ Частая ошибка: свести доступность к «проставить alt у картинок». За это дожимают: скринридеру одинаково важны порядок фокуса, лейблы форм, озвучка ошибок и состояний — а не только alt-тексты.

08

Что такое кроссбраузерное тестирование и как выбрать матрицу браузеров?

Короткий ответ: Кроссбраузерное тестирование — проверка, что приложение одинаково работает в разных браузерах, версиях и ОС. Матрицу строят не «все браузеры», а от аналитики трафика аудитории и риска: полный перебор браузер × ОС × разрешение нереален, поэтому его сокращают приоритизацией и pairwise-подходом.

Подробно:

  1. Отталкиваться от данных — аналитика (GA и т.п.) показывает реальные доли браузеров/ОС/устройств у вашей аудитории.
  2. Приоритет по покрытию и риску — сначала комбинации, покрывающие большинство пользователей и критичные потоки (оплата, регистрация).
  3. Сокращать перебор — pairwise/попарное тестирование даёт покрытие пар без комбинаторного взрыва.
Браузер Доля аудитории Приоритет
Chrome (Win) 58% P0
Safari (iOS) 22% P0
Chrome (Android) 12% P1
Firefox / Edge 6% P2
IE / прочие 2% не тестируем

⚠️ Частая ошибка: не суметь обосновать выбор матрицы («проверил, где было под рукой»). Интервьюер ждёт логику «данные аудитории + риск + pairwise», а не список любимых браузеров.

09

Как тестировать приложение при плохой сети: 2G, обрывы, офлайн?

Короткий ответ: Сеть эмулируют троттлингом (DevTools, Charles/Proxyman) и авиарежимом посреди операции, а проверяют поведение: работают ли ретраи и таймауты, нет ли потери или дублирования данных при повторной отправке, и получает ли пользователь понятную ошибку вместо вечного спиннера.

Подробно:

  1. Эмуляция условий — throttling до 2G/Slow 3G, потеря пакетов, высокий latency; авиарежим прямо во время запроса.
  2. Устойчивость запроса — таймаут срабатывает, ретрай повторяет, идемпотентность не создаёт дубль заказа/платежа.
  3. Обратная связь — вместо бесконечного лоадера — сообщение об ошибке и кнопка «Повторить».
  4. Офлайн и синхронизация — данные копятся локально и корректно досылаются при возврате сети.
Момент флоу              Что проверяем
─────────────────────────────────────────
до запроса      → офлайн-баннер, блок кнопки
обрыв в запросе → таймаут + ретрай, нет дубля
медленный ответ → спиннер не вечный, есть отмена
возврат сети    → отложенное досылается, синк ок

⚠️ Частая ошибка: тестировать только на идеальном офисном Wi-Fi. Самые злые баги — потеря/дублирование данных и зависший спиннер — воспроизводятся именно на обрыве посреди операции.

Источники

Источники и редакционная политика

Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.

От чтения к воспроизведению

Отрепетируйте полный цикл интервью.

RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.

Начать подготовку

Продолжить подготовку

Библиотека собеседований RecallDeck

Подробные русские ответы, разборы этапов найма и планы подготовки для российского IT-рынка.

RSS