Тестирование на реальных устройствах является важной частью процесса тестирования мобильных и веб-приложений. Использование настоящих устройств позволяет оценить поведение приложения в условиях реальной эксплуатации, что невозможно достичь при использовании эмуляторов или симуляторов. В WebdriverIO предусмотрена гибкость для настройки тестирования на реальных устройствах с помощью интеграции с различными сервисами и устройствами.
WebdriverIO поддерживает возможность подключения к реальным мобильным устройствам через несколько механизмов. Для мобильных приложений можно использовать Appium, который в свою очередь интегрируется с WebdriverIO для управления мобильными устройствами. Для веб-тестов можно использовать сервисы удалённого тестирования, такие как Sauce Labs или BrowserStack.
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',
}
};Использование облачных сервисов Для тестирования на реальных устройствах без необходимости настраивать собственную инфраструктуру, можно использовать облачные сервисы, такие как 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>',
}
]
};Настройка для тестирования на реальных устройствах Android и iOS Важно помнить, что при настройке для тестирования на реальных устройствах Android и iOS требуется особое внимание к выбору правильных версий платформ и устройств. Например, для Android необходимо указать устройство и версию системы, а для iOS — устройство и версию Xcode. Также нужно убедиться, что устройство подключено корректно, а драйвера Appium настроены.
Тестирование на реальных устройствах предоставляет ряд преимуществ:
Точность данных Реальные устройства дают точные данные о производительности и стабильности приложения в реальных условиях эксплуатации, включая взаимодействие с сетью, батареей, сенсорами и т.д.
Поведение в реальных условиях В отличие от эмуляторов, реальные устройства могут имитировать реальные сценарии использования, такие как слабый сигнал сети, низкий заряд батареи, экраны с разными разрешениями и т.п.
Поддержка широкого спектра устройств Современные сервисы удалённого тестирования предоставляют доступ к сотням устройств, что позволяет тестировать приложения на различных моделях, не требуя физического доступа к каждому из них.
Запуск тестов на реальном 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();Запуск тестов на реальном 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();Запуск тестов с использованием облачных сервисов Для использования BrowserStack или Sauce Labs тесты должны быть настроены с учётом соответствующих параметров, таких как имя устройства, версия операционной системы, доступ к приложению и т.д.
Использование параллельного тестирования Для ускорения процесса тестирования можно настроить параллельный запуск тестов на нескольких реальных устройствах, что значительно уменьшает время тестирования и помогает быстро выявлять проблемы, связанные с конкретным устройством.
Отслеживание производительности На реальных устройствах важно отслеживать не только функциональные ошибки, но и проблемы с производительностью, такие как время загрузки страниц, использование памяти и процессора. WebdriverIO предоставляет возможность интеграции с инструментами для измерения производительности, такими как Chrome DevTools.
Обработка нестабильных соединений и других факторов При тестировании на реальных устройствах часто встречаются нестабильные сетевые соединения и другие внешние факторы. Важно учитывать эти моменты в тестах и заранее настраивать обработку таких ситуаций.
Тестирование на реальных устройствах — неотъемлемая часть качественного контроля мобильных и веб-приложений. WebdriverIO предоставляет все необходимые инструменты для настройки и запуска тестов на реальных устройствах, включая интеграцию с Appium, BrowserStack и Sauce Labs. Использование реальных устройств позволяет убедиться в точности работы приложения в реальных условиях, повышая качество и надёжность продукта.