SlideShare a Scribd company logo
Повышаем надёжность тестов
через JavaScript
Игорь Хрол
http://www.khroliz.com
О себе
• Игорь Хрол
• QA Automation Team Lead в
Wargaming
• Более семи лет в автоматизации
тестирования
• Десятки проектов
• Инженер, тренер, консультант,
менеджер, докладчик
• Опыт работы с Selenium’ом –
более 5 лет
• Мой блог: http://ru.khroliz.com

Постоянный
участник
SeleniumCamp 
О чём говорим?
• Теоретические рассуждения и общие
размышления
• Практическая применимость идеи
Зависимость между уровнем тестов
и поддержкой
UI-тесты ненадёжны
UI-тесты ненадёжны
Одна из причин - современные
пользовательские интерфейсы:
– Сложные
– Асинхронные
Современные интерфейсы строятся
на уже готовых компонентах
Современные интерфейсы строятся
на уже готовых компонентах
Готовые компоненты можно меньше
тестировать
Кастомные компоненты можно
тестировать отдельно

http://seleniumcamp.com/archive/selenium-camp-2013/materials/unit-testing/

Спасибо, Dmitriy Kovalenko
Большинство современных UI имеет
внутренний API
Преимущества API
• Заточен для взаимодействия с контролами
• Синхронный (или есть методы для
синхронизации)
1. UI на готовых компонентах
2. Готовые компоненты можно не тестировать
или тестировать отдельно
3. Компоненты имеют свой API
4. API компонент более надёжен, чем
WebDriver API

Использование JavaScript API вместо WebDriver
Пример из жизни
Особенности пользовательского интерфейса:
• Много фреймов
• ActiveX
Изначальное решение
driver.findElement(By.id(“fancy-id”)).click();

WebDriver API

Browser
Проблемы
• Интерфейс сильно асинхронный, методы
работали нестабильно
• Много фреймов (более пяти вложенных) –
сложно перейти к нужному контролу
• Невозможность работы с ActiveX
Browser Script API
http://docs.oracle.com/cd/B40099_02/books/OI
Ref/OIRefBrowseScript.html

Browser Script

HTTP

Server Script
Примеры
Получившийся результат
• Быстрый
• Надёжный
• Синхронный
Проблемы
Синхронные запросы и Alert’ы
• Вызов метода не заканчивается, пока не
закрыт Alert
• Нельзя вызвать alert.accept(), так как
предыдущий вызов еще не завершён
window.setTimeout
Отсутствие 100%-й эмуляции
пользователя
Другие применения данной идеи
Процент сайтов с jQuery - 50-60%
Синхронизация
Преобразование
jQuery-объектов в WebElement
и обратно
Поиск элементов
Получение родительского элемента
Упрощение взаимодействия со
сложными элементами
Календарь

Спасибо @barancev
«Самописные» элементы
«Самописные» элементы
Общая схема
Способ быстро обойти
существующие проблемы в
WebDriver’e
Делать обходные пути осознанно
• Делать только как временный workaround
• Нужно разобраться, почему стандартный
метод не подходит
Итого
• Погружение в технические детали реализации
позволяет делать более эффективные тесты
• Изучение JavaScript и UI-библиотеки –
логичный шаг для UI-автоматизации
• Но нужно понимать, чем жертвуем и искать
баланс
Спасибо!
Вопросы?
Игорь Хрол
http://ru.khroliz.com
khroliz@gmail.com / i_khrol@wargaming.net
We are hiring! 
http://wargaming.com/ru/careers/

More Related Content

PPT
Кому следует писать автоматические тесты?
PPTX
Test Automation Wargaming SQA Days 17
PDF
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
PPTX
Web driver история одной миграции
PPTX
Cовременный контроль качества: давай сделаем это по-быстрому...
PPTX
Webium: Page Objects in Python
PDF
Grail - CodeFest'2015
PPTX
Qa Automation - отбрасываем лишнее и тестируем суть
Кому следует писать автоматические тесты?
Test Automation Wargaming SQA Days 17
“Можно ли перевернуть пирамиду?” – автоматизируем тестирование с меньшим числ...
Web driver история одной миграции
Cовременный контроль качества: давай сделаем это по-быстрому...
Webium: Page Objects in Python
Grail - CodeFest'2015
Qa Automation - отбрасываем лишнее и тестируем суть

What's hot (19)

PDF
Тестировщик в Agile - кто он?
PPSX
История HERE Maps for Windows: меняемся не изменяя качеству
PPTX
Автоматизация тестирования: доступна каждому или удел избранных?
ODP
The fast and the continuous
PPTX
Continuous Integration для QA
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
PPTX
Как играть без игрока
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
PPT
Continuous Integration для тестировщиков
PPT
CQRS. Event Sourcing. Особенности тестирования
PPTX
Автоматизация тестирования ролей и привилегий
PPTX
Автоматическое тестирование Web api
PDF
Автоматическое тестирование. Моя система
PPTX
Способы организаций больших Java проектов по Автоматизированному тестированию
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
PDF
Grail: шаги для ваших Python-тестов
PPT
Новый процесс тестирования на "старом" проекте
PPTX
Андрей Сильчук: "Автоматическое тестирование".
PDF
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Тестировщик в Agile - кто он?
История HERE Maps for Windows: меняемся не изменяя качеству
Автоматизация тестирования: доступна каждому или удел избранных?
The fast and the continuous
Continuous Integration для QA
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Как играть без игрока
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Continuous Integration для тестировщиков
CQRS. Event Sourcing. Особенности тестирования
Автоматизация тестирования ролей и привилегий
Автоматическое тестирование Web api
Автоматическое тестирование. Моя система
Способы организаций больших Java проектов по Автоматизированному тестированию
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Grail: шаги для ваших Python-тестов
Новый процесс тестирования на "старом" проекте
Андрей Сильчук: "Автоматическое тестирование".
Наталья Чуфырина, Mail.Ru Group, «Как создать команду по автоматизации тестир...
Ad

Similar to Повышаем надёжность тестов через JavaScript (20)

PPTX
Introduction to Automation Testing
PPTX
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PPTX
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
PPTX
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
PPTX
Automation Overview
PPTX
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
PPT
лившиц владимир - независимое тестирование миф
PPTX
Автоматизированное тестирование UI на C# + Selenium WebDriver
PPT
Внедрение тестирования в Scrum
PPT
Внедрение тестирования в Scrum
PPTX
Лилия Зданевич "Automation testing save time and money"
PPTX
Automation from the trenches
PPTX
Автоматическое тестирование и с чем его едят
PDF
Тестирование весна 2013 лекция 5
PPTX
Automation from the trenches
PDF
Мануйлова Ольга Валерьевна
PPTX
Виды QA: Всё что вы не знали и боялись спростить
PPTX
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Огляд екосистеми Selenium» QADay 2019
PDF
Организация процессов разработки на основе VSTS и TFS
Introduction to Automation Testing
Selenide –  лаконичные тесты на Selenium 2 WebDriver + Java bindings
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Олександр Хотемський “Обзор архитектуры Selenium WebDriver”
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Automation Overview
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
лившиц владимир - независимое тестирование миф
Автоматизированное тестирование UI на C# + Selenium WebDriver
Внедрение тестирования в Scrum
Внедрение тестирования в Scrum
Лилия Зданевич "Automation testing save time and money"
Automation from the trenches
Автоматическое тестирование и с чем его едят
Тестирование весна 2013 лекция 5
Automation from the trenches
Мануйлова Ольга Валерьевна
Виды QA: Всё что вы не знали и боялись спростить
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Огляд екосистеми Selenium» QADay 2019
Организация процессов разработки на основе VSTS и TFS
Ad

More from Igor Khrol (9)

PDF
SeleniumCamp 2016
PDF
Agile.by Gathering – 23 января 2016
PPTX
Increase selenium tests stability via java script
PPTX
Why test automation projects are failing
PPTX
Типичные ошибки начинающих писать тесты на WebDriver
PPTX
Автоматизация Тестирования - Почему умирают проекты?
PPT
Автоматизация тестирования на крупных проектах
PPTX
Meeting #4. Frameworks.
PPTX
автоматизация Flex приложений с помощью selenium rc
SeleniumCamp 2016
Agile.by Gathering – 23 января 2016
Increase selenium tests stability via java script
Why test automation projects are failing
Типичные ошибки начинающих писать тесты на WebDriver
Автоматизация Тестирования - Почему умирают проекты?
Автоматизация тестирования на крупных проектах
Meeting #4. Frameworks.
автоматизация Flex приложений с помощью selenium rc

Повышаем надёжность тестов через JavaScript