SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
E2E Testing Fatigue
Антон Кузнецов
MoscowJS 34, 24.11.2016
Обо мне*
2
Антон Кузнецов, 24 года
25 лет в мобильной разработке
30 лет опыта в юриспруденции
Автор канала в Telegram о
путешествиях
Контрибьютор в приватные репо,
а также react-native, appium, webdriverio
*Денис Измайлов был тут
Обо мне
3
Антон Кузнецов
Веб-разработчик в
4
• Электронный сомелье
• Consumer и Enterprise приложения (iOS & Android)
• Только на американский рынок
• Мы знаем что вам стоит выпить
• И чем стоит закусить
Стек
Tipsi
iOS
WEBEnterprise
Android
5
Проблема
Tipsi
iOS
WEBEnterprise
Android
6
Опыт
• 2 js-разработчиков
• 1 Android-разработчик
• 1 Тестировщик
• Набор тестов для Web
• Набор тестов для Android
• Набор утилит для запуска тестов
7
• Все приложение, а не отдельный компонент
• Имитация пользовательского поведения, а не
низкоуровневое тестирование
• Тестирование связки действий, а не в
изолированном компоненте
• Неуверенность vs уверенность
E2E vs Unit
8
• Вчера вы web-разработчик, сегодня вы -
специалист широкого профиля
Зачем это вам?
9
• Вчера вы web-разработчик, сегодня вы —
специалист широкого профиля
• Вчера вы ничего не знали о вашем мобильном
приложении, сегодня — вы даете советы по UX
Зачем это вам?
11
ГИФКА С ТРИНИТИ ПРО СЮЖЕТ С ОБУЧЕНИЕМ
ВОЖДЕНИЯ ВЕРТОЛЕТА
- Пока нет.- Оператор- Тэнк, мне нужна программа управления вертолетом- PROFIT!- Ты умеешь летать на этой штуке?- Погнали!
• Вчера вы web-разработчик, сегодня вы —
специалист широкого профиля
• Вчера вы ничего не знали о вашем мобильном
приложении, сегодня — вы даете советы по UX
• Вчера мобильные разработчики получали больше
вас, сегодня — они ваши помощники…
Зачем это вам?
13
..или ищут другую работу, если вы
14
• Вчера вы web-разработчик, сегодня вы —
специалист широкого профиля
• Вчера вы ничего не знали о вашем мобильном
приложении, сегодня — вы даете советы по UX
• Вчера мобильные разработчики получали больше
вас, сегодня — они ваши помощники
• Ваши возможности могут превзойти ваши
ожидания
Зачем это вам?
16
• Appium vs. Calabash
• Command Line Interface
• Webdriver API vs. Calabash API (Cucumber)
• GUI inspector (Appium.app) vs. CLI inspector
• Низкий порог вхождения vs. Знание Ruby
• Appium имеет большее сообщество
Инструменты
17
• В настоящее время (ноябрь 2016) работает только
с UI Automator (Xcode 7)
• Для XCUITest Framework (Xcode 8) существует
Appium-iOS-Inspector
Ограничения Appium Inspector
20
1. Запускаем Appium
2. Запускаем симулятор
3. Инициализируем запуск тестов
4. Проверяем, что все успешно запущено
5. Прогоняем тесты
Запуск тестов
22
// ..
26 try {
27 // Check Appium
28 await appiumIsRunning(APPIUM_HOST, APPIUM_PORT)
29 console.log(`Appium is running on: ${APPIUM_HOST}:${APPIUM_PORT}`);
30 if (!DEVICE_NAME || !PLATFORM_VERSION) {
31 // Check device
32 const device = await findiOSDevice();
33 console.log(`Found next iOS device: ${device.name}`)
34 DEVICE_NAME = device.name || 'iPhone 5s'
35 PLATFORM_VERSION = device.platformVersion || '10.1'
36 }
37
38 // Initialize Helper
39 await helper.init(/* init props */)
40
41 // Run Tape tests
42 await runTapeTests(TEST_CASES_PATH)
43 } catch (error) {
44 console.log('Error while executing tests:’, error)
45 }
46
47 await helper.release()
48 }())
23
• Вернуться на главный экран
Хэлпер
24
1 export default async function iosBack() {
2 await this.driver
3 .waitForVisible('~Back', 5000)
4 .click('~Back')
5 }
• Вернуться на главный экран
• Генератор кнопок главного экрана
Хэлпер
27
1 const keys = {
2 Nearby: 1,
3 ScanLabel: 2,
4 SearchWines: 3,
5 MyProfile: 4,
6 SocialFeed: 5,
7 Login: 6,
8 Logout: 6,
9 Intro: 7,
10 Orders: 8,
11 };
12
13 export default function createMenuButtonId(id = 1) {
14 const value = typeof id === 'string' ? keys[id] : id;
15 return this.idFromXPath(`
16 //XCUIElementTypeApplication/XCUIElementTypeWindow/
17 XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/
18 XCUIElementTypeOther/XCUIElementTypeOther/
19 XCUIElementTypeOther/XCUIElementTypeOther/
20 XCUIElementTypeOther/XCUIElementTypeOther/
21 XCUIElementTypeCollectionView/XCUIElementTypeCell[${value}]
22 `)
23 }
• Вернуться на главный экран
• Генератор кнопок главного экрана
• Логин / Логаут
Хэлпер
29
• Вернуться на главный экран
• Генератор кнопок главного экрана
• Логин / Логаут
• Выставить локейшен через приложение
• Обойти длинный список (свайп + сбор данных)
• Найти кнопку DONE на клавиатуре
Хэлпер
31
• Стартовая точка — главный экран
• Тестовый набор атомарен
• Он должен сам о себе позаботиться
• Не использовать метод .pause()
• Ну, можно, но только в особенном случае
• Использовать повсеместно .waitForVisible()
Договоренности
32
• Тесты идут долго
• Держите текст сценария на русском языке
• Пройдитесь по нему с помощью Appium Inspector
• Смело используйте async/await внутри try/catch
• При необходимости пишите видео тестов
• Это все прекрасно работает внутри CI
33
О чем еще стоит знать?
• Тестирование — это, как правило, боль.
• Но, как и в спорте, боль — это лишь этап.
• В итоге это колоссальный опыт для вас.
• Почти все поддается автоматизации.
• Даже оплата через Pay.
• Тестирование — это способ немного отдохнуть от
разработки новых фич и укрепить существующие
Выводы
34
Кузнецов Антон
@isnifer everywhere :)
Вопросы?
Спасибо

Contenu connexe

En vedette

End 2-end testing of mean applications
End 2-end testing of mean applicationsEnd 2-end testing of mean applications
End 2-end testing of mean applicationsMihai-Cristian Fratila
 
Александр Башарин - Проведение пользовательского тестирования с большим число...
Александр Башарин - Проведение пользовательского тестирования с большим число...Александр Башарин - Проведение пользовательского тестирования с большим число...
Александр Башарин - Проведение пользовательского тестирования с большим число...SQALab
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияSQALab
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End TestingErika Barron
 
Implementing Test Automation: What a Manager Should Know
Implementing Test Automation: What a Manager Should KnowImplementing Test Automation: What a Manager Should Know
Implementing Test Automation: What a Manager Should KnowSoftServe
 
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0COP_HHA
 
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...QAFest
 
test plan
test plan test plan
test plan rosh26
 
Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)Dmitry Sharkov
 
End-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingEnd-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingJosiah Renaudin
 
End to End Test Management Test Strategy Estimation and Metrics Workshop
End to End Test Management Test Strategy Estimation and Metrics WorkshopEnd to End Test Management Test Strategy Estimation and Metrics Workshop
End to End Test Management Test Strategy Estimation and Metrics WorkshopQAAgility Technologies
 
Saksham Sarode - Building Effective test Data Management in Distributed Envir...
Saksham Sarode - Building Effective test Data Management in Distributed Envir...Saksham Sarode - Building Effective test Data Management in Distributed Envir...
Saksham Sarode - Building Effective test Data Management in Distributed Envir...TEST Huddle
 
E2E Life Cycle Intelligence & Channel Strategy @ TPC
E2E Life Cycle Intelligence & Channel Strategy @ TPCE2E Life Cycle Intelligence & Channel Strategy @ TPC
E2E Life Cycle Intelligence & Channel Strategy @ TPCDavid Porter
 
Preparing and Implementing a Comprehensive ICD-10 Testing Strategy
Preparing and Implementing a Comprehensive ICD-10 Testing StrategyPreparing and Implementing a Comprehensive ICD-10 Testing Strategy
Preparing and Implementing a Comprehensive ICD-10 Testing StrategyCognizant
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końceThe Software House
 
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksTesting strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksThoughtworks
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration ManagementRajesh Kumar
 

En vedette (20)

End 2-end testing of mean applications
End 2-end testing of mean applicationsEnd 2-end testing of mean applications
End 2-end testing of mean applications
 
Александр Башарин - Проведение пользовательского тестирования с большим число...
Александр Башарин - Проведение пользовательского тестирования с большим число...Александр Башарин - Проведение пользовательского тестирования с большим число...
Александр Башарин - Проведение пользовательского тестирования с большим число...
 
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрияПирамида Тестирования через призму ROI калькулятора и прочая геометрия
Пирамида Тестирования через призму ROI калькулятора и прочая геометрия
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End Testing
 
Implementing Test Automation: What a Manager Should Know
Implementing Test Automation: What a Manager Should KnowImplementing Test Automation: What a Manager Should Know
Implementing Test Automation: What a Manager Should Know
 
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0
Session 12 Activités à venir de la CoP PSS : projet Mobilisation 2.0
 
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...
QA Fes 2016. Gerlof Hoekstra. E2E Testing the Ministry Of Justice Biometric I...
 
test plan
test plan test plan
test plan
 
Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)
 
End-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of TestingEnd-to-End Quality Approach: 14 Levels of Testing
End-to-End Quality Approach: 14 Levels of Testing
 
Test Planning_Arsala
Test Planning_ArsalaTest Planning_Arsala
Test Planning_Arsala
 
End to End Test Management Test Strategy Estimation and Metrics Workshop
End to End Test Management Test Strategy Estimation and Metrics WorkshopEnd to End Test Management Test Strategy Estimation and Metrics Workshop
End to End Test Management Test Strategy Estimation and Metrics Workshop
 
Saksham Sarode - Building Effective test Data Management in Distributed Envir...
Saksham Sarode - Building Effective test Data Management in Distributed Envir...Saksham Sarode - Building Effective test Data Management in Distributed Envir...
Saksham Sarode - Building Effective test Data Management in Distributed Envir...
 
E2E Life Cycle Intelligence & Channel Strategy @ TPC
E2E Life Cycle Intelligence & Channel Strategy @ TPCE2E Life Cycle Intelligence & Channel Strategy @ TPC
E2E Life Cycle Intelligence & Channel Strategy @ TPC
 
Workshop - E2e tests with protractor
Workshop - E2e tests with protractorWorkshop - E2e tests with protractor
Workshop - E2e tests with protractor
 
Preparing and Implementing a Comprehensive ICD-10 Testing Strategy
Preparing and Implementing a Comprehensive ICD-10 Testing StrategyPreparing and Implementing a Comprehensive ICD-10 Testing Strategy
Preparing and Implementing a Comprehensive ICD-10 Testing Strategy
 
e2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końcee2e frameworks - czyli kij ma dwa końce
e2e frameworks - czyli kij ma dwa końce
 
11 software testing_strategy
11 software testing_strategy11 software testing_strategy
11 software testing_strategy
 
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorksTesting strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
Testing strategies for micro services - Ketan Soni, Jesal Mistry, ThoughtWorks
 
Configuration Management
Configuration ManagementConfiguration Management
Configuration Management
 

Similaire à E2E-тестирование мобильных приложений

SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовSergey Borisov
 
Appium для народа
Appium для народаAppium для народа
Appium для народаSQALab
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...solit
 
Appium confet qa
Appium confet qaAppium confet qa
Appium confet qaISsoft
 
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoОпыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoAnatoly Sharifulin
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими рукамиRoman Dvornov
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIMoscowJS
 
Continuous integration testing of mobile SDK
Continuous integration testing of mobile SDKContinuous integration testing of mobile SDK
Continuous integration testing of mobile SDKTestableapple
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
 
Знакомство с Tizen
Знакомство с TizenЗнакомство с Tizen
Знакомство с TizenIurii Ageev
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
 
Тестирование безDOMных объектов
Тестирование безDOMных объектовТестирование безDOMных объектов
Тестирование безDOMных объектовSQALab
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 

Similaire à E2E-тестирование мобильных приложений (20)

SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
SECON'2017, Мухаметов Андрей, XCTest. UI и Unit тестирование для iOS.
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Автоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотовАвтоматическое тестирование мобильных приложений на основе скриншотов
Автоматическое тестирование мобильных приложений на основе скриншотов
 
Appium для народа
Appium для народаAppium для народа
Appium для народа
 
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
 
Appium confet qa
Appium confet qaAppium confet qa
Appium confet qa
 
Опыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в AppliftoОпыт разработки мобильных приложений в Applifto
Опыт разработки мобильных приложений в Applifto
 
М. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с CodeceptionМ. Боднарчук Современное функциональное тестирование с Codeception
М. Боднарчук Современное функциональное тестирование с Codeception
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Remote (dev)tools своими руками
Remote (dev)tools своими рукамиRemote (dev)tools своими руками
Remote (dev)tools своими руками
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
Continuous integration testing of mobile SDK
Continuous integration testing of mobile SDKContinuous integration testing of mobile SDK
Continuous integration testing of mobile SDK
 
Михаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с CodeceptionМихаил Боднарчук Современное функциональное тестирование с Codeception
Михаил Боднарчук Современное функциональное тестирование с Codeception
 
Знакомство с Tizen
Знакомство с TizenЗнакомство с Tizen
Знакомство с Tizen
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Тестирование безDOMных объектов
Тестирование безDOMных объектовТестирование безDOMных объектов
Тестирование безDOMных объектов
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 

Plus de MoscowJS

Александр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionАлександр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionMoscowJS
 
Favicon на стероидах
Favicon на стероидахFavicon на стероидах
Favicon на стероидахMoscowJS
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyMoscowJS
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkMoscowJS
 
Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31MoscowJS
 
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31MoscowJS
 
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31MoscowJS
 
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31MoscowJS
 
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33MoscowJS
 
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33MoscowJS
 
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33MoscowJS
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...MoscowJS
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...MoscowJS
 
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29MoscowJS
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29MoscowJS
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29MoscowJS
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28MoscowJS
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27MoscowJS
 
"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27MoscowJS
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 

Plus de MoscowJS (20)

Александр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionАлександр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in action
 
Favicon на стероидах
Favicon на стероидахFavicon на стероидах
Favicon на стероидах
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkey
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31
 
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31
 
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
 
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
 
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
 
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
 
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
 
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27
 
"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27"Web Audio Api", Анатолий Найда, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 

E2E-тестирование мобильных приложений

  • 1. E2E Testing Fatigue Антон Кузнецов MoscowJS 34, 24.11.2016
  • 2. Обо мне* 2 Антон Кузнецов, 24 года 25 лет в мобильной разработке 30 лет опыта в юриспруденции Автор канала в Telegram о путешествиях Контрибьютор в приватные репо, а также react-native, appium, webdriverio *Денис Измайлов был тут
  • 4. 4 • Электронный сомелье • Consumer и Enterprise приложения (iOS & Android) • Только на американский рынок • Мы знаем что вам стоит выпить • И чем стоит закусить
  • 7. Опыт • 2 js-разработчиков • 1 Android-разработчик • 1 Тестировщик • Набор тестов для Web • Набор тестов для Android • Набор утилит для запуска тестов 7
  • 8. • Все приложение, а не отдельный компонент • Имитация пользовательского поведения, а не низкоуровневое тестирование • Тестирование связки действий, а не в изолированном компоненте • Неуверенность vs уверенность E2E vs Unit 8
  • 9. • Вчера вы web-разработчик, сегодня вы - специалист широкого профиля Зачем это вам? 9
  • 10.
  • 11. • Вчера вы web-разработчик, сегодня вы — специалист широкого профиля • Вчера вы ничего не знали о вашем мобильном приложении, сегодня — вы даете советы по UX Зачем это вам? 11
  • 12. ГИФКА С ТРИНИТИ ПРО СЮЖЕТ С ОБУЧЕНИЕМ ВОЖДЕНИЯ ВЕРТОЛЕТА - Пока нет.- Оператор- Тэнк, мне нужна программа управления вертолетом- PROFIT!- Ты умеешь летать на этой штуке?- Погнали!
  • 13. • Вчера вы web-разработчик, сегодня вы — специалист широкого профиля • Вчера вы ничего не знали о вашем мобильном приложении, сегодня — вы даете советы по UX • Вчера мобильные разработчики получали больше вас, сегодня — они ваши помощники… Зачем это вам? 13
  • 14. ..или ищут другую работу, если вы 14
  • 15.
  • 16. • Вчера вы web-разработчик, сегодня вы — специалист широкого профиля • Вчера вы ничего не знали о вашем мобильном приложении, сегодня — вы даете советы по UX • Вчера мобильные разработчики получали больше вас, сегодня — они ваши помощники • Ваши возможности могут превзойти ваши ожидания Зачем это вам? 16
  • 17. • Appium vs. Calabash • Command Line Interface • Webdriver API vs. Calabash API (Cucumber) • GUI inspector (Appium.app) vs. CLI inspector • Низкий порог вхождения vs. Знание Ruby • Appium имеет большее сообщество Инструменты 17
  • 18.
  • 19.
  • 20. • В настоящее время (ноябрь 2016) работает только с UI Automator (Xcode 7) • Для XCUITest Framework (Xcode 8) существует Appium-iOS-Inspector Ограничения Appium Inspector 20
  • 21.
  • 22. 1. Запускаем Appium 2. Запускаем симулятор 3. Инициализируем запуск тестов 4. Проверяем, что все успешно запущено 5. Прогоняем тесты Запуск тестов 22
  • 23. // .. 26 try { 27 // Check Appium 28 await appiumIsRunning(APPIUM_HOST, APPIUM_PORT) 29 console.log(`Appium is running on: ${APPIUM_HOST}:${APPIUM_PORT}`); 30 if (!DEVICE_NAME || !PLATFORM_VERSION) { 31 // Check device 32 const device = await findiOSDevice(); 33 console.log(`Found next iOS device: ${device.name}`) 34 DEVICE_NAME = device.name || 'iPhone 5s' 35 PLATFORM_VERSION = device.platformVersion || '10.1' 36 } 37 38 // Initialize Helper 39 await helper.init(/* init props */) 40 41 // Run Tape tests 42 await runTapeTests(TEST_CASES_PATH) 43 } catch (error) { 44 console.log('Error while executing tests:’, error) 45 } 46 47 await helper.release() 48 }()) 23
  • 24. • Вернуться на главный экран Хэлпер 24
  • 25. 1 export default async function iosBack() { 2 await this.driver 3 .waitForVisible('~Back', 5000) 4 .click('~Back') 5 }
  • 26.
  • 27. • Вернуться на главный экран • Генератор кнопок главного экрана Хэлпер 27
  • 28. 1 const keys = { 2 Nearby: 1, 3 ScanLabel: 2, 4 SearchWines: 3, 5 MyProfile: 4, 6 SocialFeed: 5, 7 Login: 6, 8 Logout: 6, 9 Intro: 7, 10 Orders: 8, 11 }; 12 13 export default function createMenuButtonId(id = 1) { 14 const value = typeof id === 'string' ? keys[id] : id; 15 return this.idFromXPath(` 16 //XCUIElementTypeApplication/XCUIElementTypeWindow/ 17 XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/ 18 XCUIElementTypeOther/XCUIElementTypeOther/ 19 XCUIElementTypeOther/XCUIElementTypeOther/ 20 XCUIElementTypeOther/XCUIElementTypeOther/ 21 XCUIElementTypeCollectionView/XCUIElementTypeCell[${value}] 22 `) 23 }
  • 29. • Вернуться на главный экран • Генератор кнопок главного экрана • Логин / Логаут Хэлпер 29
  • 30.
  • 31. • Вернуться на главный экран • Генератор кнопок главного экрана • Логин / Логаут • Выставить локейшен через приложение • Обойти длинный список (свайп + сбор данных) • Найти кнопку DONE на клавиатуре Хэлпер 31
  • 32. • Стартовая точка — главный экран • Тестовый набор атомарен • Он должен сам о себе позаботиться • Не использовать метод .pause() • Ну, можно, но только в особенном случае • Использовать повсеместно .waitForVisible() Договоренности 32
  • 33. • Тесты идут долго • Держите текст сценария на русском языке • Пройдитесь по нему с помощью Appium Inspector • Смело используйте async/await внутри try/catch • При необходимости пишите видео тестов • Это все прекрасно работает внутри CI 33 О чем еще стоит знать?
  • 34. • Тестирование — это, как правило, боль. • Но, как и в спорте, боль — это лишь этап. • В итоге это колоссальный опыт для вас. • Почти все поддается автоматизации. • Даже оплата через Pay. • Тестирование — это способ немного отдохнуть от разработки новых фич и укрепить существующие Выводы 34
  • 35. Кузнецов Антон @isnifer everywhere :) Вопросы? Спасибо