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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

Record and Play

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

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

Итог

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

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

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

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

……..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();

……..

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

Screen Object

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

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

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

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

Пример теста

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));}

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

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

…………..

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

}…………..

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

Итог

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

Минусы:● ???

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

Инструменты

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

UIAutomation

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

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

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

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

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

интерфейса

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

Недостатки UIAutomation

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

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

сценариев

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

UIAutomation

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

Примеры тествого сценария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();

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

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

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

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

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

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

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

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

Tuneup JS

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

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

Пример

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());

});

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

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

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

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

Appium

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

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

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

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

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

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

Недостатки

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

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

Установка 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

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

Appium GUI

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

Appium Inspector

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

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

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

Настройка

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

Пример

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

Ссылки

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

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

Android Testing Frameworks

UIAutomator Espresso Robotium

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

Java Java Java

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

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

UIAutomator Viewer

Robotium Recorder

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

UIAutomator

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

UIAutomator

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

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

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

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

UIAutomator

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

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

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

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

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

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

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

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

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

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

UIAutomator. UIAutomatorViewer

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

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

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

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

Espresso

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

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

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

Espresso. API

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

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

check(ViewAssertion);

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

Espresso. Cheat Sheet

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

Robotium

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

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

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

Robotium. API

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

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

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

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

Robotium. Robotium Recorder

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

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

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

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

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