Что нужно помнить при тестировании приложения для Android - PullRequest
12 голосов
/ 02 октября 2010

Какие моменты нужно учитывать при тестировании приложений для Android? Какие методы или тестовые примеры используются для Android?

1 Ответ

16 голосов
/ 02 октября 2010

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

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

Типы испытаний

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

  • Юнит-тесты
    • Не для Android, т.е. бизнес-логика
    • Модульные тесты Android, например тестирование компонентов пользовательского интерфейса
  • Функциональные тесты
    • Тестирование Android-инструментов
  • Интеграционные тесты
    • Тестирование взаимодействия компонентов приложения
  • Системные тесты
    • Тестирование черного ящика, которое проверяет все приложение и его зависимости
  • Тесты приемлемости
    • Имеют ли компоненты пользовательского интерфейса правильные метки, описания и тексты подсказок?
    • Существуют ли потенциальные проблемы, которые могут повлиять на людей, например, дальтонизм?
  • Тесты безопасности и надежности
    • Подтверждены ли входные данные перед использованием, например, в локальной базе данных или перед отправкой на сервер?
    • Надежно ли обрабатывает пользовательский интерфейс все события, например, изменения конфигурации, аппаратные события?

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

Переменные

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

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

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

Это упростит тестирование на разных устройствах.

Инструменты

Написание тестов

  • Встроенная поддержка JUnit для модульного тестирования
  • TestCase классы для тестирования компонентов Android
  • Robotium & mdash; библиотека, которая делает очень простым написание черного ящика функциональных тестов, которые также могут пересекать несколько действий

Использование насмешек

Хотя Android предоставляет несколько фиктивных объектов , которые можно использовать для подделки компонентов в тестовых целях, еще много было бы полезно .

По этой причине (и в целом) проектирование вашего приложения с учетом тестируемости является хорошей идеей. Например, не обращайтесь напрямую к ConnectivityManager, а вместо этого создайте интерфейс, который определяет нужные вам вызовы методов. Затем напишите две реализации этого интерфейса: одну для Android ConnectivityManager и другую, макетную версию. Выберите реализацию, которую вы хотите использовать во время выполнения, в зависимости от того, выполняете ли вы модульные тесты или нет.

Выполнение тестов

  • InstrumentationTestRunner & mdash; утилита по умолчанию для запуска автоматических тестов Android
  • Плагин эмулятора Android для Jenkins & mdash; автоматизирует создание и выполнение эмуляторов Android с различными конфигурациями, поэтому вы можете очень легко протестировать один APK на нескольких типах устройств
  • обезьяна - отправляет случайные команды в ваше приложение;форма fuzzing

Другие

Справочник

Помимо всех вышеперечисленных ссылок, есть несколько доступных статей:

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