Тестирование на реальных устройствах

Тестирование на реальных устройствах является важной частью процесса тестирования мобильных и веб-приложений. Использование настоящих устройств позволяет оценить поведение приложения в условиях реальной эксплуатации, что невозможно достичь при использовании эмуляторов или симуляторов. В WebdriverIO предусмотрена гибкость для настройки тестирования на реальных устройствах с помощью интеграции с различными сервисами и устройствами.

Подключение реальных устройств

WebdriverIO поддерживает возможность подключения к реальным мобильным устройствам через несколько механизмов. Для мобильных приложений можно использовать Appium, который в свою очередь интегрируется с WebdriverIO для управления мобильными устройствами. Для веб-тестов можно использовать сервисы удалённого тестирования, такие как Sauce Labs или BrowserStack.

  1. Appium для мобильных устройств Appium является открытым фреймворком для автоматизации мобильных приложений на реальных устройствах. Он работает с такими платформами, как iOS и Android. Для интеграции с WebdriverIO необходимо настроить соответствующие конфигурации в wdio.conf.js.

    Пример настройки Appium в WebdriverIO:

    exports.config = {
      services: ['appium'],
      capabilities: [
        {
          platformName: 'Android',
          platformVersion: '10',
          deviceName: 'Pixel_3a',
          app: '/path/to/your/app.apk',
          automationName: 'UiAutomator2',
        },
        {
          platformName: 'iOS',
          platformVersion: '14.4',
          deviceName: 'iPhone 12',
          app: '/path/to/your/app.ipa',
          automationName: 'XCUITest',
        }
      ],
      appium: {
        command: 'appium',
      }
    };
  2. Использование облачных сервисов Для тестирования на реальных устройствах без необходимости настраивать собственную инфраструктуру, можно использовать облачные сервисы, такие как BrowserStack и Sauce Labs. Эти платформы позволяют запускать тесты на реальных устройствах через облако, предоставляя доступ к широкому спектру мобильных устройств и браузеров.

    Пример настройки для BrowserStack:

    exports.config = {
      user: 'your-browserstack-username',
      key: 'your-browserstack-access-key',
      services: ['browserstack'],
      capabilities: [
        {
          browserName: 'chrome',
          os: 'Windows',
          os_version: '10',
          resolution: '1920x1080',
        },
        {
          device: 'iPhone 12',
          os_version: '14',
          real_mobile: true,
          app: 'bs://<app-id>',
        }
      ]
    };
  3. Настройка для тестирования на реальных устройствах Android и iOS Важно помнить, что при настройке для тестирования на реальных устройствах Android и iOS требуется особое внимание к выбору правильных версий платформ и устройств. Например, для Android необходимо указать устройство и версию системы, а для iOS — устройство и версию Xcode. Также нужно убедиться, что устройство подключено корректно, а драйвера Appium настроены.

Преимущества тестирования на реальных устройствах

Тестирование на реальных устройствах предоставляет ряд преимуществ:

  • Точность данных Реальные устройства дают точные данные о производительности и стабильности приложения в реальных условиях эксплуатации, включая взаимодействие с сетью, батареей, сенсорами и т.д.

  • Поведение в реальных условиях В отличие от эмуляторов, реальные устройства могут имитировать реальные сценарии использования, такие как слабый сигнал сети, низкий заряд батареи, экраны с разными разрешениями и т.п.

  • Поддержка широкого спектра устройств Современные сервисы удалённого тестирования предоставляют доступ к сотням устройств, что позволяет тестировать приложения на различных моделях, не требуя физического доступа к каждому из них.

Реализация тестов на реальных устройствах

  1. Запуск тестов на реальном Android устройстве Для запуска тестов на Android устройстве через WebdriverIO необходимо подключить его через USB или использовать сервисы удалённого тестирования. В случае с локальным тестированием важно, чтобы на устройстве был включён режим разработчика, а также разрешено подключение через USB.

    Пример:

    const { remote } = require('webdriverio');
    
    async function main() {
      const options = {
        capabilities: {
          platformName: 'Android',
          deviceName: 'Pixel_3a',
          app: '/path/to/your/app.apk',
          automationName: 'UiAutomator2',
        },
      };
    
      const browser = await remote(options);
    
      await browser.url('https://www.google.com');
      await browser.deleteSession();
    }
    
    main();
  2. Запуск тестов на реальном iOS устройстве Для iOS устройств потребуется устройство с установленным Xcode и настройка с помощью Appium. Тесты можно запускать как на реальных устройствах, так и на симуляторах, но именно использование реальных устройств гарантирует точность результатов.

    Пример:

    const { remote } = require('webdriverio');
    
    async function main() {
      const options = {
        capabilities: {
          platformName: 'iOS',
          platformVersion: '14.4',
          deviceName: 'iPhone 12',
          app: '/path/to/your/app.ipa',
          automationName: 'XCUITest',
        },
      };
    
      const browser = await remote(options);
    
      await browser.url('https://www.apple.com');
      await browser.deleteSession();
    }
    
    main();
  3. Запуск тестов с использованием облачных сервисов Для использования BrowserStack или Sauce Labs тесты должны быть настроены с учётом соответствующих параметров, таких как имя устройства, версия операционной системы, доступ к приложению и т.д.

Рекомендации по улучшению качества тестирования на реальных устройствах

  1. Использование параллельного тестирования Для ускорения процесса тестирования можно настроить параллельный запуск тестов на нескольких реальных устройствах, что значительно уменьшает время тестирования и помогает быстро выявлять проблемы, связанные с конкретным устройством.

  2. Отслеживание производительности На реальных устройствах важно отслеживать не только функциональные ошибки, но и проблемы с производительностью, такие как время загрузки страниц, использование памяти и процессора. WebdriverIO предоставляет возможность интеграции с инструментами для измерения производительности, такими как Chrome DevTools.

  3. Обработка нестабильных соединений и других факторов При тестировании на реальных устройствах часто встречаются нестабильные сетевые соединения и другие внешние факторы. Важно учитывать эти моменты в тестах и заранее настраивать обработку таких ситуаций.

Заключение

Тестирование на реальных устройствах — неотъемлемая часть качественного контроля мобильных и веб-приложений. WebdriverIO предоставляет все необходимые инструменты для настройки и запуска тестов на реальных устройствах, включая интеграцию с Appium, BrowserStack и Sauce Labs. Использование реальных устройств позволяет убедиться в точности работы приложения в реальных условиях, повышая качество и надёжность продукта.