SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Как мы автоматизируем
UI-тестирование
в iOS Почте Mail.Ru
Алексей Халайджи
Отдел iOS разработки Почты Mail.Ru
О докладчике
• Алексей Халайджи
• Закончил МГТУ им. Н.Э. Баумана (ИУ-6)
• Закончил Технопарк Mail.Ru
• Работаю в Mail.Ru с января 2015 года
• Занимаюсь автоматизацией
UI-тестирования с лета 2015 года
Расскажу о…
• Роль автоматизированного тестирования в процессе разработки
• Фреймворк для тестирования
• Первоначальное состояние у истоков автоматизации
• История развития нашей инфраструктуры тестирования
• Проблемы при автоматизации и их решения
• Результаты
Часть 1.
Введение.
О структуре и процессах
Роль автоматизированного тестирования
• Снижение нагрузки на команду ручного тестирования
• Проверка всей основной функциональности
приложения после каждого изменения проекта
• Замещение ручного регрессионного тестирования
• Устранение повторяющихся багов
Автоматизированное тестирование в
Workflow
• Задачи в jira для обычных задач
• Отдельный Workflow для интеграции с QA-отделом
• Возможные стейты задач:
• TO AUTOMATE – при создании. Присутствует описание тест-кейса. Ожидает
аппрува команды автоматизации тестирования
• WAITING FOR AUTOMATION – аппрув получен, ожидает автоматизации
• IN PROGRESS – ТК находится в процессе автоматизации
• AUTOMATED READY – ТК автоматизирован
• WON’T BE AUTOMATED – ТК не будет автоматизирован
• Связь с обычными задачами через ссылки
• Связь с автоматизированными тестами через ссылки и автоматически
генерируемую документацию
Часть 2.
Фреймворк для тестирования
Мы используем MonkeyTalk
• Наиболее стабильный
• Возможность доработки функционала
• Нет более подходящих альтернатив
• BDD
• Есть визуальная IDE с возможностью записи
действий пользователя
Компоненты MonkeyTalk
• IDE
• Java-обработчик команд
• Статическая библиотека с прослушивающим команды веб-
сервером
Особенности синтаксиса
• BDD
• Вид команды:
• <Тип компонента> <Идентификатор> <Действие> [<Аргументы>
<Модификаторы>]
• Напр.,
Button Login_button Tap
View Hello_user WaitFor 25 %thinktime=5000
• Вызов кода приложения
• App MRUITHelper Exec stubMethod
• App MRUITHelper ExecAndReturn result getResultForString “string”
Первоначальное состояние у истоков
автоматизации
• ТК пишет команда QA
• Автоматизация тестов через IDE+record
• Автоматизация разработчиками и отделом QA
• В результате: ~50 UI-тестов, выполняемых за 1.5 часа
Часть 3.
О проблемах, или с чем мы
столкнулись
1. Общие проблемы
• Мало документации
• Мало примеров
• Все баги и улучшения приходится допиливать самим
• Мало обсуждений на stackoverflow.com
• Нет поддержки с лета 2015 года
”I got a new master now…”
- The Genie
Но…
• Мы имеем доступ к открытому коду MonkeyTalk
• Сами можем править баги
• Можем дописывать новый функционал
• Не зависим от других разработчиков
• Быстрая реакция на возникающие проблемы
2. Локализация
• IDE использует надписи на элементах, напр.:
Button “Sign In” Tap
• Не устойчиво к смене языка на симуляторе
• Не устойчиво к смене перевода локализуемой строки
• Изменение перевода ведёт к изменению команды во всех тестах
Использование идентификаторов
• Использование accessibilityIdentifier вместо строк, напр.:
Button [signin-button] Tap
• Проверка локализации через хелперы, напр.:
App LocalizationHelper ExecAndReturn localizedText
localizedStringForId sign_in_button_text
Button [signin-button] Verify ${localizedText} .text
Задумайтесь над локализацией
ЗАРАНЕЕ!!!
3. Нестабильное прохождение тестов
• Нестабильность может быть вызвана:
• Долгая загрузка симулятора
• Долгий старт приложения на симуляторе
• «Тормоза» тестирующей машины
• Долгая загрузка тела письма при прочтении
• Использование хелперов без ожидания
• …
• Много повторов тестов
• Много false-negative результатов
Повышение стабильности
• Ручное выставление задержек (не круто!)
• Привязка по возможности к элементам (напр., ProgressHUD)
• Патчинг MonkeyTalk для ожидания элементов при вызове
хелперов, напр.:
App ExecAndReturn result validateView [emails][0]
%waitfor=[folderTitle]
4. Очень долгое выполнение всех тестов
• ~ 100 тестов
• 3 часа на одной машине
Снижение времени ожидания
• Разделение на папки по функциональности
(напр., auth, compose, …)
• Примерно одинаковое число тестов в папке
• Упал один тест категории – остальные не запускаем
• Запуск категорий на отдельных машинах
• Система нотификаций:
• Упала категория -> сообщение об ошибке категории
• Все категории прошли -> Сообщение об успехе прохождения тестов
• Результат: параллельное выполнение 5-6 категорий по 20 тестов
за 40 минут
5. Взаимодействие с iOS
• Контроль запуска и очистки симулятора
• Контроль запуска приложения
• Последовательное увеличение таймаута запусков
• Влияние на запуск приложения (например, по пушу)
• Сворачивание и перезапуск приложения
Блок описания теста
• В каждом тесте есть блок док. описания. Он состоит из следующих
пунктов:
• Обязательные
• Tasks – списки jira id задач
• Name - название теста
• Сategory – название категории
• Description – краткое описание теста
• Необязательные
• Args – аргументы
• Utils – аргументы для инфраструктуры запуска тестов
• Runtime – версия ОС, на которой нужно запускать тест
• По описанию автоматически может быть сгенерирована документация
• Проверка наличия всех обязательных блоков проводится
автоматически
Влияние на запуск приложения
• С помощью аргументов
• В приложении есть хелпер для работы
с аргументами запуска приложения
• В load методах необходимая
функциональность включается/эмулируется
• Так же может быть использован method swizzling
(то есть замена реализации метода для его сигнатуры).
Suite
• Отличается от suite в привычном понимании MT – это не
последовательность
• MT Suite – это совокупность тестов, выполняемых последовательно вне
зависимости от результата их выполнения с формированием общего
отчёта
• MT Suite реализован нами в общей инфраструктуре запуска тестов
• Suite – последовательность тестов:
• Требующих перезапуска приложения
• При падении одного теста перезапускается весь suite целиком
• Есть отдельный файл описания docs_suite
• Есть наследование аргументов из docs_suite в тестах suite
• Перезапуск приложения реализован через перезапуск симулятора без его
очистки
Перезапуск и сворачивание/разворачивание
приложения
• Перезапуск реализован через suite
• Для сворачивания/разворачивания приложения и ряда других
функций используем private API
• Так как тестовая сборка собирается только локально и никуда не
отправляется, то private API использовать можно
• Патчинг MT, чтобы принимающий сервер библиотеки не
останавливался при сворачивании приложения
• Пример вызовов из тестов:
App MRUITHelper Exec suspendApp
App MRUITHelper Exec wakeApp
6. Повторное использование кода
• Много тестов имеют одинаковые участки кода, например
авторизацию
• MT позволяет запускать отдельные файлы как команду.
Например:
Script Login.mt Run login password
• При иерархической структуре файлов тестов требуется много
симлинков
• Не хватает стандартного механизма запуска отдельных тестов как
команд
Повторное использование кода
Использование JS
• Помимо BDD-описания тестов MT позволяет использовать JS
• Возможность создания библиотеки для обработки конкретных
элементов
• Использование Page Object подхода
• Использование возможностей языка: ООП, циклы, функции…
7. Работа с сетью
• Одно из требований к тестам - изолированность
• Тесты не могут влиять на исполнение друг друга
• При работе с сетью меняется состояние на
сервере, напр. прочитанность письма
• Если тест упал, но не вернул состояние сервера, то он влияет на
остальные тесты
• Тесты разных задач выполняются параллельно
на разных машинах
Стаббинг сетевых запросов
Стаббинг сетевых запросов
• Использование NSURLProtocol для перехватывания запросов по
определённым URL
• Работа через IMAP реализована через специальный прокси
• Возможности:
• Добавление обработчиков с помощью хелперов из теста
• Подмена ответов на сетевые запросы
• Проверки наличия запросов и их количества
• Добавление обработчиков с помощью аргументов запуска теста (напр,
для эмуляции отсутствия сети)
• Возможность добавления фильтров на IMAP-запросы в прокси из теста и
через аргументы
8. Запуск тестов для разных почтовых
протоколов
• Задача:
• Есть ~250 тестов
• Они работают по JSON API через NSURLProtocol
• Множество тестов нужно запускать также и на IMAP
• Решение:
• Используется специальный аргумент в док. описании теста alt_args_cases
• Позволяет запускать один и тот же тест с каждым из параметров из
набора
• Эти аргументы совмещаются с args
• Для IMAP-тестов можно добавить аргумент IMAPMode и обрабатывать
его отдельно в хелперах
• Тесты расширить добавлением фильтров для IMAP-прокси
9. Всё равно очень долго
• Категорий около 15
• Машин около 8
• Всего тестов около 300
• Суммарное время тестирования одной
задачи без очередей на машины ~2 часа
Распараллеливание запуска тестов на
одной машине
• Для каждого теста с аргументами создаётся свой уникальный id и
симулятор
• Задаётся максимальное количество одновременно запускаемых
симуляторов
• Каждый симулятор запускает MT-сервер на отдельном порту
Разбиение тестов по машинам
• Использование вместо папок тегов из док. описания для деления
тестов на группы
• Использование статистики времени выполнения тестов для
разделения тестов на группы, выполняющиеся на разных машинах
• Выполняются все тесты вне зависимости от падения одного в группе
• Новая система нотификаций
• Результаты всех групп объединяются
• Формируется общий отчёт
• Разработчикам приходит нотификация со ссылкой на отчёт
• В результате: 400 тестов за 45 минут
Часть 4.
Результаты автоматизации за
год
• От 50 нестабильных тестов за 90 минут
• До 400 стабильных за 45 минут
• Система нотификаций
• Композитная инфраструктура управления запуском тестов и групп
тестов (suite)
• Статистика выполнения тестов
• Библиотека Page Object-ов и общих JS-функций и ObjC-хелперов
Результаты автоматизации за год
Спасибо за внимание
Алексей Халайджи
Отдел iOS разработки Почты Mail.Ru
a.halaidzhy@corp.mail.ru

Contenu connexe

Tendances

Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?SQALab
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Igor Khrol
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015Igor Khrol
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьSQALab
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...Igor Khrol
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?SQALab
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовCodeFest
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисовSQALab
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgIT61
 
Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Igor Khrol
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...ScrumTrek
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьIgor Khrol
 
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumSQALab
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуSQALab
 

Tendances (20)

Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
 
Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17Test Automation Wargaming SQA Days 17
Test Automation Wargaming SQA Days 17
 
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Grail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
 
Практика тестирования web сервисов
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNgДело тестера боится: как в опытных руках могут заиграть Java и TestNg
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
 
Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?
 
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
Qa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем сутьQa Automation - отбрасываем лишнее и тестируем суть
Qa Automation - отбрасываем лишнее и тестируем суть
 
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью Selenium
 
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
 

En vedette

Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Mail.ru Group
 
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»Mail.ru Group
 
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...Mail.ru Group
 
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...Mail.ru Group
 
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ru
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ruМихаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ru
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ruWG_ Events
 
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!Как готовить аудиторные сегменты: все смешать, но не взбалтывать!
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!Mail.ru Group
 
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиа
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиаКейс: X5 Retail Group - поддержка премиум-класса в социальных медиа
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиаAlexey Orap
 
Точки роста и тренды будущего в таргетированной рекламе
Точки роста и тренды будущего в таргетированной рекламеТочки роста и тренды будущего в таргетированной рекламе
Точки роста и тренды будущего в таргетированной рекламеHiconversion
 
Наука в таргетированной рекламе
Наука в таргетированной рекламеНаука в таргетированной рекламе
Наука в таргетированной рекламеMihail Ivankov
 
Iab weborama rbc
Iab weborama rbcIab weborama rbc
Iab weborama rbcIABRu
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliverySQALab
 
Новые инструменты и тренды таргетированной рекламы
Новые инструменты и тренды таргетированной рекламыНовые инструменты и тренды таргетированной рекламы
Новые инструменты и тренды таргетированной рекламыNew Media
 
Мастер-класс по таргетированной рекламы от myTarget
 Мастер-класс по таргетированной рекламы от myTarget Мастер-класс по таргетированной рекламы от myTarget
Мастер-класс по таргетированной рекламы от myTargetNew Media
 
Углубленные знания рекламы в соцсетях на примере myTarget
Углубленные знания рекламы в соцсетях на примере myTargetУглубленные знания рекламы в соцсетях на примере myTarget
Углубленные знания рекламы в соцсетях на примере myTargetMihail Ivankov
 
Тест-менеджмент в Jira. Анна Добрынина
Тест-менеджмент в Jira. Анна ДобрынинаТест-менеджмент в Jira. Анна Добрынина
Тест-менеджмент в Jira. Анна Добрынинаqasib
 
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"ArrowMedia
 
Кейс ArrowMedia строительство домов
Кейс ArrowMedia строительство домовКейс ArrowMedia строительство домов
Кейс ArrowMedia строительство домовArrowMedia
 
Programmatic Buying на всех этапах воронки продаж
Programmatic Buying на всех этапах воронки продажProgrammatic Buying на всех этапах воронки продаж
Programmatic Buying на всех этапах воронки продажMaksim Katkov
 
«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru
«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru
«Coro. Intro» Евгений Вансевич, программист Почты Mail.RuMail.ru Group
 

En vedette (20)

Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
Максим Богуславский, Banki.ru, «Как вырастить в себе автоматизатора и разрабо...
 
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»
Никита Макаров, Одноклассники, «API, Облака и зачем это все тестировщику»
 
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
Aлексей Медведев, Alpari, «Enterprise-инфраструктура менеджмента PHP-пакетов ...
 
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...
Александр Дьяконов, ВМК МГУ, Решение задачи Search Results Relevance (на плат...
 
Кейсы
КейсыКейсы
Кейсы
 
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ru
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ruМихаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ru
Михаил Фролов - Конверсия в социальных сетях и продажа эмоций - Fotostrana.ru
 
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!Как готовить аудиторные сегменты: все смешать, но не взбалтывать!
Как готовить аудиторные сегменты: все смешать, но не взбалтывать!
 
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиа
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиаКейс: X5 Retail Group - поддержка премиум-класса в социальных медиа
Кейс: X5 Retail Group - поддержка премиум-класса в социальных медиа
 
Точки роста и тренды будущего в таргетированной рекламе
Точки роста и тренды будущего в таргетированной рекламеТочки роста и тренды будущего в таргетированной рекламе
Точки роста и тренды будущего в таргетированной рекламе
 
Наука в таргетированной рекламе
Наука в таргетированной рекламеНаука в таргетированной рекламе
Наука в таргетированной рекламе
 
Iab weborama rbc
Iab weborama rbcIab weborama rbc
Iab weborama rbc
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
 
Новые инструменты и тренды таргетированной рекламы
Новые инструменты и тренды таргетированной рекламыНовые инструменты и тренды таргетированной рекламы
Новые инструменты и тренды таргетированной рекламы
 
Мастер-класс по таргетированной рекламы от myTarget
 Мастер-класс по таргетированной рекламы от myTarget Мастер-класс по таргетированной рекламы от myTarget
Мастер-класс по таргетированной рекламы от myTarget
 
Углубленные знания рекламы в соцсетях на примере myTarget
Углубленные знания рекламы в соцсетях на примере myTargetУглубленные знания рекламы в соцсетях на примере myTarget
Углубленные знания рекламы в соцсетях на примере myTarget
 
Тест-менеджмент в Jira. Анна Добрынина
Тест-менеджмент в Jira. Анна ДобрынинаТест-менеджмент в Jira. Анна Добрынина
Тест-менеджмент в Jira. Анна Добрынина
 
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"Кейс ArrowMedia: "Результативность от инструмента к инструменту"
Кейс ArrowMedia: "Результативность от инструмента к инструменту"
 
Кейс ArrowMedia строительство домов
Кейс ArrowMedia строительство домовКейс ArrowMedia строительство домов
Кейс ArrowMedia строительство домов
 
Programmatic Buying на всех этапах воронки продаж
Programmatic Buying на всех этапах воронки продажProgrammatic Buying на всех этапах воронки продаж
Programmatic Buying на всех этапах воронки продаж
 
«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru
«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru
«Coro. Intro» Евгений Вансевич, программист Почты Mail.Ru
 

Similaire à Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS Почте Mail.Ru»

Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumSQALab
 
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексейsolit
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПОseleznev_stas
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolCOMAQA.BY
 
Artem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysArtem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysLiloSEA
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Ontico
 
Контроль качетсва в компании iiko
Контроль качетсва в компании iikoКонтроль качетсва в компании iiko
Контроль качетсва в компании iikoAlexey Chumagin
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...solit
 
TestLink
TestLinkTestLink
TestLinkISsoft
 
Вадим Зубович - Test Link
Вадим Зубович - Test LinkВадим Зубович - Test Link
Вадим Зубович - Test LinkQA Club Minsk
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011etyumentcev
 
Автоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктурыАвтоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктурыSQALab
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Hub-IT-School
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятMarina Peregud
 

Similaire à Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS Почте Mail.Ru» (20)

Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Эволюция автотестирования на Selenium
Эволюция автотестирования на SeleniumЭволюция автотестирования на Selenium
Эволюция автотестирования на Selenium
 
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
 
Jmeter
JmeterJmeter
Jmeter
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
 
QAFest. Роль тестирования в Devops
QAFest. Роль тестирования в DevopsQAFest. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
 
Jubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation ToolJubula – TDD UI QA Automation Tool
Jubula – TDD UI QA Automation Tool
 
Artem Shabarshin. CSEDays
Artem Shabarshin. CSEDaysArtem Shabarshin. CSEDays
Artem Shabarshin. CSEDays
 
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
 
Контроль качетсва в компании iiko
Контроль качетсва в компании iikoКонтроль качетсва в компании iiko
Контроль качетсва в компании iiko
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
 
TestLink
TestLinkTestLink
TestLink
 
Вадим Зубович - Test Link
Вадим Зубович - Test LinkВадим Зубович - Test Link
Вадим Зубович - Test Link
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
Автоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктурыАвтоматизация в тестировании инфраструктуры
Автоматизация в тестировании инфраструктуры
 
Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едят
 

Plus de Mail.ru Group

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Mail.ru Group
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...Mail.ru Group
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинMail.ru Group
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Mail.ru Group
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовMail.ru Group
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваMail.ru Group
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...Mail.ru Group
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...Mail.ru Group
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidiaMail.ru Group
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоMail.ru Group
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковMail.ru Group
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковMail.ru Group
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Mail.ru Group
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиMail.ru Group
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupMail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Mail.ru Group
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Mail.ru Group
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Mail.ru Group
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Mail.ru Group
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Mail.ru Group
 

Plus de Mail.ru Group (20)

Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
Автоматизация без тест-инженеров по автоматизации, Мария Терехина и Владислав...
 
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
BDD для фронтенда. Автоматизация тестирования с Cucumber, Cypress и Jenkins, ...
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
Использование Fiddler и Charles при тестировании фронтенда проекта pulse.mail...
 
Управление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон ВикторовУправление инцидентами в Почте Mail.ru, Антон Викторов
Управление инцидентами в Почте Mail.ru, Антон Викторов
 
DAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга СвиридоваDAST в CI/CD, Ольга Свиридова
DAST в CI/CD, Ольга Свиридова
 
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...Почему вам стоит использовать свой велосипед и почему не стоит  Александр Бел...
Почему вам стоит использовать свой велосипед и почему не стоит Александр Бел...
 
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...CV в пайплайне распознавания ценников товаров: трюки и хитрости  Николай Масл...
CV в пайплайне распознавания ценников товаров: трюки и хитрости Николай Масл...
 
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidiaRAPIDS: ускоряем Pandas и scikit-learn на GPU  Павел Клеменков, NVidia
RAPIDS: ускоряем Pandas и scikit-learn на GPU Павел Клеменков, NVidia
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
AMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей ПешковAMP для электронной почты, Сергей Пешков
AMP для электронной почты, Сергей Пешков
 
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила СтрелковКак мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
Как мы захотели TWA и сделали его без мобильных разработчиков, Данила Стрелков
 
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
 
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.ТаксиМетапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
Метапрограммирование: строим конечный автомат, Сергей Федоров, Яндекс.Такси
 
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru GroupКак не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
Как не сделать врагами архитектуру и оптимизацию, Кирилл Березин, Mail.ru Group
 
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)Этика искусственного интеллекта, Александр Кармаев (AI Journey)
Этика искусственного интеллекта, Александр Кармаев (AI Journey)
 
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
Нейро-машинный перевод в вопросно-ответных системах, Федор Федоренко (AI Jour...
 
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
Конвергенция технологий как тренд развития искусственного интеллекта, Владими...
 
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
Обзор трендов рекомендательных систем от Пульса, Андрей Мурашев (AI Journey)
 
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
Мир глазами нейросетей, Данила Байгушев, Александр Сноркин ()
 

Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS Почте Mail.Ru»

  • 1. Как мы автоматизируем UI-тестирование в iOS Почте Mail.Ru Алексей Халайджи Отдел iOS разработки Почты Mail.Ru
  • 2. О докладчике • Алексей Халайджи • Закончил МГТУ им. Н.Э. Баумана (ИУ-6) • Закончил Технопарк Mail.Ru • Работаю в Mail.Ru с января 2015 года • Занимаюсь автоматизацией UI-тестирования с лета 2015 года
  • 3. Расскажу о… • Роль автоматизированного тестирования в процессе разработки • Фреймворк для тестирования • Первоначальное состояние у истоков автоматизации • История развития нашей инфраструктуры тестирования • Проблемы при автоматизации и их решения • Результаты
  • 5. Роль автоматизированного тестирования • Снижение нагрузки на команду ручного тестирования • Проверка всей основной функциональности приложения после каждого изменения проекта • Замещение ручного регрессионного тестирования • Устранение повторяющихся багов
  • 6. Автоматизированное тестирование в Workflow • Задачи в jira для обычных задач • Отдельный Workflow для интеграции с QA-отделом • Возможные стейты задач: • TO AUTOMATE – при создании. Присутствует описание тест-кейса. Ожидает аппрува команды автоматизации тестирования • WAITING FOR AUTOMATION – аппрув получен, ожидает автоматизации • IN PROGRESS – ТК находится в процессе автоматизации • AUTOMATED READY – ТК автоматизирован • WON’T BE AUTOMATED – ТК не будет автоматизирован • Связь с обычными задачами через ссылки • Связь с автоматизированными тестами через ссылки и автоматически генерируемую документацию
  • 7. Часть 2. Фреймворк для тестирования
  • 8. Мы используем MonkeyTalk • Наиболее стабильный • Возможность доработки функционала • Нет более подходящих альтернатив • BDD • Есть визуальная IDE с возможностью записи действий пользователя
  • 9. Компоненты MonkeyTalk • IDE • Java-обработчик команд • Статическая библиотека с прослушивающим команды веб- сервером
  • 10. Особенности синтаксиса • BDD • Вид команды: • <Тип компонента> <Идентификатор> <Действие> [<Аргументы> <Модификаторы>] • Напр., Button Login_button Tap View Hello_user WaitFor 25 %thinktime=5000 • Вызов кода приложения • App MRUITHelper Exec stubMethod • App MRUITHelper ExecAndReturn result getResultForString “string”
  • 11. Первоначальное состояние у истоков автоматизации • ТК пишет команда QA • Автоматизация тестов через IDE+record • Автоматизация разработчиками и отделом QA • В результате: ~50 UI-тестов, выполняемых за 1.5 часа
  • 12. Часть 3. О проблемах, или с чем мы столкнулись
  • 13. 1. Общие проблемы • Мало документации • Мало примеров • Все баги и улучшения приходится допиливать самим • Мало обсуждений на stackoverflow.com • Нет поддержки с лета 2015 года ”I got a new master now…” - The Genie
  • 14. Но… • Мы имеем доступ к открытому коду MonkeyTalk • Сами можем править баги • Можем дописывать новый функционал • Не зависим от других разработчиков • Быстрая реакция на возникающие проблемы
  • 15. 2. Локализация • IDE использует надписи на элементах, напр.: Button “Sign In” Tap • Не устойчиво к смене языка на симуляторе • Не устойчиво к смене перевода локализуемой строки • Изменение перевода ведёт к изменению команды во всех тестах
  • 16. Использование идентификаторов • Использование accessibilityIdentifier вместо строк, напр.: Button [signin-button] Tap • Проверка локализации через хелперы, напр.: App LocalizationHelper ExecAndReturn localizedText localizedStringForId sign_in_button_text Button [signin-button] Verify ${localizedText} .text
  • 18. 3. Нестабильное прохождение тестов • Нестабильность может быть вызвана: • Долгая загрузка симулятора • Долгий старт приложения на симуляторе • «Тормоза» тестирующей машины • Долгая загрузка тела письма при прочтении • Использование хелперов без ожидания • … • Много повторов тестов • Много false-negative результатов
  • 19. Повышение стабильности • Ручное выставление задержек (не круто!) • Привязка по возможности к элементам (напр., ProgressHUD) • Патчинг MonkeyTalk для ожидания элементов при вызове хелперов, напр.: App ExecAndReturn result validateView [emails][0] %waitfor=[folderTitle]
  • 20. 4. Очень долгое выполнение всех тестов • ~ 100 тестов • 3 часа на одной машине
  • 21. Снижение времени ожидания • Разделение на папки по функциональности (напр., auth, compose, …) • Примерно одинаковое число тестов в папке • Упал один тест категории – остальные не запускаем • Запуск категорий на отдельных машинах • Система нотификаций: • Упала категория -> сообщение об ошибке категории • Все категории прошли -> Сообщение об успехе прохождения тестов • Результат: параллельное выполнение 5-6 категорий по 20 тестов за 40 минут
  • 22.
  • 23. 5. Взаимодействие с iOS • Контроль запуска и очистки симулятора • Контроль запуска приложения • Последовательное увеличение таймаута запусков • Влияние на запуск приложения (например, по пушу) • Сворачивание и перезапуск приложения
  • 24. Блок описания теста • В каждом тесте есть блок док. описания. Он состоит из следующих пунктов: • Обязательные • Tasks – списки jira id задач • Name - название теста • Сategory – название категории • Description – краткое описание теста • Необязательные • Args – аргументы • Utils – аргументы для инфраструктуры запуска тестов • Runtime – версия ОС, на которой нужно запускать тест • По описанию автоматически может быть сгенерирована документация • Проверка наличия всех обязательных блоков проводится автоматически
  • 25. Влияние на запуск приложения • С помощью аргументов • В приложении есть хелпер для работы с аргументами запуска приложения • В load методах необходимая функциональность включается/эмулируется • Так же может быть использован method swizzling (то есть замена реализации метода для его сигнатуры).
  • 26. Suite • Отличается от suite в привычном понимании MT – это не последовательность • MT Suite – это совокупность тестов, выполняемых последовательно вне зависимости от результата их выполнения с формированием общего отчёта • MT Suite реализован нами в общей инфраструктуре запуска тестов • Suite – последовательность тестов: • Требующих перезапуска приложения • При падении одного теста перезапускается весь suite целиком • Есть отдельный файл описания docs_suite • Есть наследование аргументов из docs_suite в тестах suite • Перезапуск приложения реализован через перезапуск симулятора без его очистки
  • 27. Перезапуск и сворачивание/разворачивание приложения • Перезапуск реализован через suite • Для сворачивания/разворачивания приложения и ряда других функций используем private API • Так как тестовая сборка собирается только локально и никуда не отправляется, то private API использовать можно • Патчинг MT, чтобы принимающий сервер библиотеки не останавливался при сворачивании приложения • Пример вызовов из тестов: App MRUITHelper Exec suspendApp App MRUITHelper Exec wakeApp
  • 28. 6. Повторное использование кода • Много тестов имеют одинаковые участки кода, например авторизацию • MT позволяет запускать отдельные файлы как команду. Например: Script Login.mt Run login password • При иерархической структуре файлов тестов требуется много симлинков • Не хватает стандартного механизма запуска отдельных тестов как команд
  • 30. Использование JS • Помимо BDD-описания тестов MT позволяет использовать JS • Возможность создания библиотеки для обработки конкретных элементов • Использование Page Object подхода • Использование возможностей языка: ООП, циклы, функции…
  • 31. 7. Работа с сетью • Одно из требований к тестам - изолированность • Тесты не могут влиять на исполнение друг друга • При работе с сетью меняется состояние на сервере, напр. прочитанность письма • Если тест упал, но не вернул состояние сервера, то он влияет на остальные тесты • Тесты разных задач выполняются параллельно на разных машинах
  • 33. Стаббинг сетевых запросов • Использование NSURLProtocol для перехватывания запросов по определённым URL • Работа через IMAP реализована через специальный прокси • Возможности: • Добавление обработчиков с помощью хелперов из теста • Подмена ответов на сетевые запросы • Проверки наличия запросов и их количества • Добавление обработчиков с помощью аргументов запуска теста (напр, для эмуляции отсутствия сети) • Возможность добавления фильтров на IMAP-запросы в прокси из теста и через аргументы
  • 34. 8. Запуск тестов для разных почтовых протоколов • Задача: • Есть ~250 тестов • Они работают по JSON API через NSURLProtocol • Множество тестов нужно запускать также и на IMAP • Решение: • Используется специальный аргумент в док. описании теста alt_args_cases • Позволяет запускать один и тот же тест с каждым из параметров из набора • Эти аргументы совмещаются с args • Для IMAP-тестов можно добавить аргумент IMAPMode и обрабатывать его отдельно в хелперах • Тесты расширить добавлением фильтров для IMAP-прокси
  • 35. 9. Всё равно очень долго • Категорий около 15 • Машин около 8 • Всего тестов около 300 • Суммарное время тестирования одной задачи без очередей на машины ~2 часа
  • 36. Распараллеливание запуска тестов на одной машине • Для каждого теста с аргументами создаётся свой уникальный id и симулятор • Задаётся максимальное количество одновременно запускаемых симуляторов • Каждый симулятор запускает MT-сервер на отдельном порту
  • 37. Разбиение тестов по машинам • Использование вместо папок тегов из док. описания для деления тестов на группы • Использование статистики времени выполнения тестов для разделения тестов на группы, выполняющиеся на разных машинах • Выполняются все тесты вне зависимости от падения одного в группе • Новая система нотификаций • Результаты всех групп объединяются • Формируется общий отчёт • Разработчикам приходит нотификация со ссылкой на отчёт • В результате: 400 тестов за 45 минут
  • 39. • От 50 нестабильных тестов за 90 минут • До 400 стабильных за 45 минут • Система нотификаций • Композитная инфраструктура управления запуском тестов и групп тестов (suite) • Статистика выполнения тестов • Библиотека Page Object-ов и общих JS-функций и ObjC-хелперов Результаты автоматизации за год
  • 40. Спасибо за внимание Алексей Халайджи Отдел iOS разработки Почты Mail.Ru a.halaidzhy@corp.mail.ru