Robotium Руководство: Android Тестовая среда с примером

⚡ Умное резюме

Robotium это открытый исходный код Android Фреймворк для автоматизации тестирования, который управляет нативными и гибридными приложениями через их пользовательский интерфейс, позволяя тестировщику создавать сценарии функционального, системного и приемочного тестирования, охватывающие несколько аспектов. Android деятельности.

  • 🔘 Основной класс: Solo предоставляет доступ к методам щелчка, поиска, перетаскивания и подтверждения, которые есть у каждого пользователя. Robotium вызовы тестовых случаев.
  • ☑️ Подходит для использования в режиме «черного ящика»: Тесты привязываются к компонентам пользовательского интерфейса во время выполнения, поэтому требуются минимальные знания исходного кода приложения.
  • Процедура в четыре этапа: Разработайте спецификацию теста, напишите тестовую программу, выполните ее на устройстве, а затем соберите результаты.
  • 🧪 Реализованный пример: Полное приветствиеAndroidТестовый класс проверяет видимый текст, текущее действие и кнопку «Старт».
  • 🇧🇷 Два режима работы: Запускайте тесты из IDE или из терминала с помощью команды adb shell am instrument.
  • ⚙️ Текущий статус: Robotium 5.6.3 остается последним релизом, поэтому новый Android В проектах его обычно сочетают или заменяют чем-либо другим. Espresso.

Robotium Обучение

Что такое Robotium?

Robotium это Android Фреймворк для тестирования, автоматизирующий тестовые сценарии для нативных и гибридных приложений. Используется RobotiumРазработчик может создавать надежные автоматизированные тестовые сценарии для графического интерфейса пользователя. Android приложения. Разработчик также может писать сценарии функционального, системного и приемочного тестирования, охватывающие несколько областей. Android деятельности.

Robotium Фреймворк для тестирования

Стандарт Android Тестовая среда имеет ограничения, перечисленные ниже.

  • Невозможно справиться с несколькими видами деятельности
  • Производительность выполнения теста низкая
  • Тестовые примеры сложны и трудны в реализации.

Robotium Этот фреймворк — лучший выбор для проведения тестирования. Android Приложение.

Robotium Это фреймворк с открытым исходным кодом, который считается расширением Android тестовая среда. Использование RobotiumРазработчик может создавать надежные автоматизированные тестовые сценарии для графического интерфейса пользователя. Android Более того, разработчик может писать сценарии функционального, системного и приемочного тестирования, охватывающие множество приложений. Android деятельности.

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

Расширенные возможности Robotium по сравнению со стандартом Android инструментальная система

Расширенные возможности Robotium

Robotium Классы тестовых примеров

Robotium поставляется с небольшим набором классов для тестирования, а в примере из статьи используется импорт устаревших классов. com.jayway.android.robotium.solo пакет. Эти классы поддерживают тестовые примеры, охватывающие несколько видов деятельности, и Solo интегрирован с ActivityInstrumentationTestCase2.

Примечание: текущий Robotium В релизах тот же класс доступен под более коротким названием. com.robotium.solo пакет, в то время как координаты Maven оставались com.jayway.android.robotium:robotium-solo. Настройте импорт в соответствии с версией JAR-файла, который вы фактически добавите в проект.

На приведенной ниже диаграмме показано, как класс Solo располагается поверх тестового примера инструментального тестирования.

Класс Solo, интегрированный с ActivityInstrumentationTestCase2 в Robotium прецедент

Интеграция Robotium и ActivityInstrumentationTestCase2

Тестировщик может писать тестовые примеры, не зная архитектуры приложения, что делает такой подход формой тестирование черного ящикаЭто существенное преимущество по сравнению с равниной. Android классы тестовых примеров.

Как использовать Robotium

Использовать Robotium и на Вашем Android Для выполнения тестового проекта необходимо следовать приведенным ниже шагам.

Шаги, необходимые для добавления и использования Robotium внутри Android тестовый проект

Как это работает? Robotium

Чтобы гарантировать качество вашей продукции. Android Для подачи заявки следуйте описанной ниже четырехэтапной процедуре.

  • Разработайте спецификацию тестирования.
  • Разработайте тестовую программу.
  • Выполните тестовый пример на целевом устройстве.
  • Соберите результаты теста.

Приведенная ниже блок-схема упорядочивает эти четыре этапа.

Блок-схема четырехэтапного процесса Android процедура тестирования приложения

Android процедура тестирования приложения

ШАГ 1) Разработка спецификации испытаний

Это первый шаг тестирования вашего приложения. На этом шаге вы определяете объект тестирования. Android Приложение имеет множество объектов, которые необходимо протестировать, таких как пользовательский интерфейс, активности, компоненты и сервисы. Четкое определение целей помогает обеспечить широкое покрытие тестами.

  • Спланируйте типы тестирования, которые следует провести (модульное тестирование, функциональное тестирование, системное тестирование).
  • Разработайте каждый прецедент для максимального охвата при сохраненииping Количество тестовых случаев невелико. Чем больше кода вы тестируете, тем выше вероятность раннего обнаружения ошибок.

ШАГ 2) Напишите тестовую программу

Этот раздел поможет вам написать эссе. Android тестовая программа с использованием Android JUnit тесты и RobotiumПредположим, вы уже разработали Android программа под названием HelloAndroidДанная программа обладает функциями, описанными ниже.

  • Выведите на экран текст «Hello world!».
  • Отобразить приветствиеAndroid Сообщение появляется при нажатии пользователем кнопки «Старт».

На скриншоте ниже показано работающее на устройстве тестируемое приложение.

ПриветAndroid Тестируемое приложение отображает текст "Hello world" и кнопку "Пуск".

ПриветAndroid приложению

Системные требования

  • Android Платформа поставляется с предварительно интегрированным модулем. JUnit 3-я структура, которая и есть то, что ActivityInstrumentationTestCase2 строится на.
  • Чтобы создать Android тестовый проект от EclipseВашему станку требуется исправный механизм. Android Установка SDK.
  • Установите текущую версию Android SDK платформы, а не закреплённый более старый релиз.

На скриншотах в этом пошаговом руководстве используются Eclipse с помощью плагина ADT, который был стандартным набором инструментов на момент написания примера. Eclipse Поддержка ADT прекращена, поэтому на современном компьютере вам потребуется... скачать Android Studio вместо этого используйте тот же тестовый код внутри Gradle модуль.

Для того, чтобы получить Robotium фреймворк для тестирования, скачайте его. Robotium библиотека из Robotium Проект страницу.

Создать Android Тестовый проект

  • Нажмите Файл -> Создать -> Другое.
  • Выбирайте Android -> Android Протестируйте проект, как показано на рисунке ниже, затем выберите «Далее».

Eclipse Мастер создания нового проекта с Android Выбран тестовый проект

Создать новый Android тестовый проект

Напишите название вашего тестового проекта. Согласно общепринятой системе именования, тестовый проект должен называться «Hello».AndroidТест".

Eclipse диалог с тестовым проектом под названием HelloAndroidТестирование с соблюдением соглашения об именовании.

Добавьте название тестового проекта в соответствии с принятым соглашением об именовании.

Выберите тестируемое приложение. В данном случае это Hello.Android, затем нажмите Готово.

Eclipse шаг мастера выбора «Здравствуйте»Android в качестве целевого тестируемого приложения.

Выберите целевое приложение для тестирования.

Создание наборов тестов

На основе вашей спецификации тестов вы создаете наборы тестов для вашей тестовой программы. Вы можете выбрать из различных вариантов. тестирование программного обеспечения В этом руководстве используется стандартный фреймворк. Android структура тестирования ActivityInstrumentationTestCase2Для тестирования с помощью Robotium, добавить Robotium файл библиотеки в libs директория внутри папки вашего проекта.

Тестовый пример определяет набор инструментов, используемых для выполнения нескольких тестов. Для определения тестового примера следуйте приведенной ниже структуре программы.

  • Реализуйте подкласс класса TestCase.
  • Определите переменные экземпляра, которые будут хранить состояние прибора.
  • Инициализируйте состояние фикстуры, переопределив метод setUp().
  • Для очистки ресурсов после проверки переопределите метод tearDown().

Приведенная ниже диаграмма отображает эту структуру на тестовой программе, которую вы собираетесь написать.

Структура Robotium Тестовая программа, демонстрирующая настройку, методы тестирования и завершение работы.

Структура тестовой программы

package com.example.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 <HelloAndroid> {
    
	private HelloAndroid mActivity;
	private TextView mView;
	private String resourceString;
	private Solo solo;
	
	public HelloAndroidTest () {
		// TODO Auto-generated constructor stub
		super("com.example.helloandroid",HelloAndroid.class);	
	}
	
	 @Override
	protected void setUp() throws Exception {
		// TODO Auto-generated method stub
	//	super.setUp();
		 
	 	mActivity = this.getActivity();
		solo = new Solo(getInstrumentation(),getActivity());
		mView = (TextView) mActivity.findViewById(com.example.helloandroid.R.id.textview2);
		resourceString = mActivity.getString(com.example.helloandroid.R.string.hello_world);
		
	}
	 
	 @Override
	protected void tearDown() throws Exception {
		// TODO Auto-generated method stub
		//super.tearDown();
		solo.finishOpenedActivities();
	}
	
	public void testPrecondition() {
		assertNotNull(mView);
	}
	
	/* test Target application contains a text display "Hello World!"*/
	public void testSearchText() {
		assertEquals(resourceString,(String) mView.getText());
	}
	
	/* test HelloAndroid Activity on target application is exist*/
	public void testCurrentActivity() throws Exception  {
    	solo.assertCurrentActivity("wrong activity", HelloAndroid.class);
    }
    
	/* test Application UI contains "Start" button */
	/* send event click button to target application */
    public void testSearchButton() throws Exception {
    	boolean found = solo.searchButton("Start");
    	solo.clickOnButton("Start");
    	assertTrue(found);
    }

	

}

Добавление тестовых случаев

  • В том же пакете, что и набор тестов, создайте классы TestCase.
  • Для проверки определенной активности, например, приветствия.AndroidСоздайте тестовый случай, расширяющий ActivityInstrumentationTestCase2.Android>.
  • Внутри этого класса тестировщик получает тестируемое действие с помощью метода getActivity().
  • Создайте тест для этой активности, добавив метод с именем «test + исходное имя метода».
  • Внутри метода тестирования тестировщик может использовать Android JUnit Функции для сравнения фактического значения с ожидаемым значением. Эти методы показаны ниже.

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

Примеры методов Robotium Индивидуальный класс и Android структура тестирования

Примеры методов Robotium и Android структура тестирования

Приведенный выше набор тестов подтверждает, что графический интерфейс приложения отображает текст «Hello World!» и содержит кнопку с названием «Start».

ШАГ 3) Запустите тест

После завершения написания тестовой программы запустите тест, выполнив следующие шаги.

  • Подключите Android Подключите устройство к своему ПК или запустите эмулятор, если реальное устройство недоступно.
  • В вашей IDE щелкните правой кнопкой мыши по тестовому проекту и выберите «Запустить как» → Android Модульное тестирование.

На скриншоте ниже показан запуск теста из IDE.

Бери Robotium тестовая программа как Android Модульное тестирование из IDE

Запуск тестовой программы

Помимо запуска теста из IDE, вы можете запустить его из командной строки. В этой тестовой программе используется тестовый пакет. com.example.helloandroid.testВ терминале Linux используйте следующую команду для запуска всех тестов из этого пакета.

$ adb shell am instrument -w -e package com.example.helloandroid.test

ШАГ 4) Получите результаты теста

После выполнения теста вы собираете его результаты.

В этой тестовой программе выполняются четыре метода тестирования. В приведенном ниже примере все тестовые случаи прошли успешно.

Результаты теста, отображающие все четыре Robotium тестовые случаи пройдены

Результаты тестирования выводятся после успешного прохождения всех тестовых случаев.

Если какой-либо тестовый случай не пройден, отображается результат, в котором указано, какие именно тестовые случаи завершились неудачей.

Результаты тестирования, представленные в виде списка Robotium тестовые случаи, которые не прошли

Вывод результатов тестирования при сбое тестового случая

Источник Code Примеры

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

Если вы хотите сравнить Robotium Другие варианты в этом разделе см. в разделе тестирование мобильного приложения руководство, Appium учебник и сводка инструменты для тестирования мобильных приложений.

Часто задаваемые вопросы (FAQ)

Robotium 5.6.3 остается последней опубликованной версией, а активная разработка была прекращена несколько лет назад. Фреймворк по-прежнему работает, и артефакт все еще находится в Maven Central, но в новом виде. Android проекты обычно выбирают Espresso, который Google поддерживает.

Robotium Это фреймворк типа «черный ящик», который привязывается к виджетам во время выполнения и требует минимальных знаний об исходном коде. Espresso is GoogleЭто инструмент «белого ящика», синхронизирующийся с потоком пользовательского интерфейса и ожидающий доступа к коду приложения.

Robotium управляет только одним приложением за раз, не может надежно обрабатывать Flash или веб-контент вне WebView, не предлагает встроенной записи в JAR-файле с открытым исходным кодом, а его зависимость от устаревших классов инструментирования усложняет современные решения. Gradle строит.

Объявлять androidTestImplementation 'com.jayway.android.robotium:robotium-solo:5.6.3' в файле сборки модуля или удалите его. robotium-solo JAR в libs и указать его как зависимость файла.

Да. Robotium Тесты представляют собой обычные инструментальные тесты, поэтому один и тот же APK-файл запускается как на эмуляторе, так и на физическом устройстве. Для проверки жестов, датчиков и производительности предпочтительнее использовать реальное оборудование, поскольку время выполнения на эмуляторе может отличаться.

Robotium Подходит для функциональных, системных и пользовательских сценариев на уровне пользовательского интерфейса. Не заменяет модульные тесты, которые работают быстрее на JVM, а также более широкие возможности тестирования. виды тестирования ПО Для выпуска еще требуется релиз.

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

Второй пилот GitHub Можно создать шаблоны для настройки Solo, методов tearDown и assertion из класса Activity. RevВнимательно изучите это предложение, поскольку оно может привести к появлению устаревшего импорта пакетов или утверждений, которые приложение никогда не сможет выполнить.

Подведем итог этой публикации следующим образом: