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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Настройка тестирования на реальных устройствах через BrowserStack
Средний
~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

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

BrowserStack App Automate — облачная ферма реальных устройств с поддержкой Appium, Espresso и XCUITest. От Firebase Test Lab отличается тем, что устройства доступны в интерактивном режиме (App Live), а автоматизированные тесты запускаются через стандартный WebDriver-протокол — то есть ваш существующий Appium-код подключается к BrowserStack с минимальными изменениями в capabilities.

Подключение существующих Appium-тестов

Если Appium-тесты уже написаны, перевод на BrowserStack — это изменение capabilities и URL сервера:

const capabilities = {
  platformName: 'Android',
  'appium:deviceName': 'Samsung Galaxy S24',
  'appium:platformVersion': '14.0',
  'bstack:options': {
    userName: process.env.BROWSERSTACK_USERNAME,
    accessKey: process.env.BROWSERSTACK_ACCESS_KEY,
    appiumVersion: '2.6.0',
    projectName: 'MyApp E2E Tests',
    buildName: `Build ${process.env.BUILD_NUMBER}`,
    sessionName: 'Login Flow',
  },
  'appium:app': 'bs://app_hash_from_upload', // хэш загруженного APK
};

const driver = await remote({
  protocol: 'https',
  hostname: 'hub.browserstack.com',
  path: '/wd/hub',
  port: 443,
  capabilities,
});

Загрузка APK перед тестами:

curl -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY" \
  -X POST "https://api-cloud.browserstack.com/app-automate/upload" \
  -F "[email protected]"
# Возвращает: {"app_url":"bs://abc123..."}

Хэш bs://abc123 подставляем в capabilities как 'appium:app'. APK хранится 30 дней, повторная загрузка не нужна, если билд не менялся.

Нативная интеграция: Espresso и XCUITest

BrowserStack поддерживает нативный запуск без Appium-сервера — напрямую через Espresso (Android) и XCUITest (iOS). Это быстрее и стабильнее.

Espresso через BrowserStack CLI:

browserstack-sdk ./gradlew connectedAndroidTest

Или через REST API:

curl -u "$USER:$KEY" \
  -X POST "https://api-cloud.browserstack.com/app-automate/espresso/v2/build" \
  -d '{
    "app": "bs://app_hash",
    "testSuite": "bs://test_suite_hash",
    "devices": ["Samsung Galaxy S24-14.0", "Google Pixel 8-14.0"],
    "class": ["com.example.LoginTest"],
    "networkLogs": true,
    "deviceLogs": true
  }'

testSuite — это загруженный APK с androidTest-кодом. Результаты доступны в консоли BrowserStack и через API.

Параллельное тестирование

BrowserStack тарифицирует параллельные сессии. На стандартном плане — 5 параллельных устройств, на Team — 25. Настройка WebdriverIO для параллельного запуска:

// wdio.conf.ts
export const config = {
  maxInstances: 5,
  capabilities: [
    { 'appium:deviceName': 'Samsung Galaxy S24', 'appium:platformVersion': '14.0' },
    { 'appium:deviceName': 'Google Pixel 8', 'appium:platformVersion': '14.0' },
    { 'appium:deviceName': 'iPhone 15 Pro', platformName: 'iOS', 'appium:platformVersion': '17' },
  ],
};

Каждый capability-объект — отдельный поток. Тест-файлы распределяются между ними автоматически.

Локальное тестирование

Если приложение обращается к локальному бэкенду (staging на 192.168.x.x или localhost), BrowserStack не достучится до него напрямую. Решение — BrowserStack Local:

./BrowserStackLocal --key $BROWSERSTACK_ACCESS_KEY --local-identifier my-tunnel

В capabilities добавляем:

'bstack:options': {
  local: true,
  localIdentifier: 'my-tunnel',
}

Трафик от устройства на BrowserStack маршрутизируется через зашифрованный туннель на вашу машину. Работает и в CI — запускаем BrowserStackLocal как background-процесс перед тестами.

Интеграция в CI

- name: Upload app to BrowserStack
  id: upload
  run: |
    RESPONSE=$(curl -s -u "${{ secrets.BS_USER }}:${{ secrets.BS_KEY }}" \
      -X POST "https://api-cloud.browserstack.com/app-automate/upload" \
      -F "[email protected]")
    echo "app_url=$(echo $RESPONSE | jq -r '.app_url')" >> $GITHUB_OUTPUT

- name: Run tests
  run: npx wdio run wdio.conf.ts
  env:
    BROWSERSTACK_APP_ID: ${{ steps.upload.outputs.app_url }}
    BROWSERSTACK_USERNAME: ${{ secrets.BS_USER }}
    BROWSERSTACK_ACCESS_KEY: ${{ secrets.BS_KEY }}

Что настраиваем

  • Загрузку билдов и автоматическое обновление app_url в CI
  • Capabilities для целевой матрицы устройств (iOS + Android)
  • Параллельный запуск в рамках имеющегося тарифа
  • BrowserStack Local для тестирования против staging-бэкенда
  • Интеграцию с Allure или HTML-репортером для отчётности

Сроки

2–3 дня — настройка подключения, конфигурация матрицы устройств, интеграция в CI, первый прогон и исправление проблем, связанных с платформой. Стоимость рассчитывается индивидуально.