Как запускать параллельное выполнение тестов в Appium?

Автоматизация мобильного тестирования сейчас ассоциируется почти исключительно с Appium. Он кроссплатформенный, бесплатный и с открытым исходным кодом. Он используется для нативных, гибридных и веб-приложений на Android и iOS. Appium можно установить на любую операционную систему. Он работает со многими языками программирования, такими как Java, C#, Python, JavaScript и др.

В основе Appium лежит идея о том, что для тестирования нативных приложений не нужно интегрировать SDK или перекомпилировать ваше приложение. Вы должны иметь возможность свободно использовать различные фреймворки и инструменты тестирования. Благодаря своим стандартам автоматизации и API, Appium подходит для приложений, работающих на разных операционных системах, таких как Windows, Android и iOS.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

Как работает Appium?

Appium, по сути, является веб-сервером. Он устанавливает соединение с клиентом, принимает запросы, выполняет их на мобильном устройстве и возвращает HTTP-ответ, представляющий результат.

  • От вас не требуется разрабатывать и выполнять тесты на каком-то конкретном языке программирования или фреймворке.
  • Благодаря клиент-серверной архитектуре клиент, созданный на любом языке программирования, может отправлять HTTP-запросы на сервер. Для многих языков программирования уже существуют готовые клиенты.

Важность параллельного тестирования

Целью внедрения автоматизации тестирования всегда должно быть выполнение тестового сценария на максимально возможном количестве устройств. Это позволяет быстро запускать тесты, получать результаты и исправлять баги в приложении.

  • Когда вы переходите от последовательного к параллельному тестированию, сразу становится заметно, насколько параллельное тестирование эффективно.
  • Более того, запускать мобильные тесты вручную на каждом устройстве по очереди не соответствует методологии Agile.
  • Appium позволяет автоматизировать тесты для одновременного выполнения на неограниченном количестве реальных мобильных устройств.
  • Эмуляторы и симуляторы не могут полностью имитировать реальные устройства и запускать их одновременно.
  • Поэтому обычно рекомендуется проводить тестирование на реальных устройствах.
  • Вы должны настроить устройство с сервером Appium так, чтобы оно могло распознать устройство.

Кроме того, возможности Appium учитывают множество параметров, таких как тип автоматизации, описание всей платформы (операционная система, версия и т. д.), приложение (название, детали запуска, время ожидания) и еще несколько переменных, связанных с запуском, выполнением или сеансами на устройствах.

Преимущества параллельного тестирования с Appium

Чтобы ускорить выполнение тестов, можно запустить их одновременно, используя параллельное тестирование с Appium. Особенно в рамках непрерывной интеграции (CI/CD) IT-компании активно применяют непрерывное тестирование для улучшения качества и скорости разработки программного обеспечения.

  • Параллельное тестирование на нескольких устройствах с помощью Appium делает процесс тестирования быстрее и уменьшает риск проблем, так как помогает выявить и устранить узкие места в приложении.
  • Ранее Appium тестировал только мобильные приложения для iOS и Android. Однако в последние годы функциональность Appium была расширена, и теперь он поддерживает тестирование десктоп-приложений для Windows.

Параллельное выполнение тестов в Appium с помощью TestNG

Параллельное выполнение тестов в Appium на нескольких устройствах является важной частью BrowserStack, которая позволяет запускать один и тот же тест или несколько тестов одновременно на разных устройствах и версиях операционных систем. Это значительно сокращает время выполнения вашего тестового набора.

  • Для этого необходимы имя пользователя BrowserStack и ключ доступа. Учетные данные можно найти в настройках аккаунта после регистрации.
  • Убедитесь, что на вашем устройстве установлены Maven и Java 8+.
  • Вы можете загрузить свое приложение для iOS (файл .ipa) или Android (файл .apk или .aab) на серверы BrowserStack, используя REST API.

Пример URL-запроса для загрузки приложения приведен ниже:

curl -u "hamidakhtar_HEivMw:3PXMtGPtfx3pHjpMZDbV" \
-X POST "https://api-cloud.browserstack.com/app-automate/upload" \
-F "file=@/path/to/apk/file"

Теперь мы должны изучить, как запускать тесты параллельно в Appium с использованием TestNG. Из репозитория GitHub загрузите пример кода интеграции TestNG:

git clone https://github.com/browserstack/testng-appium-app-browserstack.git

Выполните следующие команды для установки необходимых зависимостей:

# Test an android app
cd android/testng-examples
mvn clean
# Test an iOS app
cd ios/testng-examples
mvn clean

Это позволит установить необходимые зависимости, включая клиентскую библиотеку Java для Appium:

<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>com.browserstack</groupId>
<artifactId>browserstack-local-java</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>

В примере кода интеграции TestNG, в файле parallel.conf.json, расположенном в каталоге testng-examples/src/test/resources/com/browserstack/run_parallel_test, содержатся настройки Appium.

Список устройств для параллельного выполнения тестов можно указать следующим образом:

{
"server": "hub-cloud.browserstack.com",
"username": "hamidakhtar_HEivMw",
"access_key": "3PXMtGPtfx3pHjpMZDbV",
{
"server": "hub-cloud.browserstack.com",
"username": "hamidakhtar_HEivMw",
"access_key": "3PXMtGPtfx3pHjpMZDbV",

"capabilities": {
"project": "First TestNg Android Project",
"build": "TestNg Android Parallel",
"name": "parallel_test",
"browserstack.debug": true,
"app": "bs://<app-id>"
},
"environments": [
{
"device": "Google Pixel 3",
"os_version": "9.0"
},
{
"device": "Samsung Galaxy S10e",
"os_version": "9.0"
}
]
}

После настройки необходимых функций вы можете инициализировать веб-драйвер Appium для проведения удаленного тестирования на BrowserStack. Для этого необходимо использовать URL-адрес удаленного BrowserStack и учетные данные для доступа.

В  примере кода интеграции TestNG удаленный веб-драйвер инициализируется в файле BrowserStackTestNGTest.java, который находится в каталоге testng-examples/src/test/java/com/browserstack/run parallel test, как показано ниже:

//...

// Initialize the remote Webdriver using BrowserStack remote URL access credentials
// and desired capabilities defined above
driver = new AndroidDriver (
new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities
);

//...

Следующий шаг поможет вам настроить тест-кейс с помощью фреймворка TestNG, который будет работать одновременно на разных устройствах.

Перейдите в директорию testng-examples/src/test/java/com/browserstack/run_parallel_test.

Если вы тестируете своё приложение, скорректируйте тестовый сценарий, как вам необходимо:

package com.browserstack.run_parallel_test;

// imports...

public class ParallelTest extends BrowserStackTestNGTest {
@Test
public void test() throws Exception {
AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30)
.until(ExpectedConditions.elementToBeClickable(
MobileBy.AccessibilityId("Search Wikipedia")));
searchElement.click();

AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30)
.until(ExpectedConditions.elementToBeClickable(
MobileBy.id("org.wikipedia.alpha:id/search_src_text")));
insertTextElement.sendKeys("BrowserStack");

Thread.sleep(5000);

List<AndroidElement> allProductsName = driver.findElementsByClassName(
"android.widget.TextView");
Assert.assertTrue(allProductsName.size() > 0);
}
}

Теперь вы можете запускать параллельные тесты на BrowserStack. Перейдите в каталог testng-examples/ , а затем используйте следующую команду для запуска теста:

# Run using maven
mvn test -P parallel

На панели управления App Automate или с помощью REST API вы можете просмотреть результаты выполнения тестов.

Вывод

Процесс развертывания приложений стал намного легче благодаря передовой методологии DevOps. Однако часто проблемой в этом процессе становится тестирование. Оно занимает много времени, замедляя весь цикл разработки приложений.

Параллельное выполнение тестов в Appium решает эту проблему, поскольку позволяет автоматизировать тестирование нативных, гибридных и мобильных веб-приложений и обеспечивает поддержку множества языков программирования. Это действительно дает возможность командам QA тестировать на нескольких браузерах, устройствах и ОС, не беспокоясь о времени сборки приложения.

Перевод статьи «How to perform Parallel Test Execution in Appium?».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *