Upload
igor-khrol
View
18.186
Download
3
Embed Size (px)
DESCRIPTION
SeleniumCamp'2012
Citation preview
WebDriver: история одной миграции
Игорь Хрол
О себе• Игорь Хрол• Специализируюсь на
автоматизации тестирования с 2006 года
• Инструменты:– Selenium, HP QTP, Watir,
TestComplete, Jmeter• E-mail: [email protected] • www.autotest.by - основатель
О чём говорить будем?
• Зачем мигрировать?• Как запланировать миграцию?• Во сколько обойдётся?• Как сделать её?
Зачем мигрировать?
Быстрая скорость работы на Internet Explorer
Зачем мигрировать?
• Работа с объектами, а не со строками• Поддержка иерархии объектов
Зачем мигрировать?
Поддержка community
Зачем мигрировать?
• Поддержка мобильных устройств– Android Browser– iPhone Browser
• Но для Navite-приложений пока надо искать что-то другое
Что было до миграции?
• 70% кода связано с Selenium Flex API• 30% - работа с HTML• 500k строк кода• 7 дней выполнения тестов
Начало активной работы с HTML – дополнительная причина мигрировать
WebdriverBackedSelenium
• Что за зверь?• Инструмент доступа к API Selenium 1.0
через объект WebDriver’a
WebdriverBackedSelenium
Selenium 2.0
Снова Selenium 2.0Selenium 1.0
WebdriverBackedSelenium
• Почему отказались:– Наличие большого объёма JavaScript-вставок– Половинчатое решение, которое надо было бы
всё равно переписывать в будущем– Проблемы с CSS-локаторами
Инициация проекта
Прототипирование
Миграция ядра/архитектуры
Миграция реиспользуемых
компонент
Выполнение и отладка тестов
Структура работ по миграции
Этапы – получить добро начальства
Этапы – прототип
Этапы – переписывание ядраSelenium Flex API
Вместо user-extensions.js:((JavascriptExecutor)webdriver).executeScript(script)
Подходит для других расширений
executeScript(java.lang.String script, java.lang.Object... args)
Удобно работать с параметрами
Этапы – переписывание ядраBaseUIElement class (Selenium 1.0)
BaseWebUIElement class (Selenium 1.0)
Этапы – переписывание ядра
BaseWebUIElement class (WebDriver)
Этапы – переписывание ядра
BaseWebUIElement class
Frames
Теперь нужно обязательно выбирать
Этапы – переписывание реиспользуемых компонент
Selenium 1.0
WebDriver
Этапы – переписывание реиспользуемых компонент
Selenium 1.0
WebDriver
Этапы – refactoring
Этапы – run & debug
Цель:• Выполнить все тесты, чтобы убедиться, что
миграция закончена
Как влияет на текущие задачи?
• Миграция проводилась в отдельной ветке в системе контроля версий
• На первых нескольких этапах был вовлечён только один человек (Test Automation Architect)
• Работы велись между фазами проекта
Как влияет на текущие задачи?
• Итого: на использование автоматизации тестирования миграция не повлияла
Как планировали?
𝑇𝑜𝑡𝑎𝑙=𝑁𝑛∗𝑇 𝑛+
𝑀𝑚
∗𝑇𝑚+𝑇 𝑘
Всего компонент (java-классов) Всего тестов
Промигрировали компонент
Время на компоненты
Промигрировали тестов
Промигрировали тестов
«Заточка» ядра и всякие
неприятности
Сколько времени ушло?
Всего: около 10-12 человеко-месяцев
Ядро и основные компоненты
Большинство компонент и тесты
Архитектор2 месяца
50% команды (7-10 человек) 1 месяц
Tips&Tricks
Native Clickshttp://code.google.com/p/selenium/issues/detail?id=2700http://code.google.com/p/selenium/issues/detail?id=2950
Ввод текста в поля• Selenium 1.0: просто выставлялся• Webdriver: clear() – не всегда работает
Выводы• Переход на WebDriver не страшен• В миграции помогает хорошо
сформированных до этого фреймворк• В WebDriver еще есть проблемы, но они
быстро исправляются
Вопросы