Данная статья - это каталогизированный набор ссылок по теме тестирования Android приложений, с краткими аннотациями. Я создал его для того, чтобы самому было удобнее разбираться во всем этом материале и выбирать оптимальную стратегию тестирования собственных Android приложений. Надеюсь, этот набор ссылок пригодится и вам.
С чего начать
В июне 2011 вышла книга, посвященная тестированию Android-приложений: Diego Torres Milano. Android Application Testing Guide. Книга добротная, написана хорошо. Блог автора так же содержит массу полезной информации, например - вот презентацию Introduction to Android Testing @ OSCON 2012 (PDF).Официальная документация по встроенным средствам тестирования Android Developers Guide. Testing (перевод). Из недостатков: Android testing API основано на стиле JUnit 3 и не поддерживает JUnit 4. Тесты запускаются и работают на эмуляторе/девайсе, т.е. запуск медленный.
Тестирование Android приложений - пример разработки небольшого Android-приложения с тестом на базе стандартного фреймворка android.test.
Best practices for unit testing Android apps - обсуждение инструментов тестирования на stackoverflow.
How to do Unit Testing on Android with Eclipse - видео, демонстрирующее создание тестового проекта в Eclipse.
Автоматизированное тестирование мобильных приложений - обзор инструментов для тестирования интерфейса мобильных приложений.
Серия курсов - Автоматизация мобильных приложений (в настоящее время курсов там мало, но анонс многообещающий).
Шаблоны проектирования при разработке под Android. Часть 2 — MVP и Unit tests. Путь Джедая, Шаблоны проектирования при разработке под Android. Часть 3 — Пользовательский интерфейс, тестирование, AndroidMock - пара статей по теме тестирования на хабре. Содержание местами спорное, но комментарии, как всегда, интересные.
Testing on android - весьма интересная презентация с полезными ссылками.
Серия обзорных статей, посвященных тестированию мобильных приложений: Mobile Application Testing - Part I, part II, part III.
Проблема скорости запуска тестов
При разработке под Android очень не удобно использовать короткие unit-тесты (раз статья, два статья). Дело в том, что стандартные тесты работают только на эмуляторе или на устройстве (т.к. зависят от Android API). Запуск тестов, в этом случае, становится достаточно длительным.Для ускорения работы можно выделять Android-независимые тесты в отдельный Java проект и запускать их на JVM компьютера, но это, конечно же, не решение проблемы. Вот дискуссия на stackoverflow: Best practices for unit testing Android apps. Основные варианты: использовать библиотеки Robolectric и Robotium .
Библиотека Robolectric действительно решает проблему скорости запуска теста. Тесты запускаются не на эмуляторе/устройстве, а прямо на JVM компьютера, что на порядок быстрее. Robolectric позволяет тестировать большую часть функциональности Android, включая layouts, GUI, сервисы, работу с сетью, виджеты. К тому же, Robolectric использует синтаксис junit4. В то же время следует отдавать себе отчет в том, что Roboelectric эмулирует Android API. Точность и полнота такой эмуляции, естественно, не 100%.
Introducing Calculon – a Java DSL for Android Activity testing - библиотека для удобного тестирования Activity.
Mock-библиотеки под Android
Про то, что такое mock-объекты и как их использовать, есть статьи на хабре: JMock и EasyMock: сравнение и howto в примерах и не только, Глоток МоКито. Mock-библиотек, работающих под Android, существует несколько: EasyMonkey, PowerMock, Android Mock, Mockito.Автоматизация тестирования. Многократное воспроизведение записанного теста.
MonkeyRunner - инструмент, входящий в состав Android SDK. С помощью MonkeyRunner можно писать программы на Питоне, способные установить Android-приложение, запустить его, послать ему последовательность нажатий клавиш, сделать и сохранить результирующий скриншот экрана.Robotium - фреймворк, дающий возможность разрабатывать тесты "черного ящика" для Android приложений. Тесты пишутся на Java. Для тестирования создается стандартный тестовый проект, в который добавляется библиотека Robotium. Тестовый проект можно запускать как на эмуляторе, так и на девайсе. Robotium использует синтаксис JUnit3. Порядок установки и создания тестового проекта на Robotium подробно описан в Robotium Tutorials. Полезная статья: Настройка среды для разработки Android приложений и автоматизации на Robotium.
FoneMonkey for Android - бесплатный open source инструмент для тестирования rich interface, разработанный компанией Gorilla Logic (см. интервью с разработчиком FoneMonkey for Android, а так же статью в DrDobbs, посвященную FoneMonkey for IOS). Программа умеет записывать высокоуровневые action-based test automation скрипты на Java/Java Script, которые можно редактировать и (при необходимости) писать вручную.
Sikuli - еще один бесплатный инструмент для автоматизации тестирования GUI. Особенность - скрипт, задающий последовательность действий, позволяет использовать скриншоты. Чтобы дать команду нажать кнопку, достаточно подставить в скрипт скриншот этой кнопки (используется специальная Sikuli IDE). Видео на youtube наглядно демонстрирует процесс создания скрипта. А вот пример видео, где sikuli "играет" в Angry birds. Вот пример использования sikuli для тестирования Android GUI. Преимущества и недостатки использования Sikuli для тестирования мобильных приложений приведены в презентации.
T-PLAN ROBOT (VNCRobot) - универсальный инструмент для тестирования "черных ящиков" (видео, mobile testing brochure (pdf)). Есть платная и бесплатная open-source версия.
На самом деле, инструментов, предназначенных для автоматизации тестирования приложений, очень много. Из платных отмечу: Eggplants,Test Quest, ZPX. Есть еще Jamo Solutions: M-eux test и SeeTest специально заточенные под мобильные приложения.
Облачные сервисы
При разработке Android-приложений важнейшая проблема - протестировать работу приложения на различных устройствах. Возможных вариантов устройств сотни, все себе не купишь. А платформо-железозависимые баги, к сожалению, совсем не редкость.Специальные сервисы предоставляют доступ к стендам, содержащим множество разнообразных устройств, и позволяют провести тестирование на всех этих устройствах разом. Таких сервисов как минимум три: Perfecto Mobile, Device Anywhere и TestDroid. Вот здесь описан принцип работы Device Anywhere и приведены скриншоты. Услуга удобная, но достаточно дорогая.
TestDroid, кстати, позволяет записывать тесты в формате Robotium. Update: Online emulator для множества различных Android-девайсов. В настоящий момент - бесплатен.
Сервисы для бета-тестирования
uTest - сообщество из 45 тыс профессиональных тестеров из 180 стран. Реальные пользователи протестируют работу вашего приложения. Платный.The Beta Family - бесплатный сервис для тестирования приложения. Заводите аккаунт, заливаете бета-версию приложения, рассылаете приглашение на тестирование, обрабатываете результаты тестирования. На главной странице сайта написано, что сервис предназначен для тестирования iPhone/iPad/iPod приложений. Но Android так же поддерживается, о чем прямо написано в FAQ. Можно выбрать тип бета-тестеров: private или public. Если public, то ваше приложение смогут тестировать все желающие.
Appaloosa - сервис для приватного распространения приложения (например, среди доверенных бета-тестеров или среди работников вашей компании). Заводите аккаунт, даете доступ вашим знакомым бета-тестерам. После авторизации бета-тестеры получают возможность скачивать приложения, которые вы выложили на Appaloosa. Бесплатен на стадии бета тестирования, потом станет платным.
Hockey Kit - еще один подобный сервис для распространения бета-версий среди своих бета-тестеров.
Zubhium. Предоставляет SDK, с помощью которого вы в свое приложение встраиваете код для автоматического сбора информации об ошибках. Выкладываете бету. Ее тестируют в настоящий момент на стадии беты и поэтому - бесплатен. Бета тестеров нужно приглашать своих. Полезная презентация на тему Zibhum.
PushLink. Еще один подобный сервис для приватного распространения приложений (например, бета версий). Добавляете в приложение немного кода для работы с PushLink. Собираете apk и отдаете бета-тестеру. Через некоторое время собираете новую версию apk и заливаете на PushLink. Пользователь автоматически получает уведомление о новой версии и скачивает ее с PushLink. Удобно - нет необходимости рассылать новые версии по email. Сервис бесплатен.
MOTOREADY App Testing: MOTOROLA XOOM - платный сервис Motorola для тестирования Android-приложений.
Approve - Android-приложение, призванное упростить процесс распространения apk-файлов среди тестеров. Фактически, обертка над Gmail. Вы посылаете тестеру письмо и прикладываете APK-файл на тестирование. На стороне тестера Approve получает письмо и берет на себя установку приложения, сбор логов, отправку разработчику отчета об ошибках и т.п.
Monkey и т.д.
Инструменты функционального тестирования — Monkey и MonkeyRunner - обзор двух стандартных инструментов: Monkey (стресс-тестирование) и MonkeyRunner("прокликивающие" тесты, сценарии тестов пишутся на Python).Android: Using monkey from Java - статья в блоге Diego Torres Milano, посвященная стандартной библиотеке chimpchat, эквиваленту monkeyrunner.
Code coverage
Code coverage инструменты определяют степень покрытия кода тестами.Варианты для Android: EMMA, Robotium, Sonar, включающий Maven и Cobertura. Так же функциональость code coverage есть в бесплатном статическом анализаторе от Google - CodePro AnalytiX
Сбор информации от пользователей
Библиотека ACRA - пишет креш-репорты в документ Google Docs.BugSense - real-time bug tracking service.
Системы сбора статистики по работе приложения.
Log collector - приложение для генерирования log-файла и отправки его по email. Удобно использовать в своих приложениях для реализации возможности отправки лога.
Другие инструменты
Vogar - запуск большого количества тестов с записью истории выполнения тестов.Caliper - open-source фреймворк для создания микробенчмарков, их запуска и просмотра результатов.
Android Junit Report - замена стандартному InstrumentationTestRunner с возможностью генерации XML-отчетов.
Тестировщику на заметку
Интересная презентация.Чек-лист для тестирования Android приложения: http://www.unifiedtestinginitiative.org/Android-UTC.
Best Practice Guidelines for developing quality mobile applications
Android design guidelines
MOTOREADY Test Criteria и MOTOREADY Public Test Cases (PDF) - критерии тестирования приложений, предназначенных для устройств Motorolla. Без привязки к операционной системе.
Особенности окружающей среды
How to test the 3G or Wi-Fi Connection speed on Iphone and Android Smartphones?Тестирование поведения приложения в условиях нехватки памяти
Wide Area Network Emulator - позволяет разработчику эмулировать проблемы в сети - Network delay, Packet loss, Packet corruption, Disconnections, Packet re-ordering, Jitter и т.д.
Методологии
Test Driven Development, TDD: Разработка через тестирование.Behavior Driven Development, BDD:: http://behaviour-driven.org, фреймверк для BDD: JBehave
Fitness: www.fitnesse.org, http://fit.c2.com - совместная работа клиентов, программистов и тестировщиков. GivWenZen - запись сценариев тестов простым английским языком.
Update - еще полезные ссылки
Автоматизация тестирования Android приложений (сентябрь 2012) - статья на хабре, посвященная бесплатным средствам реализации автоматического тестирования.Инструменты тестирования приложений для мобильных устройств: обзор вариантов и возможностей - хорошая ссылка из комментариев.
интересная подборка ссылок, можно сделать репостинг?
ОтветитьУдалитьКонечно, делайте, только пожалуйста укажите ссылку на оригинал.
ОтветитьУдалитьВот полный список инструментов тестирования приложений для мобильных устройств http://www.enterra.ru/blog/tools_for_qa/
ОтветитьУдалить