AWS Device Farm: настройка тестирования на реальных устройствах

Регрессионное тестирование мобильного приложения на десятке устройств — головная боль без облачной фермы. Разные производители, версии ОС, разрешения экранов — каждый тест приходится запускать локально или на реальных устройствах в офисе. AWS Device Farm решает эту проблему, используя экосистему AWS

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
AWS Device Farm: настройка тестирования на реальных устройствах
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Регрессионное тестирование мобильного приложения на десятке устройств — головная боль без облачной фермы. Разные производители, версии ОС, разрешения экранов — каждый тест приходится запускать локально или на реальных устройствах в офисе. AWS Device Farm решает эту проблему, используя экосистему AWS: те же IAM-роли, CLI, политики доступа. Наш опыт показывает, что 80% проблем при первом запуске — неправильная упаковка тестов или конфигурация пула устройств. Избежать этих ошибок поможет эта статья. Мы настроили Device Farm для 30+ проектов, и среднее сокращение времени регрессионного тестирования составило 70% — это позволило клиентам отказаться от покупки физических устройств и сосредоточиться на качестве кода.

Как настроить тестирование на AWS Device Farm?

Почему AWS Device Farm, а не BrowserStack или Sauce Labs?

Если ваш проект уже на AWS (CodePipeline, CodeBuild, S3), Device Farm встраивается органично: не нужен отдельный логин, биллинг через AWS, IAM-политики централизованы. Для компаний с требованиями к data residency это плюс — устройства находятся в тех же регионах, что и остальная инфраструктура. Device Farm поддерживает APK/IPA и Instrumentation-тесты (Espresso) без дополнительной прослойки. По сравнению с BrowserStack, Device Farm даёт больше контроля над пулом устройств, хотя интерфейс менее интуитивен.

Что входит в настройку?

Компонент Описание
Проект и IAM-роли Создание проекта, минимальные права
Пул устройств Фильтрация по платформе, версии ОС, производителю
Упаковка тестов Примеры для Appium, Espresso, XCUITest
Интеграция CI/CD CodePipeline, GitHub Actions, GitLab CI
Отчёты и уведомления Slack, Telegram, S3
Документация Инструкции для вашей команды, скрипты

Типы тестов: сравнение

Тип Скорость Поддержка Сложность упаковки
Appium Средняя Android, iOS Средняя (зависимости в ZIP)
Espresso Высокая Android (4.3+) Низкая (обычный APK)
XCUITest Высокая iOS (9.0+) Средняя (xcodebuild)

Как упаковать Appium-тесты для Device Farm?

Упаковка Appium-тестов — частая причина сбоев. Device Farm требует ZIP с package.json, node_modules и тестами. Структура для WebdriverIO:

tests.zip/ ├── package.json ├── package-lock.json ├── node_modules/ └── test/ └── specs/ └── login.test.js 

Конфиг WebdriverIO:

// wdio.conf.devicefarm.js exports.config = { runner: 'local', specs: ['./test/specs/**/*.js'], capabilities: [{ platformName: process.env.DEVICEFARM_DEVICE_PLATFORM_NAME, 'appium:deviceName': process.env.DEVICEFARM_DEVICE_NAME, 'appium:platformVersion': process.env.DEVICEFARM_DEVICE_OS_VERSION, 'appium:app': process.env.DEVICEFARM_APP_PATH, 'appium:automationName': process.env.DEVICEFARM_DEVICE_PLATFORM_NAME === 'iOS' ? 'XCUITest' : 'UiAutomator2', }], hostname: 'localhost', port: 4723, }; 

Device Farm сам запускает Appium-сервер, переменные передаются автоматически.

Нативные тесты: Espresso и XCUITest

Espresso работает быстрее Appium, так как выполняется в одном процессе с приложением. Загрузка APK и тест-APK через AWS CLI:

PROJECT_ARN=$(aws devicefarm create-project --name "MyApp" --query 'project.arn' --output text) APP_UPLOAD=$(aws devicefarm create-upload --project-arn $PROJECT_ARN --name "app-debug.apk" --type ANDROID_APP --query 'upload.{arn:arn,url:url}' --output json) APP_URL=$(echo $APP_UPLOAD | jq -r '.url') APP_ARN=$(echo $APP_UPLOAD | jq -r '.arn') curl -T app/build/outputs/apk/debug/app-debug.apk "$APP_URL" TEST_UPLOAD=$(aws devicefarm create-upload --project-arn $PROJECT_ARN --name "app-debug-androidTest.apk" --type INSTRUMENTATION_TEST_PACKAGE --query 'upload.{arn:arn,url:url}' --output json) TEST_ARN=$(echo $TEST_UPLOAD | jq -r '.arn') curl -T app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk "$(echo $TEST_UPLOAD | jq -r '.url')" aws devicefarm schedule-run --project-arn $PROJECT_ARN --app-arn $APP_ARN --device-pool-arn $POOL_ARN --name "Espresso Run" --test type=INSTRUMENTATION,testPackageArn=$TEST_ARN,filter="com.example.LoginTest" 

Для iOS используйте XCUITest, упаковка через xcodebuild.

Пошаговая инструкция по настройке Device Farm

  1. Создайте проект Device Farm и настройте IAM-роли с минимальными правами (devicefarm:* на проект).
  2. Сформируйте пул устройств: выберите платформу, версии ОС, производителей и отфильтруйте по AVAILABILITY: HIGHLY_AVAILABLE, чтобы избежать очередей.
  3. Загрузите приложение (APK/IPA) и тестовый пакет через AWS CLI или консоль. Убедитесь, что тесты упакованы правильно (ZIP с зависимостями).
  4. Запустите тестовый прогон, выбрав пул и тип теста (Appium, Espresso, XCUITest).
  5. Настройте интеграцию с CI/CD (CodePipeline, GitHub Actions) и уведомления (Slack, Telegram).

Интеграция с CI/CD

Добавьте этап в buildspec.yml для CodePipeline:

phases: build: commands: - ./gradlew assembleDebug assembleAndroidTest - APP_ARN=$(aws devicefarm create-upload --project-arn $DEVICE_FARM_PROJECT_ARN --name "app.apk" --type ANDROID_APP --query 'upload.arn' --output text) # ... загрузка и запуск - aws devicefarm get-run --arn $RUN_ARN --query 'run.result' 

IAM-роль CodeBuild должна иметь разрешения devicefarm:* на проект.

Почему тесты падают при первом запуске?

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

  • Неправильная упаковка Appium-тестов — ZIP без node_modules.
  • Пул устройств без фильтра AVAILABILITY: HIGHLY_AVAILABLE — прогон встаёт в очередь на час.
  • Неверные переменные окружения — Device Farm передаёт DEVICEFARM_DEVICE_PLATFORM_NAME и другие.
  • Отсутствие прав на запись в S3 для артефактов.

Официальная документация AWS рекомендует использовать пулы высокой доступности для минимизации времени ожидания.

Анализ результатов

Артефакты доступны через API:

aws devicefarm list-artifacts --arn $JOB_ARN --type FILE --query 'artifacts[*].{name:name,url:url}' --output table 

Типичные артефакты: Logcat, Screenshots, Video, Test spec output. Наши инженеры настраивают автоматическую отправку отчёта в Slack или Telegram.

Кейс: как настройка Device Farm сэкономила 40 часов в месяц

Один из клиентов — финтех-стартап с Android-приложением, тестируемым на 20 устройствах локально. Каждый прогон регрессии занимал 8 часов ручного труда. После настройки Device Farm с интеграцией в GitLab CI время сократилось до 1,5 часов полностью автоматически. Мы настроили пул из 10 параллельных устройств, подключили уведомления в Slack и экспорт отчётов в S3. Затраты на облачную ферму оказались ниже стоимости содержания собственного парка устройств.

Наши инженеры имеют AWS-сертификации и 10+ лет опыта в мобильной разработке. Мы гарантируем, что первый прогон будет успешным в течение 3 дней после начала работ.

Свяжитесь с нами для бесплатной оценки вашего проекта. Закажите настройку AWS Device Farm и получите первый успешный прогон через 3 дня. Все скрипты и документация остаются у вас.

Подробнее о Device Farm читайте в официальной документации AWS.