Mobile Saturday. Тема 4. Автоматизация тестирования верстки ...
Transcript of Mobile Saturday. Тема 4. Автоматизация тестирования верстки ...
Приветствуем в мастере настройки UI автотестов для
Android!
Для запуска презентации – «Автоматизация тестирования верстки» нажмите кнопку «Next >»
Александр
Хотемской
Web, APIs,
Android, iOS,
Game Dev
Содержание
•Что это?
•Что хорошо? Что плохо?
•Подход прямого тестирования свойств у элементов
•Подход сравнения скриншотов
Что это?• Тестирование верстки (UI, разметки) – проверка
внешнего вида приложения на наличие регрессии видимой части.
• Это НЕ функциональное тестирование. Проверяется только внешний вид
• Это НЕ кросс-платформенное, кросс-браузерноетестирование
Что это?• Сравнительно новый вид
тестирования
• Подходит для web, native, webview, hybrid приложений
• Не панацея от всех UI багов
• Стоит применить, если получится дешевле чем ручная проверка
• Хорошо подойдет для множества однотипных экранов, которые долго проверять руками
Что хорошо?• Позволяет проводить автоматическую регрессию UI
части
• Позволяет разработчику убедится что верстка не «плывет»
• Проверка элементов с точностью до пикселя
• Ловит баги, которые можно пропустить из-за «замыливания» глаз
• Сильный wow-эффект для заказчика – «верстка контролируется автоматически» - звучит очень сильно
Что плохо?
• Нужно работать – само ничего не будет
• Требуется background в автоматизации
• Отнимает дополнительное время на поддержку – и не всегда овчинка стоит выделки
• Частые срабатывания из-за «шума» на страничках и ложно-положительные результаты
ПодходыПроверка свойств у тестируемых элементов –размеры, отступы, цвет, шрифт, текст, и т.д.
Снятие скриншотов на регулярной основе, и сравнение этих скриншотов между собой
VS
Инструменты
Прямая проверка свойств элементов
• Проверяем конкретные значения параметров у конкретных элементов
• Сравниваем параметры с ожидаемыми
• Подходит для всех фреймворков
• Обычно можно встроить в функциональные тесты
Прямая проверка свойств элементов
• Координаты, размеры, видимость
• isEnabled, isSelected
• getAttribute
• Localization
Прямая проверка свойств элементов
• Нужно иметь разные наборы ожидаемых параметров для разных экранов
• Сложно проверить все – куча возможных вариантов регрессии
• Изменение интерфейса – автоматизатор плачет и просит пощадить
• Если встроено в функциональные тесты – тесты имеют еще одну причину для падений
Прямая проверка свойств элементов
• Встраивание проверок верстки в функциональные тесты
• Пример готового решения –Galen Framework
Прямая проверка свойств элементов
Сравнение скриншотов
• Очень наглядно – различия в скриншотах сразу заметны
• Не нужно хранить тонны конфигураций для каждого устройства – достаточно хранить эталонные скриншоты
• Нет точечных проверок параметров –сравнивается внешний вид целиком, больше покрытие
• Замечает даже малейшие изменения интерфейса (вплоть до пикселя)
Сравнение скриншотов – уровень быстро и дешево
Сравнение скриншотов• Готовые инструменты:
• Yandex aShot
• Facebook screenshot-tests-for-android
• Самописные – можно самому реализовать попиксельное сравнение двух картинок
• Facebook screenshot-tests-for-android
• Хитро перехватывает вызовы к View, чтобы отрендерить его сферично в вакууме
• Подменяет вызовы measure() layout() draw()
Сравнение скриншотов
Итоги• Каждому проекту свой подход
• Инструментов маловато, но постоянно появляются новые
• Оцените насколько необходимо вам тестирование верстки