SlideShare a Scribd company logo
Непрерывное интеграционное тестирование
мобильного SDK
Алексей
Альтер-Песоцкий
≈ 1 год в мире ручного тестирования web
≈ 3 года в мире автоматизации mobile
@alter_al
in/apesotskiy
— это библиотека мобильной аналитики, которая:
• помогает строить эффективные рекламные кампании
• устанавливает качество трафика
• определяет пользовательский retention
• собирает системные события
• определяет аудиторию пользователей по возрасту/полу/локации
• рисует красивые отчеты
• iOS
• Android
• Unity
Системные события
install / update
launch / session
purchase
login, registration, level, invite
custom
Интеграция
Android
Добавляется как gradle-зависимость
или jar-библиотека
iOS Добавляется в виде фреймворка
Unity Добавляется в виде Unity пакета
Почему мы тестируем интеграцию нашей
библиотеки в сторонних приложениях?
Потому что можем!
Кто если не мы?
Google Play CLI
java
Jenkins Job Builder
python
App4_Job
App1_Job
Appium_Job Appium_Job
App5_Job
App2_Job
App3_Job
App2_Job App3_Job
App4_Job
App5_Job App1_Job
App4_Job
App1_Job
Appium_Job Appium_Job
App5_Job
App2_Job
App3_Job
App2_Job App3_Job
App4_Job
App5_Job App1_Job
// имя сборки
// git репозиторий
// параметры на входе
// исходные параметры сборки
// скачивание билда из Hockey App
// запуск appium
// послесборочное выключение appium
// запуск тестов
Изи изи
// параметры приложения N
// имя Jenkins Job Builder шаблона
// параметры приложения N+1
// параметры приложения N+2
// параметры приложения N+3
// параметры приложения N+4
// параметры приложения N+5
// параметры приложения N+6
// параметры приложения N+7
// параметры приложения N+8
// параметры приложения N+9
Тестируемые платформы
• iOS
• Android
Масштаб
• > 70 приложений
• ≈ +1 приложение в месяц
Скачивание нового билда
• curl
• gp-download
Тесты • Appium::Java
Отчет
• Slack
• Jenkins::Allure
Время прохождения одной
сборки
• 5 - 10 минут
• Установки
• Удаления
• Запуски
• Клики
json
validation
• Поиск уникальных идентификаторов
• Поиск системных событий
• Проверка таймштампов
• Проверка минимальной версии SDK
• Проверка наличия локации и окружения,
в зависимости от permissions
• Валидация запросов по json схеме
Tracker • Отправка запросов
• Перехват запросов
• Сохранение запросов
json
• Установки
• Удаления
• Запуски
• Клики
validation
• Поиск уникальных идентификаторов
• Поиск системных событий
• Проверка таймштампов
• Проверка минимальной версии SDK
• Проверка наличия локации и окружения,
в зависимости от permissions
• Валидация запросов по json схеме
Tracker • Отправка запросов
• Перехват запросов
• Сохранение запросов
Запускает
тестовую сборку
—
—
+
+
for (app : hockeyApps) for (app : marketApps)
Trigger
new builds? new builds?
start app’s test job
Exit
start app’s test job
Подробнее о триггере
Реализация Jenkins Job
Частота запуска 0 */1 * * *
Время выполнения 2.5 мин
Призвание Запуск тестовых сборок
Trigger Test Job
Test Job
New app
build?
Start
appium
Stop
appium
myTracker
requests
mitmproxy
Platform?
iOS
Driver
Android
Driver
Test Job
Result
get info
download
app build
for (test : tests)
build id
Json
validation
iOS Update
Apple checks
iOS apps signing
Android sniffing traffic
Google updates
iOS Update
Apple checks
iOS apps signing
Android sniffing traffic
Google updates
mitmweb -p 8888 --ignore-hosts 
‘^(?:(?!tracker-api.my.com|mytracker.mycdn.me|appldnld.apple.com|mesu.apple.com).)*$'
iOS Update
Apple checks
iOS apps signing
Android sniffing traffic
Google updates
iOS Update
Apple checks
iOS apps signing
Android sniffing traffic
Google updates
Сниффинг трафика
KitKat
Lollipop
Marshmallow
Nougat
Oreo
@xml/network_security_config
iOS Update
Apple checks
iOS apps signing
Android sniffing traffic
Google updates
• myTracker: https://tracker.my.com
• Appium: https://appium.io
• Mitmproxy: https://mitmproxy.org
• Jenkins Job Builder: https://docs.openstack.org/infra/jenkins-job-builder
• Hockey App: https://hockeyapp.net
• Fastlane: https://fastlane.tools
• Google Play CLI: https://npmjs.com/package/google-play-cli
• Network security config: https://github.com/levyitay/AddSecurityExceptionAndroid
• Sandbox https://github.com/alter-al/continuous_integration_testing_mobile_sdk

More Related Content

Similar to Continuous integration testing of mobile SDK

Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
GoIT
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Глеб Тарасов
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
DataArt
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
SQALab
 
Project under control
Project under controlProject under control
Project under control
Alex Simanovich
 
Аналитика мобильных приложений
Аналитика мобильных приложенийАналитика мобильных приложений
Аналитика мобильных приложений
Anatoly Sharifulin
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
Nata_Churda
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложенийAlexander Khozya
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
Softengi
 
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
SQALab
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
Dmitry Semenov
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская qasib
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
COMAQA.BY
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
 
Team workflow
Team workflowTeam workflow
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
Gonchik Tsymzhitov
 

Similar to Continuous integration testing of mobile SDK (20)

Виды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спроститьВиды QA: Всё что вы не знали и боялись спростить
Виды QA: Всё что вы не знали и боялись спростить
 
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
Интуит. Разработка приложений для iOS. Лекция 12. Тестирование, публикация и др.
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Protrarctor and Angular
Protrarctor and AngularProtrarctor and Angular
Protrarctor and Angular
 
Project under control
Project under controlProject under control
Project under control
 
Аналитика мобильных приложений
Аналитика мобильных приложенийАналитика мобильных приложений
Аналитика мобильных приложений
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
 
Symfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork EnterpriseSymfony в архитектуре Upwork Enterprise
Symfony в архитектуре Upwork Enterprise
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
Team workflow
Team workflowTeam workflow
Team workflow
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 

Continuous integration testing of mobile SDK

  • 2. Алексей Альтер-Песоцкий ≈ 1 год в мире ручного тестирования web ≈ 3 года в мире автоматизации mobile @alter_al in/apesotskiy
  • 3.
  • 4. — это библиотека мобильной аналитики, которая: • помогает строить эффективные рекламные кампании • устанавливает качество трафика • определяет пользовательский retention • собирает системные события • определяет аудиторию пользователей по возрасту/полу/локации • рисует красивые отчеты • iOS • Android • Unity
  • 5. Системные события install / update launch / session purchase login, registration, level, invite custom Интеграция Android Добавляется как gradle-зависимость или jar-библиотека iOS Добавляется в виде фреймворка Unity Добавляется в виде Unity пакета
  • 6. Почему мы тестируем интеграцию нашей библиотеки в сторонних приложениях? Потому что можем! Кто если не мы?
  • 7. Google Play CLI java Jenkins Job Builder python
  • 10. // имя сборки // git репозиторий // параметры на входе // исходные параметры сборки // скачивание билда из Hockey App // запуск appium // послесборочное выключение appium // запуск тестов
  • 11. Изи изи // параметры приложения N // имя Jenkins Job Builder шаблона // параметры приложения N+1 // параметры приложения N+2 // параметры приложения N+3 // параметры приложения N+4 // параметры приложения N+5 // параметры приложения N+6 // параметры приложения N+7 // параметры приложения N+8 // параметры приложения N+9
  • 12. Тестируемые платформы • iOS • Android Масштаб • > 70 приложений • ≈ +1 приложение в месяц Скачивание нового билда • curl • gp-download Тесты • Appium::Java Отчет • Slack • Jenkins::Allure Время прохождения одной сборки • 5 - 10 минут
  • 13.
  • 14.
  • 15. • Установки • Удаления • Запуски • Клики json validation • Поиск уникальных идентификаторов • Поиск системных событий • Проверка таймштампов • Проверка минимальной версии SDK • Проверка наличия локации и окружения, в зависимости от permissions • Валидация запросов по json схеме Tracker • Отправка запросов • Перехват запросов • Сохранение запросов
  • 16. json • Установки • Удаления • Запуски • Клики validation • Поиск уникальных идентификаторов • Поиск системных событий • Проверка таймштампов • Проверка минимальной версии SDK • Проверка наличия локации и окружения, в зависимости от permissions • Валидация запросов по json схеме Tracker • Отправка запросов • Перехват запросов • Сохранение запросов
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 23. — — + + for (app : hockeyApps) for (app : marketApps) Trigger new builds? new builds? start app’s test job Exit start app’s test job
  • 24. Подробнее о триггере Реализация Jenkins Job Частота запуска 0 */1 * * * Время выполнения 2.5 мин Призвание Запуск тестовых сборок
  • 25. Trigger Test Job Test Job New app build? Start appium Stop appium myTracker requests mitmproxy Platform? iOS Driver Android Driver Test Job Result get info download app build for (test : tests) build id Json validation
  • 26.
  • 27. iOS Update Apple checks iOS apps signing Android sniffing traffic Google updates
  • 28.
  • 29. iOS Update Apple checks iOS apps signing Android sniffing traffic Google updates
  • 30. mitmweb -p 8888 --ignore-hosts ‘^(?:(?!tracker-api.my.com|mytracker.mycdn.me|appldnld.apple.com|mesu.apple.com).)*$'
  • 31. iOS Update Apple checks iOS apps signing Android sniffing traffic Google updates
  • 32.
  • 33. iOS Update Apple checks iOS apps signing Android sniffing traffic Google updates
  • 35. iOS Update Apple checks iOS apps signing Android sniffing traffic Google updates
  • 36.
  • 37. • myTracker: https://tracker.my.com • Appium: https://appium.io • Mitmproxy: https://mitmproxy.org • Jenkins Job Builder: https://docs.openstack.org/infra/jenkins-job-builder • Hockey App: https://hockeyapp.net • Fastlane: https://fastlane.tools • Google Play CLI: https://npmjs.com/package/google-play-cli • Network security config: https://github.com/levyitay/AddSecurityExceptionAndroid • Sandbox https://github.com/alter-al/continuous_integration_testing_mobile_sdk