...

четверг, 26 января 2017 г.

Автоматизация тестирования iOS-приложений с помощью UIAutomation

В настоящее время автоматизация тестирования мобильных приложений является молодым и неизведанным направлением в тестировании. Существует не так много инструментов позволяющих это проводить. В данной статье, на примере инструмента UIAutomation, покажем возможности и нюансы, с которыми можно столкнуться при создании тест сценариев. Также в статье собраны полезные статьи, которые смогут вам помочь в самом начале работы.
image

UIAutomation позволяет писать скрипты для проверки iOS приложений. Нет необходимости в установке, так как он встроен в набор инструментов Xcode, если только потребуется установить Xcode. Особенностями инструмента является то, что тесты пишутся на JavaScript и мы можем запускать тесты как на симуляторе, так и на реальном устройстве.

image

image

Тестирование UI


UIAutomation позволяет разбивать экраны приложения на UI элементы и работать отдельно с ними. Проверять на отображение, на правильное выполнение последовательных действий в скрипте, на отображение после скролинга, на корректность текста в выводимых сообщениях и т. д.

image

Более подробную информацию можно найти по ссылкам, где на примерах реализованы основные возможности использования UIAutomation:
http://ift.tt/2jsjTk5
http://ift.tt/1wAPyPi
http://ift.tt/TycZrY
http://ift.tt/2jskPVE
http://ift.tt/2jsxS9B

Примечание к информации из предоставленных статей:

  1. Необходимо учитывать, что окно Instruments(Product → Profile) запускается только если исходный код приложения скомпилирован без ошибок;
  2. Тесты запускаются только с одного файла, поэтому остальные дополнительные скрипты можно подключать в начале через '#import';
  3. UIAutomation понимает работу JavaScript только с UIElements, поэтому если при работе возникла необходимость в использовании существующих функций, то возможно их скачать как отдельные библиотеки js и подключаться также через '#import';
  4. В UIAutomation встроена запись действий, которая поможет при написании тестов.

Тестирование средствами Node.js


Для проверки основного функционала не достаточно проверять только UI, существует необходимость обрабатывать данные полученные по запросам к БД или API, по возможности.
В помощь приходит платформа Node.js.

Общая информация и полезные ссылки с примерами использования:
http://ift.tt/2jsurQt
http://ift.tt/2jsxwQr

Очень понятная документация с примерами представлена на официальном сайте: nodejs.org/api/http.html
http://ift.tt/2jszFvx
http://ift.tt/2jso8MK

Примечание:

  1. После установки Node.js также необходимо скачать модули, по которым будет проходить работа(например, http, sql, fs, net и т.д.). Удобно через команду в терминале: npm install <name_module>;
  2. В UIAutomation работать с запросами можно через UIAHost, запуская отдельный скрипт по команде node, при этом необходимо знать абсолютные пути к команде(на изображении) и скрипту.

Пример:
//post request
function postRequest(host, path, bodyFile){ var result = host.performTaskWithPathArgumentsTimeout("/usr/local/bin/node", ["/Users/admin/post.js", path, bodyFile], 30); return "exitCode: " + result.exitCode + " stdout: " + result.stdout + " stderr: " + result.stderr; }

В get.js:

image

Проверить работу можно через терминал:

image

Описание самого класса: http://ift.tt/2jso1AK

Запуск тестов


Запускать тесты можно через:
  • GUI UIAutomation;
  • терминал.

Команда запуска в терминале зависит от версии Xcode. При Xcode Version 7.3.1 команда имеет вид:
instruments -t /Applications/http://ift.tt/1vOqCSy -w "iPhone 5s (9.3) [8DE6DD09-3316-4952-9C18-AFA674224E81] (Simulator)" Application.app -e UIASCRIPT /Users/admin/Documents/SampleTestScripts/TestSuit.js -e UIARESULTSPATH /tmp

Где идет указание абсолютных путей к инструменту UIAutomation, симулятору или UDID подключенного устройства(которое можно узнать через iTunes), путь к .app приложения, путь к файлу с тестами и по желанию, можно отметить папку для результатов.
Пример запуска через полное написание команды в терминале и запуска bash файла uiAutoRun.sh:
image
Подробнее по формированию bash файлов для запуска скриптов можно прочитать:
http://ift.tt/2jsnfng

Заключение


Хотелось отметить, что одной из не решенных задач осталась проблема автоматического управления сетью на устройстве. Были предложены, но не реализованы 2 способа решения:
  1. Использовать Network Link Conditioner и отключать подключенное устройство путем задания определенных правил с помощью межсетевых экранов ipfw(в некоторых OS X, например, El Capitan заменой является pf). Минусами данного способа являются: риск отключения всего интернета на компьютере, что помещает интеграции с CI; нет гарантий, что устройство не подключится по wi-fi к другой сети.
    http://ift.tt/2jzNdCT
    http://ift.tt/2jzWZVC
    http://ift.tt/2jzYBP8
    http://ift.tt/2jsmvyx
    http://ift.tt/2jsrWh7
  2. Отключать сеть из кода:

var target = UIATarget.localTarget();

target.dragFromToForDuration({x:0.1, y:557.00}, {x:211.00, y:206.00},
0.5); //to expose the actions panel on iOS

target.frontMostApp().mainWindow().elements()["Wifi"].tapWithOptions({tapOffset:{x:0.44, y:0.47}});

Есть необходимость использования взломанного устройства.

В данной статье для автоматизации тестирования iOS приложений был рассмотрен инструмент UIAutomation, помимо него существует ряд других инструментов:
http://ift.tt/2jslyX2
http://ift.tt/2jsnezI

Комментарии (0)

    Let's block ads! (Why?)

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

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