Android Учебное пособие по тестированию приложений с использованием фреймворка автоматизации.

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

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

  • 🔘 Почему это важно: Android Программа работает на бесчисленном количестве устройств и комбинаций версий, поэтому проблемы совместимости практически неизбежны.
  • ☑️ Четыре уровня сложности теста: Модульное, интеграционное, эксплуатационное и системное тестирование позволяют выявлять различные классы дефектов.
  • Встроенная в устройство структура: Android фреймворк для тестирования основан на JUnit и приборостроение.
  • 🧪 Альтернатива JVM: Робоэлектрические тени Android классы, позволяющие запускать тестовые наборы на JVM без использования устройства или эмулятора.
  • 🇧🇷 Более широкий набор инструментов: Espresso, UI Automator и Appium Расширить область охвата за пределы встроенных классов.
  • 📊 Мифы, которых следует избегать: Использование одних только эмуляторов, нескольких мобильных устройств или тестирование в последний момент приводит к дефектам в процессе производства.

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

Почему Android Тестирование?

Android является крупнейшей операционной системой в мире. В то же время, Android Система фрагментирована: существует огромное количество устройств и Android версии, с которыми ваше приложение должно быть совместимо.

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

Android Стратегия тестирования

Правильный Android Стратегия тестирования должна включать следующее.

  1. Единичный тест
  2. Интеграционный тест
  3. Operaциональный тест
  4. Системный тест

Модульные тесты

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

Android платформа поставляется с предустановленным модулем JUnit Фреймворк 3.0. Это фреймворк с открытым исходным кодом для автоматизации. Модульное тестированиеи это позволяет разработчикам писать эффективные программы модульного тестирования.

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

Типичные действия пользовательского интерфейса на Android приложения, такие как касание, ввод текста и свайп

Наиболее распространенный способ проведения UI-тестирования на устройстве — это... Android Измерительные приборы. Но это имеет проблемы с производительностью. Один из лучших инструментов для тестирования пользовательского интерфейса. Android is Robotium.

⚠️ Примечание к версии: JUnit 3 класса, например Контрольно-измерительные приборы были признаны устаревшими в API 24; в текущих проектах используются AndroidX Тест, Espresso и UI Automator. Robotium С 2016 года не выпускался.

Интеграционные тесты

In Интеграционное тестированиеВсе модули, прошедшие модульное тестирование, объединены и проверены. Android Это часто означает проверку интеграции с такими компонентами, как Service, Activity и Content Provider.

Виды интеграционного теста на Android тестирование поставщиков услуг, деятельности и контента.

Для проведения интеграционных тестов используется множество фреймворков. Androidтакие компании, как Troyd, Robolectric и Robotium.

Operaционные тесты

OperaФункциональные тесты, также называемые приемочными тестами, — это тесты высокого уровня, проверяющие полноту и корректность работы приложения.

In Android, Фитнес Это платформа с открытым исходным кодом, которая упрощает запуск операционных тестов целевого приложения.

Системные тесты

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

In Android, Тестирование системы обычно включает

  • GUI тесты
  • Юзабилити-тесты
  • Тесты производительности
  • Стресс-тесты

В приведенном выше списке Тестирование производительности уделяется больше внимания. Вы можете использовать такие инструменты, как Tracобзор проводить тесты производительности на AndroidЭтот инструмент поможет вам отлаживать приложение и анализировать его производительность. TracФункция eview теперь устарела и заменена на другую. Профилировщик ЦП.

Автоматический Android Тестирование

As Android Система фрагментирована, требуется тестирование на множестве устройств, а это стоит денег. Автоматизированная система Android Тестирование помогает снизить эти затраты.

Преимущества автоматизированного Android тестов

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

Мы изучим следующие 2 фреймворка

  • Android Фреймворк для тестирования
  • Система роботоэлектрического тестирования

Android структура тестирования

Одна из стандартных сред тестирования для Android приложения — это Android Тестовая среда. Она хорошо интегрирована с... Android SDK — это инструмент, архитектура которого состоит из трех частей.

  1. Пакет приложения — это целевое приложение, которое необходимо протестировать.
  2. InstrumentationTestRunner — это Тестовый кейс Программа-исполнитель, которая запускает тестовые сценарии в целевом приложении. Она включает в себя:
    • Инструменты тестирования: SDK — это инструменты для создания тестов. Они интегрированы в IDE или запускаются из командной строки.
    • ОбезьянаРаннер: Инструмент, предоставляющий API для написания программ, управляющих Android устройство или эмулятор за пределами Android код.
  3. Пакет тестирования организован в виде тестовых проектов и соответствует определенному соглашению об именовании. Если тестируемое приложение имеет имя пакета «com.mydomain.myapp», то пакет тестирования должен называться «com.mydomain.myapp.test». Пакет тестирования включает 2 объекта:
    • Классы тестовых примеров: Укажите методы тестирования, которые будут выполняться в целевом приложении.
    • Имитация объектов: Включите фиктивные данные, которые будут использоваться в качестве примеров входных данных для тестовых случаев.

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

AndroidДиаграмма класса TestCase, показывающая JUnit и иерархия тестовых примеров для инструментальных испытаний

  1. Тестовый пример включает в себя JUnit методы для запуска JUnit тест
  2. TestSuite используется для выполнения набора тестовых случаев.
  3. InstrumentationTestSuite — это набор тестов, который внедряет инструментарий в InstrumentationTestCase перед их выполнением.
  4. InstrumentationTestRunner запускает тестовые сценарии для целевого приложения.
  5. AndroidTestCase extends JUnit Тестовый пример с методами для доступа к таким ресурсам, как контекст активности.
  6. ApplicationTestCase проверяет классы приложения в контролируемой среде.
  7. InstrumentationTestCase проверяет определенную функцию или поведение, например, вывод пользовательского интерфейса приложения.
  8. ActivityTestCase — это базовый класс, поддерживающий тестирование действий приложения.
  9. ProviderTestCase — это класс для тестирования отдельного ContentProvider.
  10. ServiceTestCase тестирует классы сервисов в тестовой среде и поддерживает жизненный цикл сервиса.
  11. SingleLaunchActivityTestCase используется для тестирования отдельной Activity с помощью InstrumentationTestCase.
  12. ActivityUnitTestCase Используется для проверки активности отдельных изолированных объектов.
  13. ActivityInstrumentationTestCase2 расширяет JUnit Класс TestCase позволяет подключиться к целевому приложению с помощью инструментирования, что дает возможность получить доступ к компонентам графического интерфейса и отправлять события пользовательского интерфейса, такие как нажатия клавиш или касания.

Ниже приведён пример ActivityInstrumentationTestCase. Он проверяет работу пользовательского интерфейса приложения «Калькулятор» и корректность выводимых данных.

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

Система роботоэлектрического тестирования

Тестирование с использованием Android Создание и запуск тестов с помощью устройства или эмулятора — сложная задача. Разработка и запуск тестов занимают много времени и требуют значительных усилий. Для решения этой проблемы есть другой вариант: тестовая платформа Robolectric.

Robolectric позволяет вам запускать Android Тестирование проводится непосредственно на JVM без необходимости использования устройства или эмулятора.

Классы робоэлектрических тестовых примеров

Робоэлектрик может выполнять следующие действия:

  • Зарегистрируйтесь и создайте класс Shadow
  • Перехватить загрузку Android класс
  • Пользы Javaпомогает переопределять тела методов Android класс
  • Привязать объект Shadow к Android класс

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

Другие фреймворки для тестирования

Помимо упомянутых выше фреймворков для тестирования, существует множество других, таких как:

  • Android Отчет Юнита, специальный инструментарий для запуска тестов Android который генерирует отчеты XML для интеграции с другими инструментами.
  • Espresso
  • Appium

Мифы Android Тестирование

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

Миф №1: Все Android Устройства одинаковые, поэтому достаточно тестирования на эмуляторах.

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

Android Диалоговое окно с сообщением об ошибке приложения отображается во время выполнения на реальном устройстве.

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

Миф №2: Тестирования на нескольких распространенных устройствах достаточно.

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

Миф №3: Достаточно провести исследовательское тестирование непосредственно перед запуском.

  • В большинстве видов тестирования мы разрабатываем тестовые сценарии, а затем выполняем их; в исследовательском тестировании разработка и выполнение происходят одновременно.
  • Нет никакого плана или подготовки, поэтому тестировщик запускает те тесты, которые сам выберет. Некоторые функции тестируются многократно, а другие — никогда.

Миф №4: Если в приложении есть ошибки, пользователи это поймут.

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

Поэтому крайне важно иметь надлежащий Android Стратегия тестирования разработана.

лучшие практики в Android Тестирование

  • Разработчики приложений должны создавать тестовые примеры одновременно с написанием кода.
  • Все тестовые примеры следует хранить в системе контроля версий вместе с исходным кодом.
  • Используйте непрерывную интеграцию и запускайте тесты каждый раз при изменении кода.
  • Не полагайтесь исключительно на эмуляторы и устройства с root-правами; подтвердите результаты на реальном оборудовании с помощью таких программ, как [название программы]. uiautomatorviewer

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

Нет. В современных проектах используется AndroidX Тест с JUnit 4 и AndroidJUnitБегун. JUnit Три описанных здесь класса тестовых примеров были признаны устаревшими в API 24 и остаются доступными только для устаревших наборов тестов.

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

Copilot генерирует стандартные шаблоны onView и check на основе описанного сценария. Он не может знать идентификаторы ваших представлений или время выполнения, поэтому запускайте каждое предложение один раз и сначала настройте сопоставители.

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

API ActivityScenario в AndroidX-тест, обычно с использованием ActivityScenarioRule. Он перемещает активность через определенные состояния жизненного цикла, не расширяя устаревший класс тестового случая.

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

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

GoogleТекущий набор библиотек для тестирования. Он включает в себя: JUnit и расширения Truth, ActivityScenario, Espresso А также UI Automator, работающий в рамках одной группы зависимостей, которая применяется на устройствах, эмуляторах и Robolectric.

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