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

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

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