Что можно сделать на симуляторе, но нельзя на эмуляторе (в контексте мобильной разработки/тестирования)?

«Что можно сделать на симуляторе, но нельзя на эмуляторе (в контексте мобильной разработки/тестирования)?» — вопрос из категории Мобильное тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ключевое отличие: Симулятор моделирует только поведение ПО целевой системы, в то время как эмулятор воспроизводит и аппаратную архитектуру (например, CPU).

Что проще/быстрее сделать на симуляторе:

  • Быстрый запуск и отладка UI/логики приложения, так как симулятор часто работает как процесс на хостовой машине (использует её CPU, обычно x86).
  • Тестирование на непредставленных в эмуляторе конфигурациях (например, симуляция iPhone последней модели на Mac старого поколения).

Что принципиально НЕВОЗМОЖНО протестировать на симуляторе (требуется эмулятор или реальное устройство):

  • Точная производительность и низкоуровневая оптимизация. Симулятор не повторяет реальную архитектуру CPU устройства (например, ARM). Код, скомпилированный под x86, может работать иначе.
  • Работа с конкретными аппаратными датчиками. Например:
    • Face ID / Touch ID (iOS Simulator лишь имитирует успешную аутентификацию).
    • Акселерометр, гироскоп, барометр.
    • Точное моделирование состояния батареи, GPS-сигнала.
  • Тестирование нативных библиотек и драйверов, которые напрямую взаимодействуют с железом.
  • Поведение при нехватке памяти или специфичных прерываниях процессора.

Практический пример: В iOS Simulator нельзя протестировать реальное распознавание лица через Face ID, работу ARKit, зависящую от точных данных с датчиков, или энергопотребление приложения. Для этого нужен эмулятор (как Android Emulator с образами системы ARM) или физическое устройство.