...

четверг, 17 апреля 2014 г.

[Из песочницы] Автоматизация приемочного тестирования Android приложений с помощью Calabash



Источник изображения

В данной статье я хочу ознакомить вас с еще одним фреймворком для автоматизации тестирования мобильных приложений, а конткретно с Calabash – кроссплатформенным решении для приемочного тестирования Android и iOS приложений. Статья рассчитана на новичков.



Calabash




Calabash – это фреймворк для автоматизации функционального приемочного тестирование, тесты написанные на Calabash (Cucumber-подобные сценарии) позволяют тестировать как Android, так и iOS приложения. Calabash разрабатывается кампанией Xamarin.

Чтобы использовать Calabash, необходимо установить следующие компоненты:




Calabash постоянно развивается, поэтому самую свежую версию документации можно найти на сайте: http://ift.tt/1pc8Vxi.

Преимущества Calabash для тестирования приложений:



  • Простота написания тестов

  • Возможность написания кроссплатформенных тестов (для Android и iOS)

  • Написания сценариев в стиле Cucumber

  • Отличный Ruby API

  • Возможноность запускать тесты в облаке

  • Возможность запускать тесты на эмуляторе




Недостатки:


  • Порой, трудно идентифицировать объекты

  • Не всегда хватает предписанных шагов для написания тестового сценария

  • Необходим apk-файл тестируемого приложения

  • Достаточно долгое прохождение тестов




Разработка тестового сценария:




Для ознакомления я буду писать простые тестовые сценарии на ОС Windows 7, чтобы показать принцип работы. В данном тесте будет реализована проверка голландской локализации меню приложения. Определим действия, которые будут реализованы в тесте:


  1. Проверка наличия всех необходимых опций в меню приложения

  2. Изменения языка приложения на голландский

  3. Проверка корректности перевода опций меню




В качестве примера я взял Clean Master (Free) (apk доступен на сайте: http://ift.tt/1hf9LCw) – простую программу для очистки телефона.

Анализ приложения




Для анализа пользовательского интерфейса приложения будем использовать консольную интерективную среду Calabash. Ruby API ( http://ift.tt/1eUEz8L ) позволяет нам получить объекты и их свойства, которые присутствуют на экране. Наиболее нужнымы командами интерактивной среды calabash являются: query для поиска необходимых объектов и их свойств, tap – команда нажатия на объект, а также команда performAction – исполнение определенных действий (нажатие на кнопку «назад», «меню», проскроллить и тому подобное). Анализ UI приложения значительно упростит процесс написания тестового сценария. Убедитесь, что расположение Ant, Java SDK, Android SDK добавлены в системные переменные.

Для удобства я использую интрективную командную строку с Ruby:


Для начала работы необходимо:



  1. Создать директорию, где будет храниться наш проект:

    > mkdir calabash_habr && cd calabash_habr



  2. Сгенерировать файловую структуру Cucumber, которая включает в себя директории с описанием фич(features), описанием шагов(step definitions), support:

    > calabash-android gen





  3. Поместим apk в корень директории с проектом

  4. После этого необходимо переподписать приложение:

    > calabash-android resign "Clean Master_3.8.1.apk"



  5. Подключите устройство

  6. Установим тестируемое приложение на устройство:

    > adb install "Clean Master_3.8.1.apk"






Теперь можем приступить к анализу интрерфейса приложения:


  1. Запуск интерактивной консольной среды calabash-console

    > calabash-android console "Clean Master_3.8.1.apk"



  2. Запускаем тестовый сервер:

    irb(main):001:0> start_test_server_in_background



  3. Жмем на кнопку «Меню»:

    irb(main):007:0> performAction('press_menu')



    И получаем:

    {
    "bonusInformation" => [],
    "message" => "",
    "success" => true
    }




    Меню открылось.

  4. Нам нужно зайти в «Settings», для этого сперва выясняем какой объект имеет текст «Settings»:

    irb(main):008:0> query("* text:'Settings'")



    В результе узнаем, что объект с текстом «Settings» имеет id “menuSettings”:

    [
    [0] {
    "id" => "menuSettings",
    "enabled" => true,
    "contentDescription" => nil,
    "class" => "android.widget.Button",
    "text" => "Settings",
    "rect" => {
    "center_y" => 67.0,
    "center_x" => 720.0,
    "height" => 40,
    "y" => 47,
    "width" => 160,
    "x" => 640
    },
    "description" => "android.widget.Button@4280e6f8"
    }
    ]




  5. Жмем на кнопку с id “menuSettings”:

    irb(main):011:0> tap('menuSettings')



    После этого открылись настройки приложения




  6. Этого достаточно, выходим из интрерактивной консоли:

    irb(main):003:0> exit






Теперь приступим к написанию теста. Calabash имеет достаточное количество созданных шагов, которые практично использовать при описания фичи. С действиями, который присутствуют по умолчанию ознакомтесь на сайте: http://ift.tt/1eUEBgX, а если же не хватает действий по умолчанию, то присутсвует описание красивого Ruby API доступное по сайту: http://ift.tt/1eUEz8L.

Открываем файл my_first.feature, который находится в директории features и пишем наш тестовый сценарий. В данном примере воспользуемся шагами, которые предлагает Calabash.


Получаем следующий незамысловатый сценарий


Feature: Menu localization

Scenario: As a user I can open menu and verify options
When I press the menu key
Then I see "Settings"
Then I see "Update"
Then I see "Like us"
Then I see "Rate us"
Then I see "Feedback"
Then I see "FAQ"
Then I see "Fast Clean"
Then I see "About"

Scenario: As a user I can change language app to Nedelrands
When I press the menu key
When I press "Settings"
Then I press "Language"
When I press "Nederlands"
Then I see "Taal"
When I go back
When I press the menu key
Then I see "Instellingen"
Then I see "Moderniseren"
Then I see "Net als wij"
Then I see "Beoordeel ons"
Then I see "Terugcontact"
Then I see "FAQ"
Then I see "Snel schoonmaken"
Then I see "Over ons"



Как видите, все достаточно просто. Запускаем тест:



> calabash-android run "Clean Master_3.8.1.apk"



В результате прохождения сценария получаем:




Из двух сценариев один не прошел так как один из шагов не прошел проверку. В директории проекта calabash генерирует скришот с именем screenshot_х.png.

Действительно, слово «Update»
не переведено на голландский


Вывод




Использование Calabash framework очень удобен для качественного приемочного тестирования приложений. Вы можете писать тестовые сценарии, которые будут работать как для Android, так и для iOS приложений без больших усилий. Также присутствует возможность развертки тестирования в облаке компании Xamarin. Фреймворк активно развивается, прост в использовании и интеграции. Со временем я собираюсь написать небольшой пост о том, как программировать свои действия с помощью Calabash Ruby API.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий