Тестирование с помощью Robotium
Robotium не входит в состав Android SDK, но распространяется под Open Source лицензией.
Домашняя страница Robotium: code.google.com/p/robotium
Главное отличие Robotium в том, что тестовые действия описываются на уровне интерфейса приложения. В рассмотренных ранее способах тестовые действия явно или неявно описывались на уровне устройств ввода.
Например, в приложении нужно нажать кнопку «OK». С помощью скрипта MonkeyRunner нажатие на кнопку реализуется как: «Коснуться точки экрана с координатами (x0, y0)». С помощью Robotium это реализуется как: «Нажать кнопку с текстом «OK»».
Когда действия описываются на уровне интерфейса приложения их можно сделать независимыми от расположения элементов интерфейса, разрешения экрана и положения устройства.
Кроме того, Robotium позволяет проверять реакцию приложения на действие.
Например, после нажатия на кнопку «OK» в приложении должен появиться список с элементом «Item 1». С помощью Robotium можно проверить, появился ли список с таким элементом.
Если выполнять проверки после каждого действия, то легко обнаружить, на каком шаге произошла ошибка.
Недостатки:
- Для каждого приложения необходимо разработать сценарий тестирования на языке Java. Это требует навыков программирования и временных затрат.
- При изменении интерфейса приложения сценарий тестирования придется модифицировать.
- Написать сценарий Robotium сложнее, чем записать действия с помощью getevent/sendevent.
В целом, Robotium позволяет разрабатывать наиболее качественные сценарии тестирования при адекватных затратах.
Сравнение способов тестирования
Ниже приведена таблица для различных фреймверков тестирования (Monkey, MonkeyRunner, getevent/sendevent, Robotium):
Способ тестирования |
Достоинства |
Недостатки |
Monkey – поток случайных действий пользователя. |
Отсутствуют затраты на сопровождение. Не зависит от устройства. Стресс-тестирование позволяет обнаружить нетривиальные ошибки.
|
Качество тестирования варьируется от приложения к приложению. Найденные ошибки сложно воспроизвести. Нет проверки состояния приложения.
|
MonkeyRunner – скрипт управления устройством. |
Гибкость. |
Сложность написания и поддержки скриптов даже для простых приложений. |
getevent/sendevent – запись/воспроизведение действий пользователя. |
Для записи последовательности действий не требуются навыки программирования. |
Записанная последовательность действий подходит только к одному устройству при фиксированной ориентации. При изменении интерфейса приложения необходимо заново записать последовательность действий. Нет проверки состояния приложения.
|
Robotium – сценарий тестирования интерфейса приложения с проверкой состояния. |
Действия описываются на уровне интерфейса приложения. Сценарий может быть независимым от разрешения экрана и ориентации устройства. После совершения действия можно проверять состояние приложения.
|
Сложность написания сценариев на языке Java. При изменении интерфейса приложения сценарий придется модифицировать. |