Налаштування тестування на реальних пристроях через 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
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Налаштування тестування на реальних пристроях через 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, перший прогон та аналіз результатів. Вартість розраховується індивідуально.