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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка тестирования на реальных устройствах через AWS Device Farm
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

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

AWS Device Farm — облачная ферма реальных мобильных устройств от Amazon. Если инфраструктура проекта уже на AWS (CodePipeline, CodeBuild, S3, IAM), Device Farm встраивается органично: те же IAM-роли, тот же AWS CLI, та же политика доступа. Отдельный логин в стороннюю систему не нужен.

Две модели работы

Автоматизированное тестирование — запуск Appium, Espresso, XCUITest, Calabash тестов на парке устройств. Загружаете APK/IPA и тест-пакет, выбираете устройства, запускаете.

Удалённый доступ (Remote Access) — интерактивная сессия с реальным устройством в браузере. Полезно для ручного воспроизведения бага, проверки UI на конкретной модели или отладки автоматических тестов.

Настройка Appium-тестов для Device Farm

Device Farm требует упаковки Appium-тестов в ZIP с конкретной структурой. Для WebdriverIO (Node.js):

tests.zip/
├── package.json
├── package-lock.json
├── node_modules/        # все зависимости включены
└── test/
    └── specs/
        └── login.test.js

Все node_modules должны быть внутри архива — Device Farm не запускает npm install. Конфиг WebdriverIO для Device Farm:

// wdio.conf.devicefarm.js
exports.config = {
  runner: 'local',
  specs: ['./test/specs/**/*.js'],
  // capabilities берутся из Device Farm окружения через переменные среды
  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

Нативный Espresso без Appium работает быстрее. Загрузка через AWS CLI:

# Создание проекта (один раз)
PROJECT_ARN=$(aws devicefarm create-project --name "MyApp" --query 'project.arn' --output text)

# Загрузка APK
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"

# Загрузка тест-APK
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 $(date)" \
  --test type=INSTRUMENTATION,testPackageArn=$TEST_ARN,filter="com.example.LoginTest"

Конфигурация пула устройств

Пул устройств — это набор правил фильтрации:

aws devicefarm create-device-pool \
  --project-arn $PROJECT_ARN \
  --name "Android Top Devices" \
  --rules '[
    {"attribute": "PLATFORM", "operator": "EQUALS", "value": "ANDROID"},
    {"attribute": "OS_VERSION", "operator": "GREATER_THAN_OR_EQUALS", "value": "13"},
    {"attribute": "MANUFACTURER", "operator": "IN", "value": "[\"Samsung\",\"Google\"]"},
    {"attribute": "AVAILABILITY", "operator": "EQUALS", "value": "HIGHLY_AVAILABLE"}
  ]' \
  --max-devices 5

AVAILABILITY: HIGHLY_AVAILABLE — Device Farm выбирает только те устройства, которые доступны прямо сейчас. Без этого прогон может встать в очередь.

Интеграция с AWS CodePipeline

В AWS CodeBuild-спецификации:

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:* на конкретный проект или *. Минимальный набор: CreateUpload, ScheduleRun, GetRun, ListArtifacts.

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

После завершения прогона артефакты доступны через API:

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

Типичные артефакты: Logcat, Screenshots, Video, Test spec output. Скачиваем в S3 или просматриваем в консоли Device Farm.

Сроки

2–3 дня — настройка AWS Device Farm, создание пула устройств, конфигурация загрузки билдов, интеграция в CodePipeline или GitHub Actions, первый прогон и разбор результатов. Стоимость рассчитывается индивидуально.