SlideShare a Scribd company logo
Проблемы UI автотестов
Web Test Framework с нуля [PRO]
NoBugs
Как избежать проблем при
написании UI автотестов?
2
Надо знать врага в лицо!
3
4
ШАГ 1: ПРОБЛЕМЫ
● Мигающие тесты
● Медленные тесты
5
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
Популярные причины:
● Поиск элемента
● Воспроизведение состояния
● Некорректное ожидание
● Разница окружений
6
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Поиск элемента
HTML
7
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Поиск элемента
byCSS(“button”)
byCSS(“button[onclick=”showAlert()”])
byXPath(“//button”)
8
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Поиск элемента
byAttribute(“data-test”, “test_button”)
9
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Поиск элемента
data-test аттрибуты
без других элементов
не byCss(“a[data-test=”button”]”)
не byXPath(“//a[data-test=”button”]”)
byAttribute(“data-test”, “button”)
10
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Поиск элемента
ПРАВИЛО
внутри команды:
НЕТ data-test аттрибутa ->
НЕТ элемента
11
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Воспроизведение состояния
КАК КЛИКАЕТ ЧЕЛОВЕК?
КАК КЛИКАЕТ МАШИНА?
12
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Воспроизведение состояния
- проверяем состояние
- повторяем
13
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Воспроизведение состояния
try(3 times) {
click()
element.shouldBe(visible)
}
14
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Некорректные ожидания
ТИПЫ ОЖИДАНИЙ:
● явные (я тут жду)
● неявные (ты не знал, а я жду)
15
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Некорректные ожидания
- Не ждем совсем
- Ждем дольше, чем нужно
- Ждем хардкорно
(не смотря на состояние)
16
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Некорректные ожидания
КЕЙС: кликнуть на кнопку
- сразу кликаем - падаем
- ждем загрузку и кликаем - возможно, падаем
- кликаем через 5 мин - долго или возможно, падаем
17
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Некорректные ожидания
КЕЙС: кликнуть на кнопку
КОРРЕКТНОЕ ОЖИДАНИЕ:
- ждем видимость кнопки и кликаем
18
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Разница окружений
ПОДДЕРЖКА:
- разных браузеров
- разных расширений
19
ШАГ 2: МИГАЮЩИЕ ТЕСТЫ
● Разница окружений
В ИДЕАЛЕ: не допускать разные локаторы
В РЕАЛЬНОСТИ:
масштабировать разработку по платформам
20
ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ
● Долгий старт приложения
● Долгое выполнение тестов
21
ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ
● Долгий старт приложения
- кэш
- подготовленные артефакты сборки
- рефакторинг способа разворачивания
22
ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ
● Долгое выполнение тестов
- синхронное выполнение
- неэффективные ожидания
- неэффективная декомпозиция
23
ШАГ 4: КЛЮЧЕВЫЕ МЕТРИКИ
ЦЕЛЬ:
- низкий flakiness rate
- быстрый test pipeline time
Проблемы UI автотестов:
24
СЕГОДНЯ
МЫ
УЗНАЛИ
Шаг 1: Проблемы
Шаг 2: Мигающие тесты
Шаг 3: Медленные тесты
Шаг 4: Ключевые метрики
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П
ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ
АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО
ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ
И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН
ПОГНАЛИ!

More Related Content

PDF
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
PDF
10M tests per day
PDF
MockServer-driven development
PPTX
Тестируем legacy c++
PDF
Олексій Стульніков “WinAppDriver – автоматизація Desktop ніколи не була такою...
PDF
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
PPTX
Расширяемая платформа для создания и управления автоматизированными тестами н...
PDF
Cтратегия UI автотестирования [NoBugs WTF PRO уровень]
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
10M tests per day
MockServer-driven development
Тестируем legacy c++
Олексій Стульніков “WinAppDriver – автоматизація Desktop ніколи не була такою...
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
Расширяемая платформа для создания и управления автоматизированными тестами н...
Cтратегия UI автотестирования [NoBugs WTF PRO уровень]

Similar to Проблемы UI автотестов [NoBugs WTF PRO уровень] (20)

PDF
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
PDF
Introduction into Test Driven Development
PPT
Web аналитика на полную!
PPT
Как сделать наши проекты немного более управляемыми с Agile
PDF
Григорий Липин: Автоматизация нагрузочного тестирования
PPTX
GitHub Actions [NoBugs WTF PRO уровень].pptx
PDF
Автоматическое тестирование. Моя система
PPTX
Software Testing
PDF
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
PPTX
Tdd webpack + testem + mocha + chai
PDF
E2E-тестирование мобильных приложений
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PDF
Юрий Василевский «Автоматизация в XCode»
PDF
Юрий Василевский "Автоматизация в XCode"
PDF
Александр Саитов «Основы профилирования и оптимизации приложений в .NET»
PDF
Тестирование осень 2013 лекция 4
PDF
Алексей Андросов - Debugger: Отладка кода
PDF
Марина Широчкина - Тестирование
PPT
Как принести пользу разработке и упростить себе жизнь?
PPTX
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Introduction into Test Driven Development
Web аналитика на полную!
Как сделать наши проекты немного более управляемыми с Agile
Григорий Липин: Автоматизация нагрузочного тестирования
GitHub Actions [NoBugs WTF PRO уровень].pptx
Автоматическое тестирование. Моя система
Software Testing
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
Tdd webpack + testem + mocha + chai
E2E-тестирование мобильных приложений
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский "Автоматизация в XCode"
Александр Саитов «Основы профилирования и оптимизации приложений в .NET»
Тестирование осень 2013 лекция 4
Алексей Андросов - Debugger: Отладка кода
Марина Широчкина - Тестирование
Как принести пользу разработке и упростить себе жизнь?
Автоматизация тестирования iOS и Android приложений
Ad

More from NoBugs (12)

PDF
Принципы программирования [NoBugs WTF PRO уровень].pdf
PPTX
Построение CI пайплайна [NoBugs WTF PRO уровень].pptx
PPTX
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
PDF
Погружение в Selenide [NoBugs WTF PRO уровень]
PDF
Паттерны UI автотестов [NoBugs WTF PRO уровень]
PDF
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
PDF
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
PDF
Стратегии масштабирования [NoBugs WTF PRO уровень]
PDF
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
PDF
Экспресс по Java [NoBugs WTF PRO уровень]
PDF
Тестирование API дизайна [NoBugs WTF PRO уровень]
PDF
Алгоритм построения API автоматизации [NoBugs WTF PRO уровень]
Принципы программирования [NoBugs WTF PRO уровень].pdf
Построение CI пайплайна [NoBugs WTF PRO уровень].pptx
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
Погружение в Selenide [NoBugs WTF PRO уровень]
Паттерны UI автотестов [NoBugs WTF PRO уровень]
Стратегия покрытия эндпоинтов [NoBugs WTF PRO уровень]
Паттерны проектирования в автотестах [NoBugs WTF PRO уровень]
Стратегии масштабирования [NoBugs WTF PRO уровень]
Знакомство с Rest Assured [NoBugs WTF PRO уровень]
Экспресс по Java [NoBugs WTF PRO уровень]
Тестирование API дизайна [NoBugs WTF PRO уровень]
Алгоритм построения API автоматизации [NoBugs WTF PRO уровень]
Ad

Проблемы UI автотестов [NoBugs WTF PRO уровень]

  • 1. Проблемы UI автотестов Web Test Framework с нуля [PRO] NoBugs
  • 2. Как избежать проблем при написании UI автотестов? 2
  • 4. 4 ШАГ 1: ПРОБЛЕМЫ ● Мигающие тесты ● Медленные тесты
  • 5. 5 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ Популярные причины: ● Поиск элемента ● Воспроизведение состояния ● Некорректное ожидание ● Разница окружений
  • 6. 6 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Поиск элемента HTML
  • 7. 7 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Поиск элемента byCSS(“button”) byCSS(“button[onclick=”showAlert()”]) byXPath(“//button”)
  • 8. 8 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Поиск элемента byAttribute(“data-test”, “test_button”)
  • 9. 9 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Поиск элемента data-test аттрибуты без других элементов не byCss(“a[data-test=”button”]”) не byXPath(“//a[data-test=”button”]”) byAttribute(“data-test”, “button”)
  • 10. 10 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Поиск элемента ПРАВИЛО внутри команды: НЕТ data-test аттрибутa -> НЕТ элемента
  • 11. 11 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Воспроизведение состояния КАК КЛИКАЕТ ЧЕЛОВЕК? КАК КЛИКАЕТ МАШИНА?
  • 12. 12 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Воспроизведение состояния - проверяем состояние - повторяем
  • 13. 13 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Воспроизведение состояния try(3 times) { click() element.shouldBe(visible) }
  • 14. 14 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Некорректные ожидания ТИПЫ ОЖИДАНИЙ: ● явные (я тут жду) ● неявные (ты не знал, а я жду)
  • 15. 15 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Некорректные ожидания - Не ждем совсем - Ждем дольше, чем нужно - Ждем хардкорно (не смотря на состояние)
  • 16. 16 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Некорректные ожидания КЕЙС: кликнуть на кнопку - сразу кликаем - падаем - ждем загрузку и кликаем - возможно, падаем - кликаем через 5 мин - долго или возможно, падаем
  • 17. 17 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Некорректные ожидания КЕЙС: кликнуть на кнопку КОРРЕКТНОЕ ОЖИДАНИЕ: - ждем видимость кнопки и кликаем
  • 18. 18 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Разница окружений ПОДДЕРЖКА: - разных браузеров - разных расширений
  • 19. 19 ШАГ 2: МИГАЮЩИЕ ТЕСТЫ ● Разница окружений В ИДЕАЛЕ: не допускать разные локаторы В РЕАЛЬНОСТИ: масштабировать разработку по платформам
  • 20. 20 ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ ● Долгий старт приложения ● Долгое выполнение тестов
  • 21. 21 ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ ● Долгий старт приложения - кэш - подготовленные артефакты сборки - рефакторинг способа разворачивания
  • 22. 22 ШАГ 3: МЕДЛЕННЫЕ ТЕСТЫ ● Долгое выполнение тестов - синхронное выполнение - неэффективные ожидания - неэффективная декомпозиция
  • 23. 23 ШАГ 4: КЛЮЧЕВЫЕ МЕТРИКИ ЦЕЛЬ: - низкий flakiness rate - быстрый test pipeline time
  • 24. Проблемы UI автотестов: 24 СЕГОДНЯ МЫ УЗНАЛИ Шаг 1: Проблемы Шаг 2: Мигающие тесты Шаг 3: Медленные тесты Шаг 4: Ключевые метрики
  • 25. ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН НАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ П ОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛ АЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПО ГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ И ПОГНАЛИ ПОГНАЛИ ПОГНАЛИ ПОГН ПОГНАЛИ!