SlideShare uma empresa Scribd logo
1 de 25
1© Copyright 2013 EMC Corporation. All rights reserved.
Интеллектуальная система
автоматизации тестирования
на базе Groovy
Аксененко Сергей
Пахомов Андрей
Санкт-Петербургский центр разработок ЕМС
2© Copyright 2013 EMC Corporation. All rights reserved.
О чем мы будем говорить:
Зачем «изобретать велосипед»
Как спроектировать систему тестирования
И как ее реализовать
И о чем не будем:
Универсальные решения на все случаи
жизни
Процессы тестирования
Как мы все здорово протестировали
3© Copyright 2013 EMC Corporation. All rights reserved.
Зачем «изобретать велосипед»
4© Copyright 2013 EMC Corporation. All rights reserved.
Тестируемые продукты
VMAX
5© Copyright 2013 EMC Corporation. All rights reserved.
Тестовый стенд
Application
Data Center A Data Center B
Data Center CTest
engine
6© Copyright 2013 EMC Corporation. All rights reserved.
Элементы идеальной тестовой
системы
Структура
• Иерархия
• Параметризация
Сценарии
• Простота и гибкость
• Универсальность
Структура
• Иерархия
• Параметризация
Сценарии • Простота и гибкость
• Универсальность
Модель
• Уровень абстракции
• Адаптеры
Конфигурация
7© Copyright 2013 EMC Corporation. All rights reserved.
Структура сценариев
Структура
Сценарии
Модель
Конфигурация
• Иерархия
• Параметризация
• Простота и гибкость
• Универсальность
• Уровень абстракции
• Адаптеры
8© Copyright 2013 EMC Corporation. All rights reserved.
Структура блоков скриптового
сценария
Suite
Scenario
Test Case
Test Step
Verification
Action
9© Copyright 2013 EMC Corporation. All rights reserved.
Проектирования языка сценариев
Структура
Сценарии
Модель
Конфигурация
• Иерархия
• Параметризация
• Простота и гибкость
• Универсальность
• Уровень абстракции
• Адаптеры
10© Copyright 2013 EMC Corporation. All rights reserved.
Предметно-ориентированный
язык (DSL)
+ Разделение логики
сценариев и среды для
их запуска
+ Создание и изменение
сценариев силами QA
- Дополнительная
затрата ресурсов на
разработку скриптового
языка
11© Copyright 2013 EMC Corporation. All rights reserved.
Groovy как основа для создания
DSL
Интерпретация вместо компиляции
Полная интеграция с JAVA
Возможность перегрузки стандартных
конструкций языка
Лаконичность
Поддержка со стороны основных IDE
12© Copyright 2013 EMC Corporation. All rights reserved.
Предметно-ориентированный язык
Компоненты предметно-
ориентированного языка
groovy.lang.Script
BaseSript
Script Engine
Filters
Blocks
Verifications
• Бесконтекстные операции
• Операторы
• Структура блоков
13© Copyright 2013 EMC Corporation. All rights reserved.
DSL как средство агрегации
знаний
Знания
DSL
Model
Groovy
Библиотека
знаний
14© Copyright 2013 EMC Corporation. All rights reserved.
Концепция фильтров
Декларативно описывает свойства объекта
Во время прогона теста выделяет
коллекцию объектов модели
Возможность комбинировать вместе
несколько фильтров
15© Copyright 2013 EMC Corporation. All rights reserved.
Операции над множествами
+
*
-
Доменная область
Примеры кода:
• Figure.RED * Figure.Star
• ((Figure.CIRCLE
+ Figure.TRIANGLE)
* Figure.GREEN)
16© Copyright 2013 EMC Corporation. All rights reserved.
expected events in 1.min {
every Host.PRODUCTION => Event.10203
}
Логика проверок
Expected
Темпоральный
оператор
Время Квантор Фильтр
Событие/
состояние
17© Copyright 2013 EMC Corporation. All rights reserved.
Проверки (expected блок)
Темпоральные операторы
– States (n1, n2 => s1 , Δt)
– Events (n1, n2=>e1 || e2 , Δt)
– Stability (n1,n2 => s1, Δt)
n1 s0 s1
n2 s2 s1
n1
n2
Satisfied
Satisfied
n1 e1
n2 e2
Satisfied
18© Copyright 2013 EMC Corporation. All rights reserved.
Модель тестового стенда
Структура
Сценарии
Модель
Конфигурация
• Иерархия
• Параметризация
• Простота и гибкость
• Универсальность
• Уровень абстракции
• Адаптеры
19© Copyright 2013 EMC Corporation. All rights reserved.
Пример
h1 h2 h3 h4 h5
SW1 SW2
Test
enginePRODUCTION REPLICA
Запись
Чтение
Репликация
20© Copyright 2013 EMC Corporation. All rights reserved.
Пример скрипта
scenario("WriteAndCheck") {
Timeout writeTime = userVariable("writeTime", Timeout)
Host.PRODUCTION.startWrites() //h1,h2,h3 start writing
writeTime.sleep()
testStep(“switchDisaster”) {
Switch.byHost(Host.PRODUCTION).disableLink() //SW1
expected events in 15.seconds {
Storage.PRODUCTION => Event.REPLICATION_FAILED
}
}
21© Copyright 2013 EMC Corporation. All rights reserved.
Пример скрипта (продолжение)
testStep(“Disaster recovery”) {
Switch.byHost(Host.PRODUCTION).enableLink()
expected events in 1.min {
Storage.PRODUCTION => Event.REPLICATION_RESTORED
}
expected states in 10.min {
Storage.REPLICA => SyncState.SYNCHRONIZED
}
}
Host.PRODUCTION.stopWrites()
(Host.PRODUCTION + Host.REPLICA).checkConsistency()
}
22© Copyright 2013 EMC Corporation. All rights reserved.
Конфигурация системы
Структура
Сценарии
Модель
Конфигурация
• Иерархия
• Параметризация
• Простота и гибкость
• Универсальность
• Уровень абстракции
• Адаптеры
23© Copyright 2013 EMC Corporation. All rights reserved.
Конфигурация
Конфигурационный файл:
Минимальный набор данных
об оборудовании
Подключение к API CХД и
импорт данных об
окружении
Построение топологии FC
сети
24© Copyright 2013 EMC Corporation. All rights reserved.
Что дальше...
ITE (Integrated Testing
Environment)
Непрерывная интеграция
Виртуальная/облачная
тестовая среда
25© Copyright 2013 EMC Corporation. All rights reserved.
Итоги
Составляющие
эффективной тестовой
системы
Библиотека знаний
Гибкое
конфигурирование

Mais conteúdo relacionado

Destaque

Scala EE: Myth or Reality?
Scala EE: Myth or Reality?Scala EE: Myth or Reality?
Scala EE: Myth or Reality?Marat Akhin
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентацииmetaform
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюмеmetaform
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grailsguest32215a
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Javametaform
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleGeeksLab Odessa
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?Ivan Tsyganov
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Evgeny Borisov
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleIlya Lapitan
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Javametaform
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Javametaform
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода выводаmetaform
 

Destaque (20)

Scala EE: Myth or Reality?
Scala EE: Myth or Reality?Scala EE: Myth or Reality?
Scala EE: Myth or Reality?
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентации
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюме
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1
 
Стратегии выполнения тестов в Gradle
Стратегии выполнения тестов в GradleСтратегии выполнения тестов в Gradle
Стратегии выполнения тестов в Gradle
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Scala #2
Scala #2Scala #2
Scala #2
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
Коллекции в Java
Коллекции в JavaКоллекции в Java
Коллекции в Java
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Java
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 

Semelhante a Интеллектуальная система автоматизации тестирования на базе Groovy

Моделирование и компьютерные тренажеры
Моделирование и компьютерные тренажерыМоделирование и компьютерные тренажеры
Моделирование и компьютерные тренажерыOlia Gusakova
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Yandex
 
Занимательные истории из жизни технической поддержки JVM
Занимательные истории из жизни технической поддержки JVMЗанимательные истории из жизни технической поддержки JVM
Занимательные истории из жизни технической поддержки JVMNikita Lipsky
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest
 
Cradle при строительстве сложных объектов
Cradle при строительстве сложных объектовCradle при строительстве сложных объектов
Cradle при строительстве сложных объектовYulia Madorskaya
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 
Процесс изменения платформы Java
Процесс изменения платформы JavaПроцесс изменения платформы Java
Процесс изменения платформы JavaAlexey Fyodorov
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on AndroidGDG Odessa
 
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Minsk Linux User Group
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеElias Fofanov
 
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»Cisco Russia
 
Организация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средОрганизация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средEkaterina Shelest
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Dmytro Mindra
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )Mobile Developer Day
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )Mobile Developer Day
 
Выход на межднародный рынок проектных работ. трудности и возможности
Выход на межднародный рынок проектных работ. трудности и возможностиВыход на межднародный рынок проектных работ. трудности и возможности
Выход на межднародный рынок проектных работ. трудности и возможностиTanya Gadzevych
 
Oracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRMOracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRMАлексей Распопов
 

Semelhante a Интеллектуальная система автоматизации тестирования на базе Groovy (20)

Моделирование и компьютерные тренажеры
Моделирование и компьютерные тренажерыМоделирование и компьютерные тренажеры
Моделирование и компьютерные тренажеры
 
Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?Стабильны ли ваши приложения в облаках?
Стабильны ли ваши приложения в облаках?
 
Занимательные истории из жизни технической поддержки JVM
Занимательные истории из жизни технической поддержки JVMЗанимательные истории из жизни технической поддержки JVM
Занимательные истории из жизни технической поддержки JVM
 
команда Ceye
команда   Ceyeкоманда   Ceye
команда Ceye
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
 
Cradle при строительстве сложных объектов
Cradle при строительстве сложных объектовCradle при строительстве сложных объектов
Cradle при строительстве сложных объектов
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Процесс изменения платформы Java
Процесс изменения платформы JavaПроцесс изменения платформы Java
Процесс изменения платформы Java
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on Android
 
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
Навигатор с поддержкой GPS/GLONASS на базе процессора AM3517 от Texas Instrum...
 
Qt tool evaluation
Qt tool evaluationQt tool evaluation
Qt tool evaluation
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзе
 
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»
Опыт использования оборудования Cisco в дата-центре «Инфосистемы Джет»
 
Организация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средОрганизация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых сред
 
Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011Code Contracts ABC 16.04.2011
Code Contracts ABC 16.04.2011
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 
Выход на межднародный рынок проектных работ. трудности и возможности
Выход на межднародный рынок проектных работ. трудности и возможностиВыход на межднародный рынок проектных работ. трудности и возможности
Выход на межднародный рынок проектных работ. трудности и возможности
 
Oracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRMOracle Application Management and Testing Suites for Siebel CRM
Oracle Application Management and Testing Suites for Siebel CRM
 

Mais de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

Mais de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Интеллектуальная система автоматизации тестирования на базе Groovy

  • 1. 1© Copyright 2013 EMC Corporation. All rights reserved. Интеллектуальная система автоматизации тестирования на базе Groovy Аксененко Сергей Пахомов Андрей Санкт-Петербургский центр разработок ЕМС
  • 2. 2© Copyright 2013 EMC Corporation. All rights reserved. О чем мы будем говорить: Зачем «изобретать велосипед» Как спроектировать систему тестирования И как ее реализовать И о чем не будем: Универсальные решения на все случаи жизни Процессы тестирования Как мы все здорово протестировали
  • 3. 3© Copyright 2013 EMC Corporation. All rights reserved. Зачем «изобретать велосипед»
  • 4. 4© Copyright 2013 EMC Corporation. All rights reserved. Тестируемые продукты VMAX
  • 5. 5© Copyright 2013 EMC Corporation. All rights reserved. Тестовый стенд Application Data Center A Data Center B Data Center CTest engine
  • 6. 6© Copyright 2013 EMC Corporation. All rights reserved. Элементы идеальной тестовой системы Структура • Иерархия • Параметризация Сценарии • Простота и гибкость • Универсальность Структура • Иерархия • Параметризация Сценарии • Простота и гибкость • Универсальность Модель • Уровень абстракции • Адаптеры Конфигурация
  • 7. 7© Copyright 2013 EMC Corporation. All rights reserved. Структура сценариев Структура Сценарии Модель Конфигурация • Иерархия • Параметризация • Простота и гибкость • Универсальность • Уровень абстракции • Адаптеры
  • 8. 8© Copyright 2013 EMC Corporation. All rights reserved. Структура блоков скриптового сценария Suite Scenario Test Case Test Step Verification Action
  • 9. 9© Copyright 2013 EMC Corporation. All rights reserved. Проектирования языка сценариев Структура Сценарии Модель Конфигурация • Иерархия • Параметризация • Простота и гибкость • Универсальность • Уровень абстракции • Адаптеры
  • 10. 10© Copyright 2013 EMC Corporation. All rights reserved. Предметно-ориентированный язык (DSL) + Разделение логики сценариев и среды для их запуска + Создание и изменение сценариев силами QA - Дополнительная затрата ресурсов на разработку скриптового языка
  • 11. 11© Copyright 2013 EMC Corporation. All rights reserved. Groovy как основа для создания DSL Интерпретация вместо компиляции Полная интеграция с JAVA Возможность перегрузки стандартных конструкций языка Лаконичность Поддержка со стороны основных IDE
  • 12. 12© Copyright 2013 EMC Corporation. All rights reserved. Предметно-ориентированный язык Компоненты предметно- ориентированного языка groovy.lang.Script BaseSript Script Engine Filters Blocks Verifications • Бесконтекстные операции • Операторы • Структура блоков
  • 13. 13© Copyright 2013 EMC Corporation. All rights reserved. DSL как средство агрегации знаний Знания DSL Model Groovy Библиотека знаний
  • 14. 14© Copyright 2013 EMC Corporation. All rights reserved. Концепция фильтров Декларативно описывает свойства объекта Во время прогона теста выделяет коллекцию объектов модели Возможность комбинировать вместе несколько фильтров
  • 15. 15© Copyright 2013 EMC Corporation. All rights reserved. Операции над множествами + * - Доменная область Примеры кода: • Figure.RED * Figure.Star • ((Figure.CIRCLE + Figure.TRIANGLE) * Figure.GREEN)
  • 16. 16© Copyright 2013 EMC Corporation. All rights reserved. expected events in 1.min { every Host.PRODUCTION => Event.10203 } Логика проверок Expected Темпоральный оператор Время Квантор Фильтр Событие/ состояние
  • 17. 17© Copyright 2013 EMC Corporation. All rights reserved. Проверки (expected блок) Темпоральные операторы – States (n1, n2 => s1 , Δt) – Events (n1, n2=>e1 || e2 , Δt) – Stability (n1,n2 => s1, Δt) n1 s0 s1 n2 s2 s1 n1 n2 Satisfied Satisfied n1 e1 n2 e2 Satisfied
  • 18. 18© Copyright 2013 EMC Corporation. All rights reserved. Модель тестового стенда Структура Сценарии Модель Конфигурация • Иерархия • Параметризация • Простота и гибкость • Универсальность • Уровень абстракции • Адаптеры
  • 19. 19© Copyright 2013 EMC Corporation. All rights reserved. Пример h1 h2 h3 h4 h5 SW1 SW2 Test enginePRODUCTION REPLICA Запись Чтение Репликация
  • 20. 20© Copyright 2013 EMC Corporation. All rights reserved. Пример скрипта scenario("WriteAndCheck") { Timeout writeTime = userVariable("writeTime", Timeout) Host.PRODUCTION.startWrites() //h1,h2,h3 start writing writeTime.sleep() testStep(“switchDisaster”) { Switch.byHost(Host.PRODUCTION).disableLink() //SW1 expected events in 15.seconds { Storage.PRODUCTION => Event.REPLICATION_FAILED } }
  • 21. 21© Copyright 2013 EMC Corporation. All rights reserved. Пример скрипта (продолжение) testStep(“Disaster recovery”) { Switch.byHost(Host.PRODUCTION).enableLink() expected events in 1.min { Storage.PRODUCTION => Event.REPLICATION_RESTORED } expected states in 10.min { Storage.REPLICA => SyncState.SYNCHRONIZED } } Host.PRODUCTION.stopWrites() (Host.PRODUCTION + Host.REPLICA).checkConsistency() }
  • 22. 22© Copyright 2013 EMC Corporation. All rights reserved. Конфигурация системы Структура Сценарии Модель Конфигурация • Иерархия • Параметризация • Простота и гибкость • Универсальность • Уровень абстракции • Адаптеры
  • 23. 23© Copyright 2013 EMC Corporation. All rights reserved. Конфигурация Конфигурационный файл: Минимальный набор данных об оборудовании Подключение к API CХД и импорт данных об окружении Построение топологии FC сети
  • 24. 24© Copyright 2013 EMC Corporation. All rights reserved. Что дальше... ITE (Integrated Testing Environment) Непрерывная интеграция Виртуальная/облачная тестовая среда
  • 25. 25© Copyright 2013 EMC Corporation. All rights reserved. Итоги Составляющие эффективной тестовой системы Библиотека знаний Гибкое конфигурирование

Notas do Editor

  1. Авторы описывают подход к автоматизации тестирования сложных систем хранения и обработки данных на базе продуктов компании ЕМС. Предлагаемый подход позволяет формализовать тестовые сценарии которые могут выполняться на различных конфигурациях оборудования и приложений. Предложенный предметно-ориентированный язык позволяет оперировать сущностями системы не привязываясь к конкретной конфигурации. Язык позволяет декларативно описывать сценарий в терминах объектов, операций и ожидаемых состояний. Результат работы авторы представляют в виде набора методик которые могут применяться в автоматизации тестирования различных систем.
  2. .....You won’t find ready to use solution in that presentation, indeed, we found that every problem may need specific system and focused on fundamental principles of building such a systems but not on the systems themselvesWe won’t describe how we implemented test process, it may be good or bad, but it won’t be possible without automation techniques we present here
  3. Large, complicated systemsMany configurationsMany deployment scenario…
  4. Why do we care?Distributed heterogenuous data centersWe can easily define scenario stepsCannot reproduce at different configurationHard to maintain test stepsHard to manage multiple tests
  5. Перед нами стояла задача реализовать возожность создавать сценарии независимые от конфигурации системы и
  6. Здравствуйте коллеги, сегодня я расскажу вам о технических аспектах создания своего предметно-ориентированного языка. Есть мнение что создать свой язык чрезмерно сложно и трудоемко, это не совсем так. Существует два подхода:создание языка с нуля создания парсека, лексического анализатора и компиляторавзять за основу язык общего предназначения и дополнить его конструкциями которые и будут представлять собой новый синтаксис.
  7. Основные структурные элементы тестового процессаSuite – список параметризованных сценариевScenario – groovy скрипт, содержит вызовы test casesTest Case – groovy скрипт, лежит отдельноДобавляем языковые конструкции
  8. Структура – иерирархия, переиспользуемые модули
  9. Предметно-ориентированный язык (DSL) как средство спецификации сценарияПеред созданием своего языка нужно взвестись преимущества и недостатки. Вложение на начальном этапе, выгода в долгосрочной преспективе.Основные т.с. Показания к созданию ПОЯ:Разные команды занимаются платформой для тестирования и непосредственным написанием сценариев.Необходимость изменений скриптовОтсутствует один язык программирования который знают разработчики и тестировщики.Легкость понимания для пользователя автоматизации
  10. Почему Groovy?Было расмотрено много средст, но был выбран Groovy за сл св-ваУ Groovy есть встроенный интерпретатор: приложение для а.т. Компилируются, сами файлы скриптов находятся отдельно, их обработка производится непосредственно в момент выполнения. У пользователя есть возможность дописывать и измениять сценарии без компиляции и без перезапуска сис тестСистема тестирования написана на JAVA, скриптовый язык по сути своей является уровнем над сервисами и возможностями риализованными на Java.Groovy позволяет перегружать почти любые стандартные операторы языка, и добавлять методы к классам к исходному коду которых доступа нет.В Groovy сделан упор на краткость синаксиса, считается что один и тот же код на G в несколько раз меньше чем на Java. На G можно сделать описание теста очень выразительными конструкциями, концентрируя внимания на логике сценария, без деталей исполнения.Groovy де-факто стандарт для создания DSL. Легко найти документацию и примеры.Тестовый сценарий является groovy кодом, имея IDE c поддержкой Groovy мы получаем подсветку синтаксиса и автодополнение. Что облегчает создание сценариев.
  11. Первый шаг при разработке DSL – создание своего наследника groovy класса Script который будет содержать ключевые слова языка – методы по своей сути.В основе модели системы автоматизации лежит объекто-ориентированный подход. Любой синтаксический элемент языка – это объект.Основные элементы блоки, фильтры, проверки – о них будет позже.Этапы выполнения скрипта:Groovy компиляцияВыполнение groovy кода – ничего не происходит – создается дерево блоков и вызовов операций – т.е. мы получаем структурированный план выполнения сценария. Трансляция языковых конструкций в последовотельность действий, которые будут выполняться от тех или иных условий.Проверка внутренней логики скриптаПроход по дереву и вызов методов сервисов, осуществеление проверок
  12. В любом крупном проекте возникает проблема организации информации о том как система должна работать. Формальные спецификации не обновляются и быстро устаревают. В итоге вся масса знаний распределена (но неравномерно) по головам ведущих разработчиков и архитекторов.Используя декларативный синтаксис DSL мы можем описывать поведение системы, создавать спецификацию которая всегда будет в актуальном состоянии и будет иметь единый формат.
  13. Что такое фильтр:Мы не хотим привязываться к конкретным конфигурациям, вместо задания конкретных объектов мы задаем правила по которым они должны выбиратьсяю. Выборка подмножества объектов из полного множества.Например у нас есть тестовый сценарий где мы хотим отключить порты на свиче к которым подключен сервер имеющий определенную роль в процессе репликации.Нам не нужно создавать фильр для каждой задачи, для этого мы можем комбинировать фильры
  14. Используя возможность перегрузки операторов языка были реализованы основные операции над множествами+ объединение множеств* пересечение множеств- отрицание (унарный оператор)разность (бинарный оператор)Примеры:1) красная звезда2) Все фигуры кроме зелыных круга и треугольникаКаждый фильтр имеет специальные методы при выполнение которых создаются команды в дереве вызовов, т.е. планируется выполнение операций над множеством объектов, полученных в результате вычисления фильтра.
  15. Тест состоит из команд и проверок, т.к. проверяем мы сложную распределенную систему обладающую определенной инертностью, состояния не меняются мгновенно, для описания логики и нами создана такая конструкция. Блок Expected описывает что должно произойти с какой сущностью как именно и когда. Квантор описывает отношение проверки ко множеству объектов.Every – проверка для кажной сущности полученой в результате вычисления фильраAny – достаточно если хотя бы для одной сущности проверка пройдетСостояние может быть либо дискретное из определенного множесто возможных, может быть выражением например размер записанных данных должен быть больше какого-то числа.Обратите внимание что этот пример это реальный код.Обратите внимания как легко… конструкцию можно читать без знания языка программирования, понимая что проверяется. То что написано здесь в 5 словах на языке, ранее было описано десятками приложений тестовой спецификации для ручных тестов. Тестировщику которому нужно было ручные тесты, необходимо было разбираться в эзотерических талмудах писателей тестовой документации, чтобы понять как правильно нужно проверять.
  16. Для всего множество проверок нам понадобилось реализовать 3 темпоральных оператораStates – удовлетворится когда все сущности перейдут в заданное состояние. Нам важен финальный результат.Events – удовлетворится когда появится события или состояние на всех сущностях. Но нам не важно конечное состояние.Stability – удовлетворится если в течении заданного промежутка времени состояние не менялос
  17. Структура – иерирархия, переиспользуемые модули
  18. Вернемся к нашему примеру: один из вариантов тестового стенда: Есть 2 сайта – датацентра: основной и резервный.На основном установлены сервера осуществляющие запись на СХД, на резерном установлены сервера которые получат доступ к копии даных в случае неисправности основного датацентра или по требованию пользователя для проверки консистентности данных.Попробуем протестировать простейший пример. Слева все production сервера осуществляют запись на СХД в течении заданного промежутка времени. Тестируем случай неисправности связи между сайтами. Линк между SW1 и SW2 пропадет. Репликация приастоновится, востановим соединение, репликация должна поднятся, в это время сервера осуществляют запись на основную СХД, система репликация должна синхронизовать данные на основной и резервной СХД в заданый промежуток времени. После этого запись остонавливается, после это сервера на обоих сайтах читают данные с СХД и сравнивают контрольные суммы. Этим проверяется что в случае неисправности связи между сайтами, данные будут синхранизированы и будут одинаковые.
  19. Структура – иерирархия, переиспользуемые модули
  20. Знание конфигурации позволяют реализовать Constaints (ограничения)