Регресійне тестування мобільного застосунку на десятку пристроїв — головний біль без хмарної ферми. Різні виробники, версії ОС, роздільна здатність екранів — кожен тест доводиться запускати локально або на реальних пристроях в офісі. AWS Device Farm для тестування мобільних застосунків на реальних пристроях вирішує цю проблему, використовуючи екосистему AWS: ті самі IAM-ролі, CLI, політики доступу. Наш досвід показує, що 80% проблем при першому запуску — неправильне пакування тестів або конфігурація пулу пристроїв. Уникнути цих помилок допоможе ця стаття. Ми налаштували Device Farm для 30+ проєктів, і середнє скорочення часу регресійного тестування склало 70% — це дозволило клієнтам відмовитися від купівлі фізичних пристроїв і зосередитися на якості коду. Автоматизація на Device Farm скорочує час регресії в 3 рази порівняно з ручним тестуванням.
Як налаштувати тестування на AWS Device Farm?
Чому AWS Device Farm, а не BrowserStack чи Sauce Labs?
Якщо ваш проєкт уже на AWS (CodePipeline, CodeBuild, S3), Device Farm вбудовується органічно: не потрібен окремий логін, білінг через AWS, IAM-політики централізовані. Для компаній з вимогами до data residency це плюс — пристрої знаходяться в тих самих регіонах, що й решта інфраструктури. Він підтримує APK/IPA та Instrumentation-тести (Espresso) без додаткової прошарки. Порівняно з BrowserStack, хмарна ферма дає більше контролю над пулом пристроїв, хоча інтерфейс менш інтуїтивний.
Що входить у налаштування?
| Компонент | Опис |
|---|---|
| Проєкт та IAM-ролі | Створення проєкту, мінімальні права |
| Пул пристроїв | Фільтрація за платформою, версією ОС, виробником. Доступно понад 2000 моделей |
| Пакування тестів | Приклади для 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, }; Сервіс сам запускає 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
- Створіть проєкт Device Farm і налаштуйте IAM-ролі з мінімальними правами (devicefarm:* на проєкт).
- Сформуйте пул пристроїв: виберіть платформу, версії ОС, виробників і відфільтруйте за AVAILABILITY: HIGHLY_AVAILABLE, щоб уникнути черг (середній час очікування – менше 5 хвилин).
- Завантажте застосунок (APK/IPA) та тестовий пакет через AWS CLI або консоль. Переконайтеся, що тести упаковані правильно (ZIP з залежностями).
- Запустіть тестовий прогін, вибравши пул і тип тесту (Appium, Espresso, XCUITest).
- Налаштуйте інтеграцію з 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:* на проєкт.
Аналіз результатів
Артефакти доступні через 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. Витрати на хмарну ферму виявилися нижчими за вартість утримання власного парку пристроїв. За нашими оцінками, перехід на Device Farm зменшує витрати на тестування на 60% – з $2000 до $800 на місяць для середнього проєкту.
Наші інженери мають AWS-сертифікації та 10+ років досвіду в мобільній розробці. Ми гарантуємо, що перший прогін буде успішним протягом 3 днів після початку робіт.
Налаштування під ключ включає: створення пулу, пакування тестів, інтеграцію CI/CD та документацію. Ми гарантуємо успішний перший прогін через 3 дні. Замовте безкоштовну оцінку вашого проєкту просто зараз – пишіть нам, і ми оцінимо ваш проєкт за 1 день. У вартість входить повна документація та підтримка після налаштування.
Докладніше про Device Farm читайте в офіційній документації AWS.







