Хороший вопрос. Вот несколько списков, которые следует учитывать, и ссылки на инструменты, которые могут помочь.
Что касается реализации тестов, вы можете прочитать некоторые из перечисленных учебных пособий и использовать такие инфраструктуры, как 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
Другие
Справочник
Помимо всех вышеперечисленных ссылок, есть несколько доступных статей: