Вы когда-нибудь разрабатывали приложение для Android и публиковали его в Google Play? Что вы будете делать, если вы получите отзыв пользователя, как —
Когда вы публикуете приложение в Google Play, оно должно быть тщательно протестировано, чтобы избежать потенциальных ошибок. Существует множество тестовых сценариев, которые должны быть выполнены перед публикацией приложения. Чтобы сэкономить усилия по тестированию , вам нужен инструмент для тестирования. Selendroid — один из лучших инструментов тестирования для Android-приложений .
- Что такое Селендроид?
- Зачем нам Selendroid?
- Архитектура Selendroid
- Начало работы с Selendroid
- Настройка среды Selendroid
- Как запустить Selendroid
- Основная команда Selendroid
- Начните свой первый тест с Selendroid
Что такое Селендроид?
Selendroid — это фреймворк для автоматизации тестирования мобильных приложений разных типов: родных и гибридных приложений Android и мобильных веб- приложений .
You can write the tests using the Selenium 2 client APIs. Because Selendroid still reuses of the existing Selenium infrastructure for the web
Selendroid is a powerful testing tool. It can be used on emulators and real devices
Why do we need Selendroid?
Selendroid is a great testing tool. But you may still doubt its usefulness.
This section will introduce the important features of the Selendroid to answer the question why you need Selendroid.
-
You can test the application under test using Selendroid without any modification of the app. You just need the binary file (APK) installed on the computer. In order to install the binary file on the device, the test app and mobile app must be signed with same sign key
-
Selendroid test app can interact with multiple devices or simulators simultaneously. It’s a great advantage of Selendroid. So you can test your app with various Android devices to check compatibility.
-
Selendroid can simulate human-user actions on an app, such as touch, swipe, drag and drop on devices
-
You can change the hardware devices (Plug and unplug) during the testing without restarting or stopping the test. Selendroid recognizes the new devices automatically
-
Corresponding to the Android API version up, Selendroid also supports the new Android API (From API 10 to API 19)
-
Selendroid also has some built-in inspector tool to help you identify the UI element of an application under test. For example the ID button, text field, text view…
Selendroid Architecture
Selendroid основан на инструментарии Android . Тесты Selendroid написаны на основе клиентского API веб-драйвера Selenium, поэтому он поддерживает полную интеграцию с текущими платформами Selenium.
На следующем рисунке описана архитектура Selendroid
Selendroid содержит 4 основных компонента:
-
Web Driver Client — клиентская библиотека Java, основанная на Selenium. Эта библиотека должна быть установлена на компьютере (который используется для разработки тестовых случаев)
-
Selendroid-Server — сервер, который работает в тестируемом приложении на Android-устройстве или в симуляторе. Это основные компоненты архитектуры Selendroid
-
Android Driver-App — встроенный драйвер Android, приложение Web View для тестирования мобильного Интернета.
-
Selendroid-Standalone — этот компонент используется для установки сервера Selendroid и тестируемого приложения (AUT)
Начало работы с Selendroid
Вы уже знали важность Selendroid. Теперь давайте запачкаем руки с помощью Selendroid.
Перед первым тестом с Selendroid нужно сделать 3 шага
Настройка среды Selendroid
Selendroid может работать на Windows, Linux и Mac OS. В этом уроке мы настроим Selendroid в ОС Windows.
Перед использованием Selendroid вам необходимо сначала установить следующий пакет
-
Java SDK (минимум 1.6)
Вы должны принять лицензионное соглашение и загрузить установщик Java (выберите x64 или x86 base в вашей ОС)
Загрузите и установите Java SDK как обычное программное обеспечение
- Последняя версия Android SDK
- На вашем компьютере должно быть хотя бы одно виртуальное устройство Android (AVD) или реальное устройство Android, подключенное к ПК.
- Selendroid Standalone с зависимостями , клиент Selendroid и клиент Selenium
- Программное обеспечение Eclipse
-
Настройте JAVA_HOME и ANDROID_HOME
Шаг 1) В окне правой кнопкой мыши щелкните Компьютер -> Свойства -> Расширенные настройки системы.
Шаг 2) Отображение окна «Свойства системы», выберите вкладку «Дополнительно» -> « Переменные среды»
Шаг 3) В появившемся окне «Окружение» нажмите «Создать» -> введите переменную ANDROID_HOME следующим
Значение переменной — это путь к android-sdks, который вы уже установили.
Найдите системную переменную Path -> Edit -> Add следующую строку после текущей строки
Аналогично ANDROID_HOME, добавьте новую переменную JAVA_HOME со значением, как показано ниже
Значение — это путь к вашей установке Java JDK.
Шаг 4) Перезагрузите компьютер -> Готово
Как запустить Selendroid
Шаг 1) Получение тестируемого приложения
Вы можете использовать существующее тестовое приложение Selendroid, чтобы проверить, как работает Selendroid ( ссылка на пример тестируемого приложения)
После завершения загрузки скопируйте этот APK и вышеуказанный автономный файл JAR Selendroid в папку с именем « Guru99».
Шаг 2) Запустите Selendroid
Откройте терминал в Windows и перейдите к папке Guru99, созданной на шаге 1.
Запустите следующую команду
Вывод будет отображаться следующим образом
После запуска этой команды запускается автономный HTTP-сервер Selendroid! Номер порта по умолчанию для этого сервера — 4444. Все аппаратные устройства, а также виртуальное устройство Android будут сканироваться и распознаваться автоматически. Selendroid определит целевую версию Android и размер экрана устройства.
Чтобы проверить целевую версию Android, а также информацию об устройстве, вы можете запустить следующий URL в браузере:
http: // localhost: 4444 / wd / hub / status .
Основная команда Selendroid
В этом разделе представлены некоторые основные командные строки Selendroid-Standalone. Вы можете использовать их для настройки среды тестирования Selendroid
-
Настройка порта Selendroid
Порт Selendroid по умолчанию — 4444. Но вы можете перейти на другой порт, добавив параметр в команду для запуска Selendroid.
Параметр: -port [номер порта]
Например:
В приведенной выше команде 5555 является новым портом.
Поэтому URL-адрес для проверки целевой версии Android изменился на: http: // localhost: 5555 / wd / hub / status
-
Укажите местоположение тестируемого приложения (файл Binary APK). Selendroid часто требовал абсолютный путь к этому файлу
Параметр: -app [путь к файлу]
Например:
В приведенной выше команде Selendroid автоматически находит базу двоичных файлов в «C: \ Guru99App.apk», чтобы получить информацию о тестируемом приложении.
Проверьте URL http: // localhost: 4444 / wd / hub / status , вы увидите эту информацию
-
Измените порт, который Selendroid использует для связи с сервером инструментов. Selendroid использует порт 8080 по умолчанию
Параметр: -selendroidServerPort [номер порта]
пример
Порт теперь изменен на 9000
-
Измените время ожидания для запуска эмуляторов. Единица составляет миллисекунды.
Параметр: -timeoutEmulatorStart
По умолчанию Selendroid будет ждать 300 000 миллисекунд, пока не запустится эмулятор. Вы можете изменить на новое время ожидания (200 000 мс) по команде
По истечении этого времени истек срок действия. Если эмулятор не может запуститься, Selendroid выдаст ошибку исключения (ошибка при поиске устройств / эмуляторов.), А затем прекратит работу.
-
Когда вы запустите команду Selendroid на терминале, вы увидите распечатанный журнал на экране. Вы можете изменить тип журнала, который вы видите, добавив следующий параметр
Параметр: -logLevel [ тип журнала ]
Значениями уровня журнала являются ERROR, WARNING, INFO, DEBUG и VERBOSE. По умолчанию: ОШИБКА.
Например, установите Selendroid для печати только журнала WARNING, вы можете использовать эту команду
Selendroid печатает только журнал WARNING
Начните свой первый тест с Selendroid
Этот раздел представляет собой пошаговое руководство по созданию первого сценария тестирования с использованием Selendroid.
Предположим, у нас есть Android-приложение под тестовым именем Guru99App. Приложение включает в себя текстовое поле и название кнопки «Показать текст».
Нам нужно выполнить следующий тестовый пример с помощью Selendroid
Тестовые случаи |
Состояние |
Ожидаемый результат: |
|
Доступен бинарный файл тестируемого приложения Устройство подключено к ПК |
Текст «Показать текст здесь» заменяется текстом какой пользователь вводит в текстовое поле |
Шаг 1) Создайте проект Java в Eclipse
Шаг 2) Добавить селен и Selendroid jar файл в среде затмения
Щелкните правой кнопкой мыши проект Guru99Test -> Путь сборки -> Добавить внешние архивы
Перейдите в папку, в которой хранятся файлы JAR
Там должны быть добавлены 3 jar-файла
- selendroid-client-0.10.0.jar: клиентская библиотека Selendroid java
- selendroid-standalone-0.11.0-with-dependencies: библиотека автономного сервера Selendroid
- selenium-java-2.40.0.jar: библиотека веб-драйверов Selenium
Выбрать все -> Выбрать Открыть, чтобы добавить файл JAR в проект
Шаг 3) после добавления вышеуказанной библиотеки эти библиотеки будут добавлены в справочные библиотеки тестового проекта. Тестировщик может использовать API этих библиотек для разработки тестовой программы.
Создайте пакет «com.guru.test» и добавьте Java-файл «Guru99Test.java», как показано ниже
Щелкните правой кнопкой мыши Guru99Test -> New -> Package
Введите com.guru.test в поле «Имя» в диалоговом окне «Новый пакет Java» à «Готово».
Eclipse создаст список папок и подпапок, как это в структуре исходного кода
Шаг 4) Установите TestNG для Eclipse
В Eclipse, Справка -> Установить новое программное обеспечение, в диалоге установки нажмите кнопку Добавить и введите следующее
- Название: TestNG
- Расположение: http://selendroid.io/
Нажмите OK -> Далее, чтобы установить TestNG
Шаг 5) Скопируйте Guru99App.apk в папку Test App
Шаг 6) Получить идентификатор тестируемого приложения.
Предположим, у нас есть файл APK с именем Guru99App.apk. Выполните шаг, описанный в предыдущем разделе, выполните команду на терминале.
Откройте следующую ссылку в браузере
http: // localhost: 4444 / wd / hub / status .
Информация об устройстве отображается, скопируйте значение appId «com.guru99app: 1.0»
Шаг 7) Откройте файл Guru99Test.java (в примере кода) и измените его следующим образом
Чтобы создать новый сеанс тестирования с Selendroid, вы должны предоставить идентификатор приложения в формате: com.guru99app: 1.0 . Этот идентификатор приложения может быть идентифицирован на шаге 6. Если вы не установите идентификатор приложения, соответствующий устройству Android, сеанс тестирования выдаст ошибку и не запустится.
После инициализации найденного устройства Selendroid создает настроенный сервер Selendroid и устанавливает на него сервер Selendroid.
Selendroid также устанавливает тестируемое приложение и запускает selendroid-сервер на устройстве.
После успешной инициализации тестового сеанса тестовая команда запускается на устройстве. (Например, для ввода текста нажмите кнопку…). Если тест добавляет тестовую сессию, эмулятор автоматически остановится
Шаг 8) Начните новый тестовый сеанс
Запустите сервер Selendroid, используя следующую команду на терминале, как на шаге 6
После запуска Selendroid Server откройте пример тестового проекта Guru99test на Eclipse, установите точку останова на строке 77 в файле Guru99Test.java, дважды щелкнув строку 77 -> Точка отобразится, как показано ниже
Начните тестовую сессию правой кнопкой мыши. Выберите проект Guru99Test -> Debug As -> Testng Test.
Тестовая сессия начнется как показано ниже
Шаг 9) Получить идентификатор элемента GUI тестируемого приложения
После успешного запуска тестовой сессии откройте браузер, перейдите по URL-адресу http: // localhost: 4444 / inspector
Вы увидите, что тестируемое приложение запускается, как показано ниже
Наведите указатель мыши на каждый элемент пользовательского интерфейса AUT (Button, TextField, Text Label), идентификатор каждого элемента будет выделен на правой панели.
После этого шага вы можете получить идентификатор каждого из указанных выше элементов пользовательского интерфейса.
- Кнопка Показать текстовый идентификатор: » btnShow «
- Идентификатор текстового поля: » edtText «
- Идентификатор текста метки: » txtView «
Эти идентификаторы будут использованы на следующем этапе
Шаг 10) Войдите в тестовую программу, как показано ниже
Тестовая программа с использованием Selendroid включает в себя 3 раздела
Тест настройки:
Ниже приведен код для теста настройки, он устанавливает условие для тестового сеанса. В случае ошибки Selendroid сгенерирует исключение, и тестовое приложение остановится.
Код включает в себя комментарии для объяснения каждого утверждения.
package com.guru.test; import io.selendroid.SelendroidCapabilities; import io.selendroid.SelendroidConfiguration; import io.selendroid.SelendroidDriver; import io.selendroid.SelendroidLauncher; import io.selendroid.device.DeviceTargetPlatform; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.testng.Assert; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; /** * @author Guru99 Test App using Selendroid * Application under test: Guru99App * */ public class Guru99Test { //Declare web driver variable private WebDriver driver; /** * Setup the environment before testing * @throws Exception */ @BeforeSuite public void setUp() throws Exception { //Start selendroid-standalone during test SelendroidConfiguration config = new SelendroidConfiguration(); // Add the selendroid-test-app to the standalone server config.addSupportedApp("Guru99App.apk"); //start the standalone server SelendroidLauncher selendroidServer = new SelendroidLauncher(config); selendroidServer.launchSelendroid(); // Create the selendroid capabilities SelendroidCapabilities capa = new SelendroidCapabilities(); // Specify to use selendroid's test app capa.setAut("com.guru99app:1.0"); // Specify to use the Android device API 19 capa.setPlatformVersion(DeviceTargetPlatform.ANDROID19); // Don't request simulator, use real device capa.setEmulator(false); //capa.wait(10000000); // Create instance of Selendroid Driver driver = new SelendroidDriver(capa); }
Выполнить тест
Ниже приведен код для выполнения теста. Код включает в себя комментарии
Здесь снова тестовые шаги
-
Введите текст «Привет Гуру»
-
Нажмите кнопку Показать текст
-
Подожди некоторое время
-
Убедитесь, что приложение отображает текст, когда пользователь вводит текстовое поле (например, отображать текст «Привет, Гуру»)
/** * Start execute the test case * 01. Enter the text "Selendroid" to the textfield * 02. Press OK button * @throws Exception */ @Test public void selendroidTest() throws Exception { // Print the log System.out.print("Start executing test"); // Find the input text field on screen // The id of this text field was get from step 9 WebElement inputField = driver.findElement(By.id("edtText")); // Verify that the text field enabled so user can enter text Assert.assertEquals("true", inputField.getAttribute("enabled")); // Enter a text to text field inputField.sendKeys("Hello Guru"); // click Show Text button // The id of this button was get from step 9 WebElement button = driver.findElement(By.id("btnShow")); button.click(); // Delay time to take effect Thread.sleep(5000); //Find the label "Text Show Here" on screen // The id of this label was get from step 9 WebElement txtView = driver.findElement(By.id("txtView")); //Get the text display on screen String expected = txtView.getText(); // Verify that the text which user enter on text field is same as text display on screen Assert.assertEquals(expected, inputField.getText()); }
Закончить тест
Следующий код завершит тестирование, остановив драйвер Selendroid.
/** * Stop the Selendroid driver * */ @AfterSuite public void tearDown() { driver.quit(); }
Вы можете увидеть детали в примере кода, включенного в эту статью.
Шаг 10) Подключите устройство Android к ПК через USB-кабель. Очки для наблюдения —
-
Убедитесь, что на устройстве не настроена блокировка экрана.
-
Устройства должны быть подключены через USB к компьютеру, на котором запущен автономный компонент selendroid .
-
Устройство должно установить как минимум Android Target Version API 10
Шаг 11) Запустите тестовое приложение: щелкните правой кнопкой мыши Guru99test -> Run as -> TestNG test
Шаг 10) Запуск скрипта выполняется следующим образом
Шаг 12) После завершения теста, TestNG автоматически генерирует протокол теста следующим образом
Хорошая работа, вы сделали тест сейчас.
Резюме
Резюме
-
Selendroid — очень мощный инструмент для тестирования нативного приложения для Android, гибридного приложения и веб-приложения.
-
Может использоваться как на реальных устройствах, так и на симуляторе.
-
Это также позволяет вам запускать тесты параллельно, выполняя тест на нескольких устройствах.
-
Весь пакет Selendroid состоит из четырех компонентов:
-
Клиент веб-драйвера,
-
Selendroid-сервер,
-
Приложение для Android-драйвера
-
Selendroid-одинокий
-
-
Для использования Selendroid вам необходимо установить Java JDK, Android SDK и Eclipse.