Покрытие кода для Android UI Automated Test

Yana Gusti 03/06/2019

 

Давайте поговорим об Android-тесте. Профессия Инженер QA раньше был связан с людьми, которые «недостаточно хороши», чтобы стать разработчиком. Я слышал несколько раз, что «Самый простой способ попасть в сферу ИТ – стать тестером».

Но на самом деле для того, чтобы стать профессиональным тестером, необходимо изучать новые технологии и постоянно совершенствоваться.

1. Тенденции 2017 года в тестировании:
интеграция, автоматизация и многое другое

Понятие “Гарантия качества», Так как отдельная отрасль IT-индустрии появилась не так давно. Отделы полномасштабного тестирования существовали только в крупных компаниях, занимающихся разработкой программного и аппаратного обеспечения, где ошибки были недопустимы.

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

топ ка
Приоритеты QA

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

Компанииначал инвестировать все больше и больше в процессе тестирования, поэтому профессия Инженер QA это только начало своего развития.

покрытие кода, тенденции в тестировании, интеграция, автоматизация, тестирование, пользовательский интерфейс, тестирование автоматизации, Android, EasyQA
Бюджет QA

Наиболее популярные тренды тестирования в 2016 году:

1.комплексное тестирование – привлекать тестировщиков в самом начале процесса разработки и на протяжении всего жизненного цикла продукта. Как говорится: исправить ошибку в документации гораздо дешевле, чем во время релиза.

покрытие кода, тенденции в тестировании, интеграция, автоматизация, тестирование, пользовательский интерфейс, тестирование автоматизации, Android, EasyQA
Ошибка против функции

2.автоматизация тестирования: помогает заменить регрессионное тестирование, например, продукт разработан с использованием гибкого метода и т. д.

покрытие кода, тенденции в тестировании, интеграция, автоматизация, тестирование, пользовательский интерфейс, тестирование автоматизации, Android, EasyQA
Автоматизация тестирования

3.облачные сервисы, которые предоставляют инструменты виртуального тестирования;
4.краудсорсинговое тестирование – тестирование, в котором участвует большое количество пользователей (эффективно для бета-тестирования).

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

2. Будущее тестирования принадлежит автоматизации

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

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

Хотя, по данным «STATE OF TESTING 2016» процент QA Automation Engineers на рынке равняется только 8%, Все больше и больше клиентов требуют запускать автоматические тесты для проверки программ.

покрытие кода, тенденции в тестировании, интеграция, автоматизация, тестирование, пользовательский интерфейс, тестирование автоматизации, Android, EasyQA
получить от qablog.practitest.com

Блок, автоматизация пользовательского интерфейса, нагрузка Тесты, а также использование инструментов автоматического тестирования, становятся популярными для проверки совместимости на разных ОС и устройствах.

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

Клевер, JaCoCo, Покрытие кода (стандартные инструменты покрытия кода IntellijIDEA) могут быть использованы для этой цели. Однако большинство из них были предназначены для расчета Покрытие кода модульного теста (например, при запуске теста через Clover, сообщение «Оптимизация Clover Test поддерживает только конфигурации JUnit» Показано IDE).

покрытие кода, Clover, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Клевер тестовое покрытие для юнит-тестов

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

3. Как представить результаты автоматического тестирования Android для пользовательского интерфейса

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

Изучив некоторые статьи, блоги и форумы, мы нашли замечательный проект Александра Кучеренко под названием Android Test + Espresso + JaCoCo. Он создал AndroidJacocoTestRunner, который мы успешно использовали, чтобы получить покрытие кода наших автоматических тестов.

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

По этой причине наша команда решила разработать проект Александра, чтобы он мог взаимодействовать с библиотекой Robotium. Благодаря простоте и понятности исходного кода AndroidJacocoTestRunner пришлось изменить всего несколько строк:

  • изменить путь к AndroidJacocoTestRunner в build.gradle
defaultConfig { 
    applicationId "com.example.android"
    minSdkVersion 15
    targetSdkVersion 21
    versionCode 1
    versionName "${ getBuildName() }"
    testInstrumentationRunner 
    "com.example.android.AndroidJacocoTestRunner"
}
  • измените зависимость espresso на robotium и синхронизируйте build.gradle
androidTestCompile'com.jayway.android.robotium:robotium-solo:5.4.1'

После того, как проект был очищен и перестроен, IDE уведомила об успешно пройденной конфигурации 🙂

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

Например,тест для авторизации в приложении был создан:

public class TestLogin extends 
ActivityInstrumentationTestCase2<SplashActivity> {
   private Solo solo;
   public TestLogin() {
      super(SplashActivity.class);
   }
   @Override
   public void setUp() throws Exception {
      super.setUp();
      solo = new Solo(this.getInstrumentation(), 
      getActivity());
   }
   @SmallTest
   public void testProfile() throws Exception{
   //check Logout or not
      if (solo.waitForView(R.id.search_button)) {
         solo.clickOnText("Staff");
         solo.scrollToBottom();
         solo.clickOnText("Logout");
      }
      solo.typeText(0, "username");
      solo.clickOnView(solo.getView(R.id.etPassword_ASM));
      solo.typeText(1, "123456");
      solo.clickOnText("LOG IN");
   }
   @Override
   public void tearDown() throws Exception {
      solo.finishOpenedActivities();
   }
}

Чтобы получить наглядный результат, тест можно запустить двумя способами:
1. из командной строки: gradlew: app: connectedAndroidTest

покрытие кода, Robotium, JaCoCo, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Выполнить тесты Robotium

2. из IDE – создать тест Android вИзменить конфигурацию,выбирать AndroidJacocoTestRunner и нажмите «Выполнить». Начнитеgradlew: app: jacocoTestReport с командной строкой, чтобы получить графический результат.

покрытие кода, Robotium, JaCoCo, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Выполнить тесты Robotium

Результат в виде таблицы (файл «index.html») можно найти в каталоге <Project name> appbuildreportscoveragedebug:

покрытие кода, Robotium, JaCoCo, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Результат тестирования автоматизации с покрытием кода

Также есть возможность получить Сводка теста:

покрытие кода, Robotium, JaCoCo, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Результат тестирования автоматизации с покрытием кода

и посмотрите, какой тест не прошел и почему:

покрытие кода, Robotium, JaCoCo, тенденции в тестировании, интеграция, автоматизация, покрытие тестами, пользовательский интерфейс, тесты автоматизации, Android, EasyQA
Результат тестирования автоматизации с покрытием кода

Выводы

Использование инструментов для расчета покрытия кода автоматическими тестами повышает скорость и эффективностьQA инженерная работа.

Нет необходимости создавать ручные отчеты и демонстрировать эффективность своей работы. Заказчик получает четкий результат, тестер отказывается от обязательства по ручной отчетности. Так что обе стороны довольны :).

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

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

  • совместное использование
  • ловить сбои
  • получить сборку прямо из GitHub или GitLab
  • сообщить об ошибке из приложения и других.

 

Зарегистрируйте новый аккаунт бесплатно!