SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Автоматизация рутинных
задач для тестирования
мобильных приложений
Олег Никифоров, INNOMOS
Обо мне
• 6+ лет в тестировании мобильных
приложений
• iOS, Android, Android IoT, Backend
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
О докладе
• Рутинные задачи раздражают
• Как я пришел к автоматизации
• Демо и разбор скриптов
• Примеры
• Python
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Вступление
Автоматизация, да не тестирования
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Рутинные задачи раздражают
• Установить билд
• Сделать скриншот
• Снять видео
• Etc.
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Установить билд – a path to scripting
"A long time ago in a galaxy far, far away...."
• Android проект: телефоны + планшет
• Частое обновления билдов
• Минимум 6 девайсов для теста
• Сборки на ftp, доступ через браузер
WTF!!!
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируй
1. Поставить задачу
2. Пнуть разработчика
3. …
4. Profit
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Постановка задачи
"Хочу быстро ставить билды без регистрации и смс"
Что может ADB:
• Узнать какие устройства подключены
• Удалить приложение
• Установить .apk файл
Что еще надо:
• Указать какое приложение установить
• Скачать .apk файл
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Процесс
• Подключаем девайс
• Запускаем .sh скрипт
• Подключаем следующий девайс
• Запускаем .sh скрипт
• …
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Что можно улучшить
• Установить на несколько девайсов без
перезапуска скрипта
• Проверить перед скачиванием что есть
новая сборка
• Проверить что сборка на девайсе устарела
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируй… сам
1. Поставить задачу
2. Придумать алгоритм
3. Реализовать каждый шаг
4. Свести в одно целое
5. ...
6. Profit
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Скриншот с Android девайса
Идея:
Сделать скриншот и сохранить на машину
Решения:
• Физические кнопки + почта
• Приложение на девайсе
• Android Studio
• Сторонние приложения на компе (AndroidTool)
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируем
Что я знаю:
• ADB позволяет сделать скриншот с подключенного девайса
• Скриншот сохраняется на девайсе
Что надо сделать:
• Снять скриншот
• Скачать файл с девайса на машину
• Удалить файл с девайса
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Что можно улучшить
screen.png ???
Android_screen_n.png ???
Andoid_screen_2018-02-08_13-56-12.png ???
Задать имя файла:
• На каком девайсе сделан скриншот
• Запущенный пакет и активность
• Текущее время
HTC-One_5-0-2_com-my_app-dev_TaskDetailActivity_2018-02-08_13-56-12.png
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Шаги
• Получаем имя девайса и версию ос:
""
• Получаем данные про активность:
"'"
• Выкусываем название пакета и название активности
• Получаем текущее время
• Комбинируем данные в название файла
• Делаем скриншот:
""
• Скачиваем скриншот
""
• Удаляем скриншот с девайса
""
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
adb shell getprop | egrep "ro.product.model|ro.build.version.release
adb shell dumpsys window windows | grep -E 'mCurrentFocus
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png <destination/filename>
adb shell rm /sdcard/screen.png
Demo
android_screen.py
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Разбор
Плюсы:
• Быстро вызывается, особенно с помощью
zsh + zsh-autosuggestions
• Кастомизация имени файла
• Выбор девайса из подключенных (опционально)
Минусы:
• Сбои adb
• Landscape скриншоты приходится переворачивать вручную… или не
приходится
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Видео с Android девайса
Идея:
Записать видео и сохранить на машину
Решения:
• Screencast на комп + запись экрана
• Сторонние приложения на компе (AndroidTool)
• ???
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируем
Что я знаю:
• ADB позволяет записать видео с экрана подключенного девайса
• Видео сохраняется на девайсе
Что надо сделать:
• Начать запись видео
• Прервать запись видео
• Скачать файл с девайса на машину
• Удалить файл с девайса
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Шаги
• Получаем имя девайса и версию ос:
""
• Данные про активность не нужны
• Выкусываем название пакета:
"'"
• Получаем текущее время
• Комбинируем данные в название файла
• Стартуем запись видео:
""
• Прерываем запись видео:
” "
• Скачиваем видео
""
• Удаляем видео с девайса
""
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
adb shell getprop | egrep "ro.product.model|ro.build.version.release
adb shell dumpsys window windows | grep -E 'mCurrentFocus
adb shell screenrecord --verbose <filepath>
Ctrl + C
adb pull <filepath> <destination>
adb shell rm <filepath>
Demo
android_video.py
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Разбор
Плюсы:
• Быстрый способ сделать запись экрана
• Работает нативно
• Кастомизация имени файла
Минусы:
• Сбои adb
• Android 4.4+
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Не андроидом единым
• Сделать скриншот: "idevicescreenshot"
• Удалить апп, скачать ipa и установить: "ideviceinstaller"
• Сбилдить апп из терминала: "xcodebuild"
• Снять видео???
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Скриншот с iOS девайса
Идея:
Сделать скриншот и сохранить на машину
Решения:
• Физические кнопки + почта
• Xcode
• Сторонние приложения на компе (AndroidTool)
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизация
Что я знаю:
• Нет открытого API для взаимодействия с системой
• Есть libimobiledevice:
– Делает скриншот и сразу сохраняет на машину в формате tiff
– Обращение к девайсу по UDID
Что надо сделать:
• Узнать UDID подключенного девайса
• Сделать скриншот
• Сконвертировать скриншот из tiff в png
• Удалить tiff файл
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Шаги
• Создаем список девайсов с именем и UDID
• Узнаем какие девайсы подключены в данный момент:
""
• Если девайса нет в списке, узнаем его имя и предлагаем добавить:
""
Узнаем версию ос:
""
• Получаем текущее время
• Комбинируем данные в название файла
• Делаем скриншот:
""
• Конвертируем файл из tiff в png
• Удаляем tiff файл
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
device_id –l
idevicename -u <udid>
ideviceinfo -u <udid> | grep 'ProductVersion'
idevicescreenshot -u <udid> <filepath>.tiff
Demo
ios_screen.py
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Разбор
Плюсы:
• Быстро вызывается
• Кастомизация имени файла
• Выбор девайса из подключенных
Минусы:
• Landscape скриншоты приходится переворачивать вручную
• Developer disk image
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Python
Работает из коробки (MacOS 10.11.6)
Легкий в освоении, читабельный синтаксис
PyCharm
Развитое комьюнити
Много библиотек, легкая (обычно) установка
Скрипты запускаются быстро
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Python script
#!/usr/bin/python
chmod +x <filename>
Добавить путь в системную переменную PATH
(.zshrc: export PATH="/Users/oleg.nikiforov/scripts")
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Python packages
• requests – http запросы
• json – работа с JSON
• pyjq – выполнение jq команд (JSON)
• subprocess – выполнение shell команд
• argparse – парсинг аргументов
• tabulate – красивый вывод данных в консоль
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Бонус: Чистка DerivedData
Идея:
Хочу быстро чистить DerivedData
разбитую по проектным папкам
Решения:
• Чистить вручную папку в каждом проекте
• xclean
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизация
Что я знаю:
• Через Python удобно выполнять shell команды
• Через shell легко искать папки и чистить их
Что надо сделать:
• MVP
• Итеративное усложнение функционала
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируй сам… правильно:
MVP
• Ищем все DerivedData папки
• Просим перечислить папки для чистки
• Чистим
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Автоматизируй сам… правильно:
Итерации
1. Сортировка результатов поиска по размеру
2. Подтверждение чистки
3. Возможность почистить все папки
4. Возможность почистить все папки кроме
перечисленных
5. Возможность задать локацию для поиска
6. Возможность чистить без подтверждения
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Шаги
• Парсинг аргументов:
– Базовая директория в которой ищем
– Флаг для удаления без подтверждения
• Делаем поиск путей содержащих директорию "DerivedData",
сортируем по размеру:
”
”
• Узнаем у пользователя какие папки чистить
• Запрашиваем подтверждения действия, если нет флага
• Для каждой папки выполняем команду на удаление файлов:
""
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
find '<directory>' -type d -name 'DerivedData’ | gxargs -d 'n'
du -sh | gsort -hr
rm -rf "<folder_path>"/*
Demo
derived_data.py
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Разбор
Плюсы:
• Если DerivedData хранится попроектно, то не надо
чистить папки руками
• Возможность посмотреть сколько места отжирает
DerivedData
Минусы:
• Деструктивное действие
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Что еще
• Собрать приложение из консоли
• Сгенерировать пользовательские данные
• Сгенерировать баркод
• Проверить урлы
• Проверить валидность данных
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
Q&A
Контакты:
• Skype: navisnobilite
• Twitter: ddr3ams
• Github: onikiforov
Ссылки:
• http://ohmyz.sh/
• https://github.com/zsh-users/zsh-autosuggestions
• https://developer.android.com/studio/command-line/adb.html
• https://github.com/mortenjust/androidtool-mac
• http://www.libimobiledevice.org
• https://github.com/deszip/xclean
• https://github.com/onikiforov/dd_cleaner
• https://github.com/onikiforov/scripts
Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage

Contenu connexe

Tendances

Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиSQALab
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Nikita Lipsky
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaNikita Lipsky
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьIgor Khrol
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: ТестированиеYandex
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - ТестированиеYandex
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooТарасов Константин
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web apiIgor Lyubin
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Разработка приложения: от идеи до запуска
Разработка приложения: от идеи до запускаРазработка приложения: от идеи до запуска
Разработка приложения: от идеи до запускаAnatoly Sharifulin
 

Tendances (19)

Автоматизация тестирования
Автоматизация тестированияАвтоматизация тестирования
Автоматизация тестирования
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на Java
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Марина Широчкина: Тестирование
Марина Широчкина: ТестированиеМарина Широчкина: Тестирование
Марина Широчкина: Тестирование
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Разработка приложения: от идеи до запуска
Разработка приложения: от идеи до запускаРазработка приложения: от идеи до запуска
Разработка приложения: от идеи до запуска
 

Similaire à 5 oleg nikiforov - automating routine tasks for mobile apps testing

Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidUnity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidDevGAMM Conference
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Эльвина Сакаева
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Вирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииВирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииSQALab
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныCodeFest
 
Есть ли жизнь после релиза мобильного приложения?
Есть ли жизнь после релиза мобильного приложения?Есть ли жизнь после релиза мобильного приложения?
Есть ли жизнь после релиза мобильного приложения?Alexander Khozya
 
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...Badoo Development
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Introduction to Mobile applications testing
Introduction to Mobile applications testingIntroduction to Mobile applications testing
Introduction to Mobile applications testingOleg Nikiforov
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 
ребров андрей - Автоматизация QA это модно
ребров андрей - Автоматизация QA это модноребров андрей - Автоматизация QA это модно
ребров андрей - Автоматизация QA это модноMagneta AI
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptDenis Latushkin
 
Rebrov selenium camp2013
Rebrov selenium camp2013Rebrov selenium camp2013
Rebrov selenium camp2013Andrey Rebrov
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныRoman Dvornov
 

Similaire à 5 oleg nikiforov - automating routine tasks for mobile apps testing (20)

Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity AndroidUnity: "Очевидное-невероятное” или хитрости разработки на Unity Android
Unity: "Очевидное-невероятное” или хитрости разработки на Unity Android
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Вирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестированииВирусное тестирование. Что-то новое в конфигурационном тестировании
Вирусное тестирование. Что-то новое в конфигурационном тестировании
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 
Есть ли жизнь после релиза мобильного приложения?
Есть ли жизнь после релиза мобильного приложения?Есть ли жизнь после релиза мобильного приложения?
Есть ли жизнь после релиза мобильного приложения?
 
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...
Доклад Александра Хози и Николая Козлова на Mobile ConfetQA. "Есть ли жизнь п...
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Introduction to Mobile applications testing
Introduction to Mobile applications testingIntroduction to Mobile applications testing
Introduction to Mobile applications testing
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
ребров андрей - Автоматизация QA это модно
ребров андрей - Автоматизация QA это модноребров андрей - Автоматизация QA это модно
ребров андрей - Автоматизация QA это модно
 
Отладка веб-приложений на Javascript
Отладка веб-приложений на JavascriptОтладка веб-приложений на Javascript
Отладка веб-приложений на Javascript
 
Rebrov selenium camp2013
Rebrov selenium camp2013Rebrov selenium camp2013
Rebrov selenium camp2013
 
Инструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важныИнструменты разные нужны, инструменты разные важны
Инструменты разные нужны, инструменты разные важны
 

Plus de Ievgenii Katsan

8 andrew kalyuzhin - 30 ux-advices, that will make users love you
8   andrew kalyuzhin - 30 ux-advices, that will make users love you8   andrew kalyuzhin - 30 ux-advices, that will make users love you
8 andrew kalyuzhin - 30 ux-advices, that will make users love youIevgenii Katsan
 
5 hans van loenhoud - master-class the 7 skills of highly successful teams
5   hans van loenhoud - master-class the 7 skills of highly successful teams5   hans van loenhoud - master-class the 7 skills of highly successful teams
5 hans van loenhoud - master-class the 7 skills of highly successful teamsIevgenii Katsan
 
4 alexey orlov - life of product in startup and enterprise
4   alexey orlov - life of product in startup and enterprise4   alexey orlov - life of product in startup and enterprise
4 alexey orlov - life of product in startup and enterpriseIevgenii Katsan
 
3 dmitry gomeniuk - how to make data-driven decisions in saa s products
3   dmitry gomeniuk - how to make data-driven decisions in saa s products3   dmitry gomeniuk - how to make data-driven decisions in saa s products
3 dmitry gomeniuk - how to make data-driven decisions in saa s productsIevgenii Katsan
 
7 hans van loenhoud - the problem-goal-solution trinity
7   hans van loenhoud - the problem-goal-solution trinity7   hans van loenhoud - the problem-goal-solution trinity
7 hans van loenhoud - the problem-goal-solution trinityIevgenii Katsan
 
3 denys gobov - change request specification the knowledge base or the task...
3   denys gobov - change request specification the knowledge base or the task...3   denys gobov - change request specification the knowledge base or the task...
3 denys gobov - change request specification the knowledge base or the task...Ievgenii Katsan
 
5 victoria cupet - learn to play business analysis
5   victoria cupet - learn to play business analysis5   victoria cupet - learn to play business analysis
5 victoria cupet - learn to play business analysisIevgenii Katsan
 
5 alina petrenko - key requirements elicitation during the first contact wi...
5   alina petrenko - key requirements elicitation during the first contact wi...5   alina petrenko - key requirements elicitation during the first contact wi...
5 alina petrenko - key requirements elicitation during the first contact wi...Ievgenii Katsan
 
3 karabak kuyavets transformation of business analyst to product owner
3   karabak kuyavets transformation of business analyst to product owner3   karabak kuyavets transformation of business analyst to product owner
3 karabak kuyavets transformation of business analyst to product ownerIevgenii Katsan
 
4 andrii melnykov - stakeholder management for pd ms and b-as and why it is...
4   andrii melnykov - stakeholder management for pd ms and b-as and why it is...4   andrii melnykov - stakeholder management for pd ms and b-as and why it is...
4 andrii melnykov - stakeholder management for pd ms and b-as and why it is...Ievgenii Katsan
 
3 zornitsa nikolova - the product manager between decision making and facil...
3   zornitsa nikolova - the product manager between decision making and facil...3   zornitsa nikolova - the product manager between decision making and facil...
3 zornitsa nikolova - the product manager between decision making and facil...Ievgenii Katsan
 
4 viktoriya gudym - how to effectively manage remote employees
4   viktoriya gudym - how to effectively manage remote employees4   viktoriya gudym - how to effectively manage remote employees
4 viktoriya gudym - how to effectively manage remote employeesIevgenii Katsan
 
9 natali renska - product and outsource development, how to cook 2 meals in...
9   natali renska - product and outsource development, how to cook 2 meals in...9   natali renska - product and outsource development, how to cook 2 meals in...
9 natali renska - product and outsource development, how to cook 2 meals in...Ievgenii Katsan
 
7 denis parkhomenko - from idea to execution how to make a product that cus...
7   denis parkhomenko - from idea to execution how to make a product that cus...7   denis parkhomenko - from idea to execution how to make a product that cus...
7 denis parkhomenko - from idea to execution how to make a product that cus...Ievgenii Katsan
 
6 anton vitiaz - inside the mvp in 3 days
6   anton vitiaz - inside the mvp in 3 days6   anton vitiaz - inside the mvp in 3 days
6 anton vitiaz - inside the mvp in 3 daysIevgenii Katsan
 
5 mariya popova - ideal product management. unicorns in our reality
5   mariya popova - ideal product management. unicorns in our reality5   mariya popova - ideal product management. unicorns in our reality
5 mariya popova - ideal product management. unicorns in our realityIevgenii Katsan
 
2 victor podzubanov - design thinking game
2   victor podzubanov - design thinking game2   victor podzubanov - design thinking game
2 victor podzubanov - design thinking gameIevgenii Katsan
 
3 sergiy potapov - analyst to product owner
3   sergiy potapov - analyst to product owner3   sergiy potapov - analyst to product owner
3 sergiy potapov - analyst to product ownerIevgenii Katsan
 
4 anton parkhomenko - how to make effective user research with no budget at...
4   anton parkhomenko - how to make effective user research with no budget at...4   anton parkhomenko - how to make effective user research with no budget at...
4 anton parkhomenko - how to make effective user research with no budget at...Ievgenii Katsan
 

Plus de Ievgenii Katsan (20)

8 andrew kalyuzhin - 30 ux-advices, that will make users love you
8   andrew kalyuzhin - 30 ux-advices, that will make users love you8   andrew kalyuzhin - 30 ux-advices, that will make users love you
8 andrew kalyuzhin - 30 ux-advices, that will make users love you
 
5 hans van loenhoud - master-class the 7 skills of highly successful teams
5   hans van loenhoud - master-class the 7 skills of highly successful teams5   hans van loenhoud - master-class the 7 skills of highly successful teams
5 hans van loenhoud - master-class the 7 skills of highly successful teams
 
4 alexey orlov - life of product in startup and enterprise
4   alexey orlov - life of product in startup and enterprise4   alexey orlov - life of product in startup and enterprise
4 alexey orlov - life of product in startup and enterprise
 
3 dmitry gomeniuk - how to make data-driven decisions in saa s products
3   dmitry gomeniuk - how to make data-driven decisions in saa s products3   dmitry gomeniuk - how to make data-driven decisions in saa s products
3 dmitry gomeniuk - how to make data-driven decisions in saa s products
 
7 hans van loenhoud - the problem-goal-solution trinity
7   hans van loenhoud - the problem-goal-solution trinity7   hans van loenhoud - the problem-goal-solution trinity
7 hans van loenhoud - the problem-goal-solution trinity
 
1 hans van loenhoud -
1   hans van loenhoud - 1   hans van loenhoud -
1 hans van loenhoud -
 
3 denys gobov - change request specification the knowledge base or the task...
3   denys gobov - change request specification the knowledge base or the task...3   denys gobov - change request specification the knowledge base or the task...
3 denys gobov - change request specification the knowledge base or the task...
 
5 victoria cupet - learn to play business analysis
5   victoria cupet - learn to play business analysis5   victoria cupet - learn to play business analysis
5 victoria cupet - learn to play business analysis
 
5 alina petrenko - key requirements elicitation during the first contact wi...
5   alina petrenko - key requirements elicitation during the first contact wi...5   alina petrenko - key requirements elicitation during the first contact wi...
5 alina petrenko - key requirements elicitation during the first contact wi...
 
3 karabak kuyavets transformation of business analyst to product owner
3   karabak kuyavets transformation of business analyst to product owner3   karabak kuyavets transformation of business analyst to product owner
3 karabak kuyavets transformation of business analyst to product owner
 
4 andrii melnykov - stakeholder management for pd ms and b-as and why it is...
4   andrii melnykov - stakeholder management for pd ms and b-as and why it is...4   andrii melnykov - stakeholder management for pd ms and b-as and why it is...
4 andrii melnykov - stakeholder management for pd ms and b-as and why it is...
 
3 zornitsa nikolova - the product manager between decision making and facil...
3   zornitsa nikolova - the product manager between decision making and facil...3   zornitsa nikolova - the product manager between decision making and facil...
3 zornitsa nikolova - the product manager between decision making and facil...
 
4 viktoriya gudym - how to effectively manage remote employees
4   viktoriya gudym - how to effectively manage remote employees4   viktoriya gudym - how to effectively manage remote employees
4 viktoriya gudym - how to effectively manage remote employees
 
9 natali renska - product and outsource development, how to cook 2 meals in...
9   natali renska - product and outsource development, how to cook 2 meals in...9   natali renska - product and outsource development, how to cook 2 meals in...
9 natali renska - product and outsource development, how to cook 2 meals in...
 
7 denis parkhomenko - from idea to execution how to make a product that cus...
7   denis parkhomenko - from idea to execution how to make a product that cus...7   denis parkhomenko - from idea to execution how to make a product that cus...
7 denis parkhomenko - from idea to execution how to make a product that cus...
 
6 anton vitiaz - inside the mvp in 3 days
6   anton vitiaz - inside the mvp in 3 days6   anton vitiaz - inside the mvp in 3 days
6 anton vitiaz - inside the mvp in 3 days
 
5 mariya popova - ideal product management. unicorns in our reality
5   mariya popova - ideal product management. unicorns in our reality5   mariya popova - ideal product management. unicorns in our reality
5 mariya popova - ideal product management. unicorns in our reality
 
2 victor podzubanov - design thinking game
2   victor podzubanov - design thinking game2   victor podzubanov - design thinking game
2 victor podzubanov - design thinking game
 
3 sergiy potapov - analyst to product owner
3   sergiy potapov - analyst to product owner3   sergiy potapov - analyst to product owner
3 sergiy potapov - analyst to product owner
 
4 anton parkhomenko - how to make effective user research with no budget at...
4   anton parkhomenko - how to make effective user research with no budget at...4   anton parkhomenko - how to make effective user research with no budget at...
4 anton parkhomenko - how to make effective user research with no budget at...
 

Dernier (9)

Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 

5 oleg nikiforov - automating routine tasks for mobile apps testing

  • 1. Автоматизация рутинных задач для тестирования мобильных приложений Олег Никифоров, INNOMOS
  • 2. Обо мне • 6+ лет в тестировании мобильных приложений • iOS, Android, Android IoT, Backend Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 3. О докладе • Рутинные задачи раздражают • Как я пришел к автоматизации • Демо и разбор скриптов • Примеры • Python Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 4. Вступление Автоматизация, да не тестирования Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 5. Рутинные задачи раздражают • Установить билд • Сделать скриншот • Снять видео • Etc. Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 6. Установить билд – a path to scripting "A long time ago in a galaxy far, far away...." • Android проект: телефоны + планшет • Частое обновления билдов • Минимум 6 девайсов для теста • Сборки на ftp, доступ через браузер WTF!!! Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 7. Автоматизируй 1. Поставить задачу 2. Пнуть разработчика 3. … 4. Profit Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 8. Постановка задачи "Хочу быстро ставить билды без регистрации и смс" Что может ADB: • Узнать какие устройства подключены • Удалить приложение • Установить .apk файл Что еще надо: • Указать какое приложение установить • Скачать .apk файл Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 9. Процесс • Подключаем девайс • Запускаем .sh скрипт • Подключаем следующий девайс • Запускаем .sh скрипт • … Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 10. Что можно улучшить • Установить на несколько девайсов без перезапуска скрипта • Проверить перед скачиванием что есть новая сборка • Проверить что сборка на девайсе устарела Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 11. Автоматизируй… сам 1. Поставить задачу 2. Придумать алгоритм 3. Реализовать каждый шаг 4. Свести в одно целое 5. ... 6. Profit Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 12. Скриншот с Android девайса Идея: Сделать скриншот и сохранить на машину Решения: • Физические кнопки + почта • Приложение на девайсе • Android Studio • Сторонние приложения на компе (AndroidTool) Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 13. Автоматизируем Что я знаю: • ADB позволяет сделать скриншот с подключенного девайса • Скриншот сохраняется на девайсе Что надо сделать: • Снять скриншот • Скачать файл с девайса на машину • Удалить файл с девайса Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 14. Что можно улучшить screen.png ??? Android_screen_n.png ??? Andoid_screen_2018-02-08_13-56-12.png ??? Задать имя файла: • На каком девайсе сделан скриншот • Запущенный пакет и активность • Текущее время HTC-One_5-0-2_com-my_app-dev_TaskDetailActivity_2018-02-08_13-56-12.png Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 15. Шаги • Получаем имя девайса и версию ос: "" • Получаем данные про активность: "'" • Выкусываем название пакета и название активности • Получаем текущее время • Комбинируем данные в название файла • Делаем скриншот: "" • Скачиваем скриншот "" • Удаляем скриншот с девайса "" Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage adb shell getprop | egrep "ro.product.model|ro.build.version.release adb shell dumpsys window windows | grep -E 'mCurrentFocus adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png <destination/filename> adb shell rm /sdcard/screen.png
  • 16. Demo android_screen.py Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 17. Разбор Плюсы: • Быстро вызывается, особенно с помощью zsh + zsh-autosuggestions • Кастомизация имени файла • Выбор девайса из подключенных (опционально) Минусы: • Сбои adb • Landscape скриншоты приходится переворачивать вручную… или не приходится Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 18. Видео с Android девайса Идея: Записать видео и сохранить на машину Решения: • Screencast на комп + запись экрана • Сторонние приложения на компе (AndroidTool) • ??? Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 19. Автоматизируем Что я знаю: • ADB позволяет записать видео с экрана подключенного девайса • Видео сохраняется на девайсе Что надо сделать: • Начать запись видео • Прервать запись видео • Скачать файл с девайса на машину • Удалить файл с девайса Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 20. Шаги • Получаем имя девайса и версию ос: "" • Данные про активность не нужны • Выкусываем название пакета: "'" • Получаем текущее время • Комбинируем данные в название файла • Стартуем запись видео: "" • Прерываем запись видео: ” " • Скачиваем видео "" • Удаляем видео с девайса "" Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage adb shell getprop | egrep "ro.product.model|ro.build.version.release adb shell dumpsys window windows | grep -E 'mCurrentFocus adb shell screenrecord --verbose <filepath> Ctrl + C adb pull <filepath> <destination> adb shell rm <filepath>
  • 21. Demo android_video.py Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 22. Разбор Плюсы: • Быстрый способ сделать запись экрана • Работает нативно • Кастомизация имени файла Минусы: • Сбои adb • Android 4.4+ Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 23. Не андроидом единым • Сделать скриншот: "idevicescreenshot" • Удалить апп, скачать ipa и установить: "ideviceinstaller" • Сбилдить апп из терминала: "xcodebuild" • Снять видео??? Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 24. Скриншот с iOS девайса Идея: Сделать скриншот и сохранить на машину Решения: • Физические кнопки + почта • Xcode • Сторонние приложения на компе (AndroidTool) Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 25. Автоматизация Что я знаю: • Нет открытого API для взаимодействия с системой • Есть libimobiledevice: – Делает скриншот и сразу сохраняет на машину в формате tiff – Обращение к девайсу по UDID Что надо сделать: • Узнать UDID подключенного девайса • Сделать скриншот • Сконвертировать скриншот из tiff в png • Удалить tiff файл Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 26. Шаги • Создаем список девайсов с именем и UDID • Узнаем какие девайсы подключены в данный момент: "" • Если девайса нет в списке, узнаем его имя и предлагаем добавить: "" Узнаем версию ос: "" • Получаем текущее время • Комбинируем данные в название файла • Делаем скриншот: "" • Конвертируем файл из tiff в png • Удаляем tiff файл Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage device_id –l idevicename -u <udid> ideviceinfo -u <udid> | grep 'ProductVersion' idevicescreenshot -u <udid> <filepath>.tiff
  • 27. Demo ios_screen.py Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 28. Разбор Плюсы: • Быстро вызывается • Кастомизация имени файла • Выбор девайса из подключенных Минусы: • Landscape скриншоты приходится переворачивать вручную • Developer disk image Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 29. Python Работает из коробки (MacOS 10.11.6) Легкий в освоении, читабельный синтаксис PyCharm Развитое комьюнити Много библиотек, легкая (обычно) установка Скрипты запускаются быстро Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 30. Python script #!/usr/bin/python chmod +x <filename> Добавить путь в системную переменную PATH (.zshrc: export PATH="/Users/oleg.nikiforov/scripts") Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 31. Python packages • requests – http запросы • json – работа с JSON • pyjq – выполнение jq команд (JSON) • subprocess – выполнение shell команд • argparse – парсинг аргументов • tabulate – красивый вывод данных в консоль Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 32. Бонус: Чистка DerivedData Идея: Хочу быстро чистить DerivedData разбитую по проектным папкам Решения: • Чистить вручную папку в каждом проекте • xclean Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 33. Автоматизация Что я знаю: • Через Python удобно выполнять shell команды • Через shell легко искать папки и чистить их Что надо сделать: • MVP • Итеративное усложнение функционала Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 34. Автоматизируй сам… правильно: MVP • Ищем все DerivedData папки • Просим перечислить папки для чистки • Чистим Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 35. Автоматизируй сам… правильно: Итерации 1. Сортировка результатов поиска по размеру 2. Подтверждение чистки 3. Возможность почистить все папки 4. Возможность почистить все папки кроме перечисленных 5. Возможность задать локацию для поиска 6. Возможность чистить без подтверждения Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 36. Шаги • Парсинг аргументов: – Базовая директория в которой ищем – Флаг для удаления без подтверждения • Делаем поиск путей содержащих директорию "DerivedData", сортируем по размеру: ” ” • Узнаем у пользователя какие папки чистить • Запрашиваем подтверждения действия, если нет флага • Для каждой папки выполняем команду на удаление файлов: "" Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage find '<directory>' -type d -name 'DerivedData’ | gxargs -d 'n' du -sh | gsort -hr rm -rf "<folder_path>"/*
  • 37. Demo derived_data.py Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 38. Разбор Плюсы: • Если DerivedData хранится попроектно, то не надо чистить папки руками • Возможность посмотреть сколько места отжирает DerivedData Минусы: • Деструктивное действие Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 39. Что еще • Собрать приложение из консоли • Сгенерировать пользовательские данные • Сгенерировать баркод • Проверить урлы • Проверить валидность данных Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage
  • 40. Q&A Контакты: • Skype: navisnobilite • Twitter: ddr3ams • Github: onikiforov Ссылки: • http://ohmyz.sh/ • https://github.com/zsh-users/zsh-autosuggestions • https://developer.android.com/studio/command-line/adb.html • https://github.com/mortenjust/androidtool-mac • http://www.libimobiledevice.org • https://github.com/deszip/xclean • https://github.com/onikiforov/dd_cleaner • https://github.com/onikiforov/scripts Автоматизация рутинных задач для тестирования мобильных приложений @ddr3ams #testingstage