Тестовые фреймворки на основе  open-source  инструментов. Watir Александр Ихелис ,   EPAM Systems
Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Автоматизация тестирования при помощи ...
Тестовые фреймворки. Содержание <ul><li>Цели и типы фреймворков </li></ul><ul><li>Компоненты фреймворка </li></ul><ul><li>...
Тестовый фреймворк –  как много в этом слове... <ul><li>Тестовый фреймворк  – инфраструктура, обеспечивающая   автоматизац...
Выбор и разработка фреймворка <ul><li>Разработка фреймворка  – это разработка программного комплекса: </li></ul><ul><li>Ан...
Основные компоненты  тестового фреймворка <ul><li>  </li></ul><ul><ul><li>Язык(-и) разработки </li></ul></ul><ul><ul><ul><...
  Основные компоненты   фреймворка: Языки разработки <ul><ul><li>Системные языки программирования  ( C, C++, Java, C# ) </...
<ul><li>Тестовые данные: </li></ul><ul><ul><li>Конфигурационные данные и настройки </li></ul></ul><ul><ul><li>Входные тест...
<ul><li>Драйверы Web протоколов </li></ul><ul><ul><li>Взаимодействия посредством протокола, например  HTTP </li></ul></ul>...
Основные подходы в архитектуре тестов  и механизме тестовых драйверов <ul><ul><li>Modularity-driven   testing:  функционал...
Драйвер фреймворка ( Harness )   и Клиенты (Исполнители) <ul><li>  SEARCH  –  анаграмма, определяющая задачи тестового дра...
Качественные характеристики фреймворков <ul><ul><li>Функциональность  </li></ul></ul><ul><ul><ul><li>Пригодность для приме...
Качественные характеристики фреймворков <ul><ul><li>Сопровождаемость и поддержка </li></ul></ul><ul><ul><ul><li>Анализируе...
Качественные характеристики фреймворков <ul><ul><li>Мобильность  </li></ul></ul><ul><ul><ul><li>Простота установки </li></...
  Дополнительные возможности <ul><ul><li>Тестовые данные </li></ul></ul><ul><ul><li>Возможность хранения данных вне тестов...
  Дополнительные возможности <ul><ul><li>Тестовый Драйвер </li></ul></ul><ul><ul><li>Возможность выбора набора тестов по о...
  Дополнительные возможности <ul><ul><li>Тестовый Драйвер и Отчеты </li></ul></ul><ul><ul><li>Возможность конфигурации тес...
  Дополнительные возможности <ul><ul><li>Тестовый Драйвер и Отчеты </li></ul></ul><ul><li>Минимизация затрат на анализ оши...
  Дополнительные возможности <ul><li>Компоненты и функции фрейморка </li></ul><ul><li>Поддержка фреймворком различных прое...
  Дополнительные возможности <ul><li>Компоненты и функции фрейморка </li></ul><ul><li>Параллельные измерения производитель...
<ul><ul><li>Преимущества и риски open-source средств </li></ul></ul><ul><li>Построение фреймворков в open-source </li></ul...
<ul><ul><li>Надежность и качество </li></ul></ul><ul><ul><ul><li>Одна голова хорошо, а две лучше </li></ul></ul></ul><ul><...
<ul><ul><li>Риски open-source средств: бесплатный сыр бывает только в мышеловке… </li></ul></ul>
<ul><ul><li>Нельзя недооценивать косвенные затраты на выбор средств, изучение, внедрение, интеграцию, поддержку, обновлени...
<ul><ul><li>Хорошая идея, в которой пользователи и разработчики увидят эффективное альтернативное решение их задач </li></...
<ul><ul><li>Рост популярности, качества, надежности и поддержки  open-source  средств в целом </li></ul></ul><ul><ul><li>Б...
<ul><ul><li>Тестовые фреймворки </li></ul></ul><ul><ul><li>Почему open-source? Почему сейчас? </li></ul></ul><ul><ul><li>П...
<ul><ul><li>Выбор  языка , подходящего для реализации задач и требований </li></ul></ul><ul><ul><li>Выбор или создание  др...
<ul><ul><li>Необходимо понимать «анатомию» тестовых средств и фреймворков </li></ul></ul><ul><ul><li>Самостоятельная разра...
<ul><ul><li>Используй стандартизированные интерфейсы и протоколы </li></ul></ul><ul><ul><li>Реализуй только то, что тебе н...
<ul><ul><li>Относись к фреймворку и тестовому коду как к программному продукту </li></ul></ul><ul><ul><ul><li>Хорошая и пр...
<ul><li>Появляется необходимость в новом наборе навыков для инженера по автоматизации ( Software Design Engineer in Test )...
<ul><li>W eb  A pplication  T esting  I n  R uby </li></ul><ul><li>Преимущества  Watir  перед другими  open-source  средст...
<ul><ul><li>Интерпретируемый динамический  open - source  язык программирования высокого уровня   с нацелом на простоту и ...
<ul><ul><li>Простая и удобная библиотека ( ruby gem)  для автоматизации  web  браузера </li></ul></ul>Watir –  автоматизац...
Watir –  Драйвер  Internet Explorer Web- сервер Web- браузер Ruby & Watir : Драйвер интерфейса Интерфейс автоматизации Инт...
Document Object Model Объектная модель элементов  web- страницы
Document Object Model Объектная модель элементов  web- страницы
MSDN API  для доступа и управления  IE DOM  через  OLE/COM  протокол
Watir  1.5.6 в действии
Watir:  реализации и поддерживаемые  конфигурации <ul><ul><li>Watir </li></ul></ul><ul><ul><ul><li>Windows 2000, XP, 2003 ...
Watir:  параллельные проекты <ul><ul><li>Watij </li></ul></ul><ul><ul><ul><li>Реализация для  Java </li></ul></ul></ul><ul...
Watir  1.6.2 анонсирован 6 ноября 2008 <ul><ul><li>Полноценная интеграция  Watir  и  FireWatir </li></ul></ul><ul><ul><li>...
Watir  1.6.2 в действии
Почему  Watir ? Чем он лучше других  open-source  средств автоматизации?  <ul><ul><li>Простой, интуитивный, эффективный и ...
Watir:  вспомогательные средства   и полезные инструменты <ul><ul><li>Тестовый драйвер </li></ul></ul><ul><ul><ul><li>Test...
<ul><li>Общая архитектура и возможности </li></ul><ul><li>Примеры реализации некоторых функций фреймворка </li></ul><ul><l...
<ul><li>Общие требования к автоматизации: </li></ul><ul><li>Сложное  web -приложение ( http/https ,  Ajax ) </li></ul><ul>...
Сервер Архитектура фреймворка   на основе  Watir   БД Код Репозиторий  Клиент  K Код Ядро Клиент 1 … Web- интерфейс Консол...
<ul><li>Серверная часть: </li></ul><ul><li>Версии 1.* :   Apache/PHP + MySQL </li></ul><ul><li>Версии 2.*:  Mongrel/ruby-o...
<ul><li>Собственный драйвер тестов, централизованный и удобный запуск, распределенное выполнение на многочисленных клиента...
<ul><li>Расширение функционала  Watir  и драйвера браузера </li></ul><ul><li>Гибкая синхронизация с приложением (сложные с...
Sponte:  Запуск тестового набора
Sponte:  Редактирование управляющих параметров и входных данных сценария
 
Благодарность <ul><li>Bernard Miles , QA Manager and Architect, Expedia Limited, UK </li></ul><ul><li>Stanislaw Wozniak , ...
Спасибо за Ваше внимание! У Вас есть вопросы ко мне? <ul><ul><li>Если мы дошли до этого слайда – значит я уложился. Ура! <...
Контактная информация <ul><ul><li><epam> </li></ul></ul><ul><ul><li>Ихелис Александр </li></ul></ul><ul><ul><li>EPAM Syste...
Upcoming SlideShare
Loading in …5
×

Building Open Source Test Automation Frameworks. Watir based automation case study.

2,116 views

Published on

Summary: Presentation on open source testing frameworks at SQA Days 2008 conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,116
On SlideShare
0
From Embeds
0
Number of Embeds
147
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Building Open Source Test Automation Frameworks. Watir based automation case study.

  1. 1. Тестовые фреймворки на основе open-source инструментов. Watir Александр Ихелис , EPAM Systems
  2. 2. Содержание <ul><li>Тестовый фреймворк – как много в этом слове... </li></ul><ul><li>Автоматизация тестирования при помощи open-source средств </li></ul><ul><li>Watir – автоматизация тестирования web-приложений на Ruby </li></ul><ul><li>Описание практической реализации фреймворка на базе watir , ruby , rails , mysql </li></ul>
  3. 3. Тестовые фреймворки. Содержание <ul><li>Цели и типы фреймворков </li></ul><ul><li>Компоненты фреймворка </li></ul><ul><li>Требования к средству как качественные характеристики </li></ul><ul><li>Требования к средству как набор возможностей </li></ul>
  4. 4. Тестовый фреймворк – как много в этом слове... <ul><li>Тестовый фреймворк – инфраструктура, обеспечивающая автоматизацию тестирования. </li></ul><ul><li>Основные цели: </li></ul><ul><ul><ul><li>Единая концепция создания и управления авто-тестами </li></ul></ul></ul><ul><ul><ul><li>Упрощенное написание тест кейсов </li></ul></ul></ul><ul><ul><ul><li>Целостная система драйверов, модулей, библиотек, источников данных, результатов </li></ul></ul></ul><ul><ul><ul><li>Максимальное повторное использование </li></ul></ul></ul><ul><ul><ul><li>Минимальные усилия на поддержку тестов </li></ul></ul></ul><ul><ul><ul><li>Типы фреймворков: </li></ul></ul></ul><ul><ul><ul><li>Для конкретного продукта/компании ( domain - specific ) </li></ul></ul></ul><ul><ul><ul><li>Общей направленности (для широкого использования) </li></ul></ul></ul>
  5. 5. Выбор и разработка фреймворка <ul><li>Разработка фреймворка – это разработка программного комплекса: </li></ul><ul><li>Анализ требований к автоматизации и к средству тестирования </li></ul><ul><ul><li>Анализ приложения(-й) – кандидата для автоматизации </li></ul></ul><ul><ul><li>Качественные характеристики фреймворка </li></ul></ul><ul><ul><li>Набор возможностей фреймворка </li></ul></ul><ul><li>Выбор средств реализации </li></ul><ul><li>Дизайн архитектуры, разработка, отладка, документация </li></ul><ul><li>Поддержка и развитие </li></ul>
  6. 6. Основные компоненты тестового фреймворка <ul><li>  </li></ul><ul><ul><li>Язык(-и) разработки </li></ul></ul><ul><ul><ul><li>Связка компонентов фреймворка </li></ul></ul></ul><ul><ul><ul><li>Описание тестов (действия, проверки) </li></ul></ul></ul><ul><ul><ul><li>Реализация необходимых библиотек и утилит </li></ul></ul></ul><ul><ul><li>Тестовые данные </li></ul></ul><ul><ul><li>Драйверы интерфейса (Interface Drivers) </li></ul></ul><ul><ul><ul><li>Взаимодействие и синхронизация с тестируемой системой </li></ul></ul></ul><ul><ul><li>Драйвер фрейморка ( Test Harness ) </li></ul></ul><ul><ul><ul><li>Запуск тестовых наборов </li></ul></ul></ul><ul><ul><ul><li>Результаты прохождения тестов </li></ul></ul></ul><ul><ul><li>Дополнительные возможности, библиотеки и утилиты </li></ul></ul>
  7. 7. Основные компоненты фреймворка: Языки разработки <ul><ul><li>Системные языки программирования ( C, C++, Java, C# ) </li></ul></ul><ul><ul><ul><li>Мощные и нацеленные на производительность </li></ul></ul></ul><ul><li>Скриптовые языки ( Perl, Tcl, Python, VBScript, JavaScript, Ruby ) </li></ul><ul><ul><ul><li>Простота использования и продуктивность </li></ul></ul></ul><ul><li>Языки представления данных ( HTML, XML, CSV, Excel, YAML ) </li></ul><ul><ul><ul><li>Наглядность и структурированность данных, отсутствие представления логики </li></ul></ul></ul><ul><li>Vendorscript – Собственный язык от производителя инструмента </li></ul><ul><ul><ul><li>Обычно достаточно ограничен по сравнению с языками широкого использования, уникальный язык инструмента -требует изучения </li></ul></ul></ul>
  8. 8. <ul><li>Тестовые данные: </li></ul><ul><ul><li>Конфигурационные данные и настройки </li></ul></ul><ul><ul><li>Входные тестовые данные </li></ul></ul><ul><ul><li>Параметры тестов и управляющие данные </li></ul></ul><ul><ul><li>Данные проверок и ожидаемые результаты </li></ul></ul><ul><ul><li>Определения (идентификаторы) объектов интерфейса тестируемой системы </li></ul></ul><ul><ul><li>Хранение и управление тестовыми данными: </li></ul></ul><ul><ul><li>В теле скриптов </li></ul></ul><ul><ul><li>В инфраструктуре тестового драйвера или библиотеках </li></ul></ul><ul><ul><li>Во внешних источниках данных (файлы, базы данных) </li></ul></ul><ul><ul><li>В отдельных модулях фреймворка (например, репозиторий объектов, verification points ) </li></ul></ul> Основные компоненты фреймворка: Тестовые данные
  9. 9. <ul><li>Драйверы Web протоколов </li></ul><ul><ul><li>Взаимодействия посредством протокола, например HTTP </li></ul></ul><ul><li>Драйверы Web браузера </li></ul><ul><ul><li>Операции с web браузером ( IE, FF, Opera, Safari, и т.д.) </li></ul></ul><ul><li>Драйверы Java GUI </li></ul><ul><ul><li>Операции с Java GUI приложениями </li></ul></ul><ul><li>Драйверы Windows GUI </li></ul><ul><ul><li>Операции с интерфейсами Windows приложений, например: Win32, MFC </li></ul></ul><ul><li>Драйверы интерфейсов типа командной строки </li></ul><ul><li>Другое (другие протоколы и интерфейсы) </li></ul> Основные компоненты фреймворка: Драйверы интерфейса
  10. 10. Основные подходы в архитектуре тестов и механизме тестовых драйверов <ul><ul><li>Modularity-driven testing: функциональная декомпозиция тестового кода и модульное управление тестированием </li></ul></ul><ul><ul><ul><li>Поддержка, повторное использование кода, читабельность тестов </li></ul></ul></ul><ul><ul><li>Data-Driven testing : параметризация и тестирование, управляемое данными </li></ul></ul><ul><ul><ul><li>Тестовые данные и логика отделены от кода </li></ul></ul></ul><ul><ul><li>Keyword-Driven test design : управление тестированием при помощи ключевых слов </li></ul></ul><ul><ul><ul><li>Использование коротких пользовательских инструкций для описания тест кейсов </li></ul></ul></ul><ul><ul><li>Model-based testing : тестирование на основе модели </li></ul></ul><ul><ul><ul><li>Абстрактные тест кейсы на основе модели, представляющей ключевые аспекты тестируемой системы </li></ul></ul></ul><ul><ul><li>Hybrid testing : смешанный подход </li></ul></ul>
  11. 11. Драйвер фреймворка ( Harness ) и Клиенты (Исполнители) <ul><li>  SEARCH – анаграмма, определяющая задачи тестового драйвера: </li></ul><ul><ul><li>Setup </li></ul></ul><ul><ul><li>Execution </li></ul></ul><ul><ul><li>Analysis (pass/fail) </li></ul></ul><ul><ul><li>Reporting </li></ul></ul><ul><ul><li>Cleanup </li></ul></ul><ul><ul><li>Help (документация, логи, скриншоты, тп) </li></ul></ul><ul><li>Основные задачи: </li></ul><ul><ul><li>Группировка и запуск тестов и тестовых наборов </li></ul></ul><ul><ul><li>Отчет о результатах прохождения каждого теста ( pass/fail) </li></ul></ul>
  12. 12. Качественные характеристики фреймворков <ul><ul><li>Функциональность </li></ul></ul><ul><ul><ul><li>Пригодность для применения </li></ul></ul></ul><ul><ul><ul><li>Корректность </li></ul></ul></ul><ul><ul><ul><li>Полнота реализации функций и покрытие задач </li></ul></ul></ul><ul><ul><ul><li>Степень возможной покрываемости тест кейсов </li></ul></ul></ul><ul><ul><li>Надежность </li></ul></ul><ul><ul><ul><li>Адекватность и синхронизация с интерфейсом объекта тестирования </li></ul></ul></ul><ul><ul><ul><li>Обработка исключений и восстановление окружения </li></ul></ul></ul><ul><ul><li>Эффективность </li></ul></ul><ul><ul><ul><li>Время- и ресурсоемкость </li></ul></ul></ul><ul><ul><ul><li>Эффективность по сравнению с ручным тестированием </li></ul></ul></ul>
  13. 13. Качественные характеристики фреймворков <ul><ul><li>Сопровождаемость и поддержка </li></ul></ul><ul><ul><ul><li>Анализируемость </li></ul></ul></ul><ul><ul><ul><li>Трудоемкость модификации и расширения фреймворка </li></ul></ul></ul><ul><ul><ul><li>Трудоемкость поддержки тестов при изменении тестируемого объекта </li></ul></ul></ul><ul><ul><ul><li>Тестируемость изменений </li></ul></ul></ul><ul><ul><ul><li>Доступность документации и помощи в поддержке </li></ul></ul></ul><ul><ul><li>Практичность </li></ul></ul><ul><ul><ul><li>Изучаемость </li></ul></ul></ul><ul><ul><ul><li>Простота и удобство использования </li></ul></ul></ul><ul><ul><ul><li>Информативность и понятность </li></ul></ul></ul><ul><ul><ul><li>Привлекательность </li></ul></ul></ul>
  14. 14. Качественные характеристики фреймворков <ul><ul><li>Мобильность </li></ul></ul><ul><ul><ul><li>Простота установки </li></ul></ul></ul><ul><ul><ul><li>Адаптируемость и конфигурируемость </li></ul></ul></ul><ul><ul><ul><li>Замещаемость </li></ul></ul></ul><ul><ul><ul><li>Кросс-платформенность </li></ul></ul></ul><ul><ul><li>Добротность архитектуры и организации потоков управления и данных </li></ul></ul><ul><ul><li>Безопасность и защищенность </li></ul></ul>
  15. 15. Дополнительные возможности <ul><ul><li>Тестовые данные </li></ul></ul><ul><ul><li>Возможность хранения данных вне тестового кода </li></ul></ul><ul><ul><li>Возможность генерации тестовых данных </li></ul></ul><ul><ul><li>Поддержка данных в кодировке Unicode (UTF-8, UTF-16) </li></ul></ul><ul><ul><li>Поддержка регулярных выражений </li></ul></ul><ul><ul><li>Драйвер Интерфейса </li></ul></ul><ul><ul><li>Гибкий и мощный драйвер интерфейса </li></ul></ul><ul><ul><ul><li>поддержка различных элементов интерфейса, поиск объектов различными способами и по множественным критериям, средневзвешенный поиск идентичных элементов </li></ul></ul></ul><ul><ul><li>Карта / репозиторий объектов </li></ul></ul><ul><ul><li>Утилита для быстрой идентификации объектов ( object spy ) </li></ul></ul><ul><ul><li>Возможность записи действий над тестируемой системой (Test Recorder, Record & Playback) </li></ul></ul>
  16. 16. Дополнительные возможности <ul><ul><li>Тестовый Драйвер </li></ul></ul><ul><ul><li>Возможность выбора набора тестов по определенным критериям </li></ul></ul><ul><ul><li>Планирование будущих и регулярных запусков (Scheduling) </li></ul></ul><ul><ul><li>Проверка и корректировка начальных условий для каждого теста и для тестового набора </li></ul></ul><ul><ul><li>Система обработки исключительных ситуаций и восстановления тестового окружения ( Error Handling and Recovery System) </li></ul></ul><ul><ul><li>Поддержка параметризации тестов и управления данными ( Data-Driven ) </li></ul></ul><ul><li>Тестовый Драйвер и Клиенты </li></ul><ul><ul><li>Возможность удаленного запуска и управления </li></ul></ul><ul><ul><li>Параллельное выполнение тестов на нескольких машинах </li></ul></ul><ul><ul><li>Нетрудоемкое увеличение мощности путем добавления или улучшения независимых клиентов </li></ul></ul>
  17. 17. Дополнительные возможности <ul><ul><li>Тестовый Драйвер и Отчеты </li></ul></ul><ul><ul><li>Возможность конфигурации тестовых отчетов </li></ul></ul><ul><ul><li>Суммарная информация о прохождении тестов (процент успешных тестов, процент ошибок и предупреждений) </li></ul></ul><ul><li>Возможность фильтрации отчета и логов для тестового набора (например: pass/fail/warning ) </li></ul><ul><li>Доступ к истории предыдущих запусков, ведение статистики для последующего анализа </li></ul><ul><li>Возможность перезапуска выбранных или сгруппированных сценариев </li></ul><ul><li>Возможность экспорта отчетов и статистики </li></ul><ul><li>Уведомления о результатах прохождения тестов ( email, SMS, IM ) </li></ul>
  18. 18. Дополнительные возможности <ul><ul><li>Тестовый Драйвер и Отчеты </li></ul></ul><ul><li>Минимизация затрат на анализ ошибок в отчетах </li></ul><ul><ul><ul><li>Детальные логи, пользовательские шаги для повторения ошибки </li></ul></ul></ul><ul><ul><ul><li>Сохранение состояния приложения (скриншоты, HTML исходник web- страницы, тп) </li></ul></ul></ul><ul><ul><ul><li>Сохранение данных конфигурации окружения и теста </li></ul></ul></ul><ul><ul><ul><li>Возможность группировки ошибок и ведение истории известных проблем </li></ul></ul></ul>
  19. 19. Дополнительные возможности <ul><li>Компоненты и функции фрейморка </li></ul><ul><li>Поддержка фреймворком различных проектов (объектов тестирования) </li></ul><ul><li>Поддержка фреймворком различных версий приложения (version control) </li></ul><ul><li>Внешняя конфигурируемость тестов, данных, ведения отчетов и тп – для различных версий или конфигураций тестируемой системы, для различных проектов </li></ul><ul><li>Возможность генерации новых тестов </li></ul><ul><li>Хорошая документация, читабельный код, наличие комментариев, наличие общих стандартов кодирования </li></ul>
  20. 20. Дополнительные возможности <ul><li>Компоненты и функции фрейморка </li></ul><ul><li>Параллельные измерения производительности фреймворка и ведение статистики </li></ul><ul><ul><ul><li>Выполнение тестов </li></ul></ul></ul><ul><ul><ul><li>Отклик тестируемой системы </li></ul></ul></ul><ul><ul><ul><li>Внутренние операции фреймворка </li></ul></ul></ul><ul><li>Интеграция с другими проектными инструментами </li></ul><ul><ul><ul><li>Инструменты управления тестированием (наглядность покрятия тест кейсов и требований, процентное соотношение успешных тестов, оценка эффективности фреймворка) </li></ul></ul></ul><ul><ul><ul><li>Bug tracking система (возможность создания дефектов прямо из отчетов с автоматическим заполнением полей, скриншотов, шагов для повторения, конфигурации окружения) </li></ul></ul></ul>
  21. 21. <ul><ul><li>Преимущества и риски open-source средств </li></ul></ul><ul><li>Построение фреймворков в open-source </li></ul><ul><li>Особенности и полезные советы при создании фреймворков в open-source </li></ul>Автоматизация тестирования при помощи open-source средств
  22. 22. <ul><ul><li>Надежность и качество </li></ul></ul><ul><ul><ul><li>Одна голова хорошо, а две лучше </li></ul></ul></ul><ul><ul><ul><li>Тесный контакт с пользователями, быстрая реакция на основные нужды и проблемы </li></ul></ul></ul><ul><ul><li>Сообщество разработчиков и пользователей </li></ul></ul><ul><ul><ul><li>Помощь, поддержка инструментов </li></ul></ul></ul><ul><ul><ul><li>Общие проблемы и варианты их решения </li></ul></ul></ul><ul><ul><li>Открытый код позволяет самостоятельно вносить решения необходимых проблем, изменения или исправления </li></ul></ul><ul><ul><li>Обилие различных решений для выбора средств и их интеграции </li></ul></ul><ul><ul><li>Открытые стандарты и интерфейсы, гибкость, широкие возможности для расширения и интеграции </li></ul></ul><ul><ul><li>Преимущества open-source средств </li></ul></ul>
  23. 23. <ul><ul><li>Риски open-source средств: бесплатный сыр бывает только в мышеловке… </li></ul></ul>
  24. 24. <ul><ul><li>Нельзя недооценивать косвенные затраты на выбор средств, изучение, внедрение, интеграцию, поддержку, обновления, решение конфликтов и тп </li></ul></ul><ul><ul><li>Необходимо тщательно оценивать готовность (качество и надежность) средства быть использованным в производстве </li></ul></ul><ul><ul><li>Процесс обновления версий средства может быть трудоемким и сопровождаться конфликтами </li></ul></ul><ul><ul><li>Совместимость различных open-source средств не всегда гарантирована </li></ul></ul><ul><ul><li>Коллективная разработка может привести к нарушению целостности кода, появлению конфликтов </li></ul></ul><ul><ul><li>Нехватка документации </li></ul></ul><ul><ul><li>Риски open-source средств </li></ul></ul>
  25. 25. <ul><ul><li>Хорошая идея, в которой пользователи и разработчики увидят эффективное альтернативное решение их задач </li></ul></ul><ul><ul><li>Начальное воплощение идеи, архитектура решения должны быть разработаны до опубликования проекта. Начальная архитектура должна быть многообещающей </li></ul></ul><ul><ul><li>Грамотный, стратегически мыслящий лидер проекта, обладающий отличными навыками коммуникации и умеющий определять хорошие идеи и дизайн </li></ul></ul><ul><ul><li>Примеры успешных open-source проектов: </li></ul></ul><ul><ul><li>Linux, Apache, MySQL , Selenium, Watir… ;) </li></ul></ul><ul><ul><li>Успешные open-source проекты </li></ul></ul>
  26. 26. <ul><ul><li>Рост популярности, качества, надежности и поддержки open-source средств в целом </li></ul></ul><ul><ul><li>Большое количество доступных open-source средств для тестирования </li></ul></ul><ul><ul><li>Сами средства – бесплатны </li></ul></ul><ul><ul><li>Свобода в реализации фреймворков, отсутствие ограниченности технологий и интеграционных возможностей как в коммерческих инструментах </li></ul></ul><ul><ul><li>Нет привязки к языку разработки скриптов от производителя </li></ul></ul><ul><ul><li>Гибкие методологии разработки (Agile) и open-source средства тестирования неразрывно связаны </li></ul></ul><ul><ul><ul><li>Интеграция со средой разработки </li></ul></ul></ul><ul><ul><ul><li>Общий язык программирования </li></ul></ul></ul><ul><ul><ul><li>И те и другие - гибкие ;) </li></ul></ul></ul><ul><ul><li>Тестовые фреймворки </li></ul></ul><ul><ul><li>Почему open-source? Почему сейчас? </li></ul></ul>
  27. 27. <ul><ul><li>Тестовые фреймворки </li></ul></ul><ul><ul><li>Почему open-source? Почему сейчас? </li></ul></ul><ul><ul><li>Продуктивность автоматизации </li></ul></ul>
  28. 28. <ul><ul><li>Выбор языка , подходящего для реализации задач и требований </li></ul></ul><ul><ul><li>Выбор или создание драйвера интерфейса объекта тестирования, расширение драйвера интерфейса </li></ul></ul><ul><ul><li>Выбор и/или разработка драйвера тестов , его механизма и дополнительных возможностей </li></ul></ul><ul><ul><li>Определение тестовых и конфигурационных данных , структур данных, хранилищ данных; выбор и/или реализация соответствующих драйверов и механизмов </li></ul></ul><ul><ul><li>Реализация требований к фреймворку, интеграция компонентов фреймворка, интеграция с другими средствами </li></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul>
  29. 29. <ul><ul><li>Необходимо понимать «анатомию» тестовых средств и фреймворков </li></ul></ul><ul><ul><li>Самостоятельная разработка многих компонентов и интерфейсов фреймворка </li></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Особенности </li></ul></ul><ul><ul><li>Open-source средства дают свободу и гибкость, позволяют создавать легко расширяемые фреймворки </li></ul></ul>
  30. 30. <ul><ul><li>Используй стандартизированные интерфейсы и протоколы </li></ul></ul><ul><ul><li>Реализуй только то, что тебе необходимо. Поддерживай только необходимые тебе интерфейсы приложения </li></ul></ul><ul><ul><ul><li>Главная цель – тестирование! </li></ul></ul></ul><ul><ul><li>Важно использовать последние версии open-source средств </li></ul></ul><ul><ul><ul><li>Популярные средства быстро развиваются </li></ul></ul></ul><ul><ul><ul><li>Часто поддерживаются только последние версии </li></ul></ul></ul><ul><ul><li>Работай с разработчиками над тестируемостью приложения и альтернативными интерфейсами (если необходимо) </li></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Рекомендации </li></ul></ul>
  31. 31. <ul><ul><li>Относись к фреймворку и тестовому коду как к программному продукту </li></ul></ul><ul><ul><ul><li>Хорошая и простая архитектура </li></ul></ul></ul><ul><ul><ul><li>Сначала простой код  тестирование  модульность </li></ul></ul></ul><ul><ul><ul><li>Регулярные ревью кода, рефакторинг, DRY </li></ul></ul></ul><ul><ul><ul><li>Стандарты кодирования </li></ul></ul></ul><ul><ul><ul><li>Комментарии </li></ul></ul></ul><ul><ul><ul><li>Контроль версий </li></ul></ul></ul><ul><ul><ul><li>Возможно, поддержка разных версий ( branching ) для разных версий ( releases) тестируемой системы </li></ul></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Рекомендации </li></ul></ul>
  32. 32. <ul><li>Появляется необходимость в новом наборе навыков для инженера по автоматизации ( Software Design Engineer in Test ) </li></ul><ul><ul><ul><li>Навыки разработки и кодирования </li></ul></ul></ul><ul><ul><ul><li>Навыки архитектора </li></ul></ul></ul><ul><ul><ul><li>Навыки тестирования </li></ul></ul></ul><ul><ul><ul><li>Рекомендуемое разделение обязанностей: </li></ul></ul></ul><ul><ul><ul><li>Разработчик ядра фреймворка и библиотек </li></ul></ul></ul><ul><ul><ul><li>Разработчик автоматических тестов </li></ul></ul></ul><ul><ul><li>Построение фреймворков в open-source </li></ul></ul><ul><ul><li>Прогнозы </li></ul></ul>
  33. 33. <ul><li>W eb A pplication T esting I n R uby </li></ul><ul><li>Преимущества Watir перед другими open-source средствами </li></ul><ul><li>Обзор основных общедоступных фреймворков , реализованных на базе W atir </li></ul>Watir – автоматизация тестирования web -приложений на Ruby
  34. 34. <ul><ul><li>Интерпретируемый динамический open - source язык программирования высокого уровня с нацелом на простоту и продуктивность </li></ul></ul><ul><ul><li>Элегантный и естественный синтаксис для быстрого и удобного программирования: «как думаю – так и пишу» </li></ul></ul><ul><ul><li>Язык программирования с тщательно сбалансированным набором возможностей </li></ul></ul><ul><ul><ul><li>Полностью объектно-ориентированный </li></ul></ul></ul><ul><ul><ul><li>Также поддерживает процедурный, функциональный стиль, метапрограммирование, reflection </li></ul></ul></ul><ul><ul><ul><li>Обладает высокой мобильностью (многоплатформенный) </li></ul></ul></ul><ul><ul><ul><li>Автоматическое управление памятью </li></ul></ul></ul><ul><ul><ul><li>Строгая динамическая типизация данных </li></ul></ul></ul><ul><ul><ul><li>Платформенно-независимая многопоточность </li></ul></ul></ul><ul><ul><ul><li>Динамическая загрузка расширений </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul>Ruby – язык, на котором программировал бы сам Будда…
  35. 35. <ul><ul><li>Простая и удобная библиотека ( ruby gem) для автоматизации web браузера </li></ul></ul>Watir – автоматизация тестирования web -приложений на Ruby
  36. 36. Watir – Драйвер Internet Explorer Web- сервер Web- браузер Ruby & Watir : Драйвер интерфейса Интерфейс автоматизации Интерфейс для IE посредством OLE/COM протокола Watir управляет браузером (IE) так, как это делает пользователь – работает с настоящими объектами DOM web -страницы
  37. 37. Document Object Model Объектная модель элементов web- страницы
  38. 38. Document Object Model Объектная модель элементов web- страницы
  39. 39. MSDN API для доступа и управления IE DOM через OLE/COM протокол
  40. 40. Watir 1.5.6 в действии
  41. 41. Watir: реализации и поддерживаемые конфигурации <ul><ul><li>Watir </li></ul></ul><ul><ul><ul><li>Windows 2000, XP, 2003 Server , Vista </li></ul></ul></ul><ul><ul><ul><li>IE 5.5, 6 , 7 </li></ul></ul></ul><ul><ul><li>FireWatir </li></ul></ul><ul><ul><ul><li>Windows, Mac , Linux </li></ul></ul></ul><ul><ul><ul><li>Firefox 2, 3 </li></ul></ul></ul><ul><ul><li>SafariWatir </li></ul></ul><ul><ul><ul><li>OS X </li></ul></ul></ul><ul><ul><ul><li>Safari </li></ul></ul></ul><ul><ul><li>Celerity </li></ul></ul><ul><ul><ul><li>Тестирование без браузера ( HTTP ) </li></ul></ul></ul><ul><ul><li>Watir + Selenium RC </li></ul></ul><ul><ul><li>Началось портирование для Opera и WebKit </li></ul></ul>
  42. 42. Watir: параллельные проекты <ul><ul><li>Watij </li></ul></ul><ul><ul><ul><li>Реализация для Java </li></ul></ul></ul><ul><ul><li>WatiN </li></ul></ul><ul><ul><ul><li>Реализация для .Net </li></ul></ul></ul><ul><ul><li>WatirCraft </li></ul></ul><ul><ul><ul><li>Цель: кросс-браузерное тестирование и общий фреймворк на основе Watir </li></ul></ul></ul>
  43. 43. Watir 1.6.2 анонсирован 6 ноября 2008 <ul><ul><li>Полноценная интеграция Watir и FireWatir </li></ul></ul><ul><ul><li>Улучшение кросс-браузерной поддержки и совместимости </li></ul></ul><ul><ul><ul><li>FireWatir теперь поддерживает почти все возможности Watir </li></ul></ul></ul><ul><ul><li>Поддержка поиска любых элементов по множественным аттрибутам в обеих реализациях ( Watir & FireWatir ) </li></ul></ul><ul><ul><li>Улучшена поддержка модальных окон </li></ul></ul><ul><ul><li>Увеличена скорость выполнения тестов в IE </li></ul></ul><ul><ul><li>Многочисленные исправления </li></ul></ul><ul><ul><ul><li>http://wiki.openqa.org/ </li></ul></ul></ul><ul><ul><li>Продолжение следует… ;) </li></ul></ul>
  44. 44. Watir 1.6.2 в действии
  45. 45. Почему Watir ? Чем он лучше других open-source средств автоматизации? <ul><ul><li>Простой, интуитивный, эффективный и легко расширяемый программный интерфейс (API) для автоматизации web- браузера </li></ul></ul><ul><ul><li>Возможность идентифицировать объекты на странице различными способами и выполнять JavaScript команды в браузере </li></ul></ul><ul><ul><li>Естественная и удобная поддержка SSL страниц, переключения между доменами (HTTP/HTTPS – Same Origin Policy) </li></ul></ul><ul><ul><li>Работа (пока ограниченная) с security alerts, modal dialogs и popups </li></ul></ul><ul><ul><li>Инструмент очень активно развивается: поддержка различных браузеров и сред – главная задача разработчиков Watir на текущий момент </li></ul></ul><ul><ul><li>Очень гибкий, легко расширяемый, ruby и watir – идеальные средства для построения простых и эффективных фреймворков </li></ul></ul><ul><ul><li>С Watir – все быстро и в удовольствие  : </li></ul></ul><ul><ul><ul><li>Изучение, установка, разработка и выполнение тестов, расширение и реализация необходимых возможностей </li></ul></ul></ul>
  46. 46. Watir: вспомогательные средства и полезные инструменты <ul><ul><li>Тестовый драйвер </li></ul></ul><ul><ul><ul><li>Test::Unit , RSpec </li></ul></ul></ul><ul><ul><li>DOM -инспектор </li></ul></ul><ul><ul><ul><li>Firebug, IE Dev Toolbar </li></ul></ul></ul><ul><ul><li>Среда разработки </li></ul></ul><ul><ul><ul><li>Eclipse + R uby D evelopment T ools плагин </li></ul></ul></ul><ul><ul><li>Запись действий пользователя </li></ul></ul><ul><ul><ul><li>WatirMaker, WatirRecoder++ , CubicTest </li></ul></ul></ul><ul><ul><li>Ведение логов </li></ul></ul><ul><ul><ul><li>Log4r </li></ul></ul></ul><ul><ul><li>HTTP -инспектор </li></ul></ul><ul><ul><ul><li>HTTP Fiddler </li></ul></ul></ul><ul><ul><li>Пример удачного фрейворка на базе Watir </li></ul></ul><ul><ul><ul><li>WET ( http://wet.qantom.org/ ) </li></ul></ul></ul>
  47. 47. <ul><li>Общая архитектура и возможности </li></ul><ul><li>Примеры реализации некоторых функций фреймворка </li></ul><ul><li>Примеры интересных идей и решений проблем </li></ul>Практическая реализация фреймворка на базе watir/ruby/rails/mysql
  48. 48. <ul><li>Общие требования к автоматизации: </li></ul><ul><li>Сложное web -приложение ( http/https , Ajax ) </li></ul><ul><li>Более 40 локализаций, включая иероглифические, постоянное добавление новых локалей </li></ul><ul><li>Каждая локаль имеет свои конфигурационные настройки, форматы дат, цен, и тд </li></ul><ul><li>Частые выпуски новых версий ( releases) , необходимость тестирования различных версий и различных окружений одновременно </li></ul><ul><li>Необходимость в автоматизации различных функционалов, регрессионное тестирование на всех локалях </li></ul>Expedia EMEA, Hotels.com EMEA проекты. Разработка фреймворка и автоматизация
  49. 49. Сервер Архитектура фреймворка на основе Watir БД Код Репозиторий Клиент K Код Ядро Клиент 1 … Web- интерфейс Консоль Watir Browser
  50. 50. <ul><li>Серверная часть: </li></ul><ul><li>Версии 1.* : Apache/PHP + MySQL </li></ul><ul><li>Версии 2.*: Mongrel/ruby-on-rails + MySQL </li></ul><ul><li>Конфигурация в Production окружении (требования безопасности): MS IIS/ruby-on-rails + MS SQL Server </li></ul><ul><li>Клиентская часть (масштабируемость путем добавления клиентов) : </li></ul><ul><li>Ruby, Watir, Sponte gem (ядро фреймворка), рабочее окружение </li></ul><ul><li>C истемы управления версиями: </li></ul><ul><li>CVS, MS Perforce </li></ul>Архитектура фреймворка на основе Watir
  51. 51. <ul><li>Собственный драйвер тестов, централизованный и удобный запуск, распределенное выполнение на многочисленных клиентах с различной конфигурацией, свободная масштабируемость </li></ul><ul><li>Гибкая расширяемость для новых тестовых окружений (серверов), локалей </li></ul><ul><li>Поддержка нескольких проектов и версий </li></ul><ul><li>Возможность создания data-driven сценариев из нескольких тестовых компонентов </li></ul><ul><li>Объектно-ориентированная структура и подход в тестировании, включая модель UI приложения, что позволяет обходиться без репозитория объектов </li></ul><ul><li>Разработка библиотек и тестов на основе поведения тестируемой системы, тест кейсы на DSL ( domain specific language) </li></ul><ul><li>Удобный интерфейс, мощный механизм отчетов </li></ul>Основные возможности фреймворка
  52. 52. <ul><li>Расширение функционала Watir и драйвера браузера </li></ul><ul><li>Гибкая синхронизация с приложением (сложные страницы, Ajax вызовы, тестирование с включенной и отключенной поддержкой JavaScript в браузере) </li></ul><ul><li>Реализация различных интерфейсов для работы с внешними источниками данных (XLS, XML, Excel XML, MySQL, MS SQL Server) , поддержка Unicode и конфигурационных, локализационных, тестовых данных для разных локалей </li></ul><ul><li>Тестирование через HTTP протокол: рекурсивные тесты на нахождение broken-links </li></ul><ul><li>Работа с настройками браузера и соединения ( cookies, cache, включение и отключение поддержки JavaScript , установка HTTP headers ) </li></ul>Тестирование: технические решения
  53. 53. Sponte: Запуск тестового набора
  54. 54. Sponte: Редактирование управляющих параметров и входных данных сценария
  55. 56. Благодарность <ul><li>Bernard Miles , QA Manager and Architect, Expedia Limited, UK </li></ul><ul><li>Stanislaw Wozniak , Test Automation Engineer, Expedia Limited, UK </li></ul><ul><ul><ul><li>Sponte Lead Developer </li></ul></ul></ul><ul><li>Tamas Zombori , Test Automation Engineer, Epam Systems Inc, Hungary </li></ul><ul><ul><ul><li>Hcom Team Test Automation Engineer </li></ul></ul></ul><ul><li>Bret Pettichord , L ead developer for Watir and CTO of WatirCraft </li></ul><ul><ul><ul><li>Author and co-author of many outstanding and wholesome published works and articles ( www.pettichord.com ) </li></ul></ul></ul>
  56. 57. Спасибо за Ваше внимание! У Вас есть вопросы ко мне? <ul><ul><li>Если мы дошли до этого слайда – значит я уложился. Ура! </li></ul></ul><ul><ul><li>Я очень надеюсь, что у Вас есть или появятся в дальнейшем вопросы и идеи для обсуждения. </li></ul></ul>
  57. 58. Контактная информация <ul><ul><li><epam> </li></ul></ul><ul><ul><li>Ихелис Александр </li></ul></ul><ul><ul><li>EPAM Systems </li></ul></ul><ul><ul><li>ул. В. Хоружей, 29 </li></ul></ul><ul><ul><li>220123 Минск, Беларусь </li></ul></ul><ul><ul><li>тел: +375-17-2101662 </li></ul></ul><ul><ul><li>факс: +375-17-2101168 </li></ul></ul><ul><ul><li>почта: [email_address] </li></ul></ul><ul><ul><li>блог: http://muld4.blogspot.com </li></ul></ul><ul><ul><li></epam> </li></ul></ul><ul><li>| </li></ul>

×