Интеллектуальная система автоматизации тестирования...
description
Transcript of Интеллектуальная система автоматизации тестирования...
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.
Тестируемые продукты
VPLEX
ACCESS
ANYWHERE
RECOVERPOINT
PROTECTEVERYWHERE
VM
AX
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
ScenarioTest 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 s1n2 s2 s1
n1n2
Satisfied
Satisfied
n1 e1n2 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.
КонфигурацияКонфигурационный файл: Минимальный набор данных об оборудовании
Построение топологии FC сети
24© Copyright 2013 EMC Corporation. All rights reserved.
Что дальше...
ITE (Integrated Testing Environment)
Непрерывная интеграция
Виртуальная/облачная тестовая среда
25© Copyright 2013 EMC Corporation. All rights reserved.
Итоги
Составляющие эффективной тестовой системы
Библиотека знаний
Гибкое конфигурирование