Автоматизация тестирования iOS и Android приложений

  • View
    103

  • Download
    2

  • Category

    Mobile

Preview:

Citation preview

Автоматизация тестирования iOS и Android приложений

Автоматизация тестирования - процесс написания скриптов или программ, выполняющих тесты.

Какие решает проблемы:● экономия время● возможность проверки работы

приложений на различных версиях устройствах и ОС

● получение текущего состояния приложения (CI)

Проблемы при автоматизации:● Время на реализацию тестовых скриптов;● Поддержка тестовых скриптов;● Высокая стоимость.

Общие подходы при проектировании автоматизированных тестов:● Record and Play● Screen Object

Record and Play

Для создания скрипта используется любой инструмент, позволяющий сделать запись действий пользователя в приложении с генерацией кода.

Итог

Плюсы:● Не надо писать код● Скорость● Можно рассмотреть как часть обучения

Минусы:● Только простые приложения● Сложно поддерживать

Пример скрипта

……..UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0];UIATarget.localTarget().frontMostApp().mainWindow().textFields()[7];UIATarget.localTarget().frontMostApp().mainWindow().tabBar().buttons()[5].tap();UIATarget.localTarget().frontMostApp().mainWindow().buttons()[3].tap();

……..

Screen Object

Screen Object - паттерн для организации архитектуры тестов в виде взаимодействия экранов приложения.

Переходы между экранами

Пример теста

public void testAddNote() throws Exception {NotesListScreennoteListScreen = new NotesListScreen(solo);assertTrue(noteListScreen.isCurrentActivityOpened());AddNoteScreenaddNoteScreen =

noteListScreen.clickAddNote();addNoteScreen.assertCurrentActivity();addNoteScreen.typeNote(NOTE_NAME);noteListScreen = addNoteScreen.goBack();noteListScreen.assertCurrentActivity();assertTrue(NOTE_NAME + " is not found",

noteListScreen.isNotePresent(NOTE_NAME));}

Пример реализации

…………..

publicAddNoteScreenclickAddNote() {getSolo().clickOnMenuItem(getSolo().getString(R.string.menu_insert));returnnewAddNoteScreen(getSolo());

}…………..

Итог

Плюсы:● Простота в поддержке● Читабельность тестов● DSL● Простота написания тестов● Повторное использование кода

Минусы:● ???

Инструменты

UIAutomation

UIAutomation - фреймворк от компании Apple для тестирования UI iOS-приложений.

Достоинства● Имеет внутренний рекордер● Запуск через Instruments и Terminal● Тестирование на симуляторах и реальных

устройствах● Не требует изменения кода самого

приложения● Поддержка всех нативных элементов

интерфейса

Недостатки UIAutomation

● Неудобная среда разработки сценариев● Отсутствие поддержки систем контроля

версий● Сложность в написании тестовых

сценариев

UIAutomation

Примеры тествого сценарияvar target = UIATarget.localTarget();var appWindow = target.frontMostApp().mainWindow();var element = target;appWindow.tabBar().buttons()["Unit Conversion"].tap();UIALogger.logStart("Logging element tree …");element.logElementTree();UIALogger.logPass();

Просмотр иерархии

Просмотр иерархии

Полезные методы

● setDeviceOrientation()● onAlert()● captureScreenWithName()● pushTimeout(), popTimeout()

Tuneup JS

Tuneup JS - библиотека, с набором утилит для написания тестовых скриптов, используя UIAutomation.

Пример

test("Login screen", function(target, app) {

var window = app.mainWindow();

// tap the left button in the navigation bar

window.navigationBars()[0].leftButton().tap();

// now assert that the app has navigated into a sub-view

controller

assertEquals("Settings", window.navigationBars()[0].value());

});

Запуск из терминала

instruments -w 839D0CAC-9F8C-45BE-8CD0-1BFAD3A2F9A0 -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate /Users/user/Library/Developer/Xcode/DerivedData/MyApp-dakkwuujteevxfevfyirblyuvgfp/Build/Products/Debug-iphonesimulator/MyApp.app -e UIASCRIPT /Users/user/Downloads/MyAppAT/Tests.js

Appium

Appium - представляет собой open source-фреймворк, который помогает автоматизировать процесс тестирования мобильных приложений.

Достоинства● Поддержка Android и iOS устройств● Запуск в симмуляторе и реальном

девайсе● Множество ЯП (Java, Ruby, Python, C#,

PHP, Javascript)● Наличие собственного инспектора● Поддержка интеграции с различными CI● Navite Apps, Hybrid Apps, Web Apps

Недостатки

● Инспектор не видит все элементы● Нельзя переключаться между сессиями● Нельзя запустить несколько симуляторов● xpath бывает неверным

Установка Appium

> brew install node # get node.js> npm install -g appium # get appium> npm install wd # get appium client> appium & # start appium> node your-appium-test.js

Appium GUI

Appium Inspector

Как Appium работает?

Настройка

Пример

Ссылки

● http://appium.io/● http://www.seleniumhq.org/

Android Testing Frameworks

UIAutomator Espresso Robotium

Скриптовый язык

Java Java Java

API Level 18+ (4.3) 8+ (2.2) 8+ (2.2)

Доп. инструменты

UIAutomator Viewer

Robotium Recorder

UIAutomator

UIAutomator

● часть Testing Support Library;● предоставлят набор API для

тестирования UI Android приложения;● хорошо подходит если во время теста

требуется открыть стороннее/системное приложение;

UIAutomator

● API для получения доступа к состоянию устройства;

● API для работы с UI компонентами;● UIAutomatorViewer;

UIAutomator. API для получения доступа к состоянию устройства

● эмуляция нажатия системных кнопок (Home, Menu etc);

● изменение ориентации устройства;● получение скриншота с устройства;

UIAutomator. API для работы с UI компонентами

● получение UI элементов на устройстве;● поддержка работы со списками;● поиск и фильтрация UI элементов;

UIAutomator. UIAutomatorViewer

Выбранный элемент Соотв.

элемент в дереве

Детали элемента

Espresso

● также как и UIAutomator является частью Testing Support Library;

● использует синхронизацию с Main Thread;

Espresso. API

● поиск UI элемента - onView(ViewMatcher);● выполнение действия -

perform(ViewAction);● проверка состояния -

check(ViewAssertion);

Espresso. Cheat Sheet

Robotium

● open-source фреймворк для UI тестирования;

● первая версия была выпущена в 2010 году, но API постоянно обновляется;

Robotium. API

Основной класс - Solo. ● предоставляет методы для доступа к UI

элементам;● эмуляция нажатия системных кнопок

(Home, Menu etc);● изменение ориентации устройства;● получение скриншота с устройства;

Robotium. Robotium Recorder

● позволяет записывать тестовые сценарии;

● интегрирован с Android Studio;

● автоматически получает id ресурсов;

Спасибо за внимание!

Recommended