Патерны построения фреймворка в авто

advertisement
Основано на теории, практике, размышлениях,
Lessons Learned
 В тестировании с 2004 года
 В настоящее время работаю в
GlobalLogic
 Автоматизировал на Test
Complete, UI Automation
(VS2008, C# + .NET + WPF)
 Люблю свою работу 
 Веду блог: testingforall.com
 Record-Play
 Functional Decomposition
 DDT/ODT
 Фреймворки
 Логирование
 Шаблон или модель, позволяющая выработать
общее решение для набора задач.
 Паттерн должен быть достаточно абстрактным,
чтобы быть применимым ко множеству задач и
дать свободу действий в реализации, не
отклоняясь от сущности паттерна
 Паттерн должен обладать четким набором
характеристик, без наличия которых он теряет
свою сущность.
Суть: нажали запись, сделали действия, нажали стоп
=> получили скрипт
Когда имеет смысл использовать:
 Знакомство с инструментом
 Вы – начинающий автоматизатор (осторожно!)
 Поймать сложный элемент или посмотреть, как
инструмент предлагает решить то, что вызывает
сомнения (цель – посмотреть и понять)
 Нужна «одноразовая» автоматизация чего-то
Недостатки:
 Плохая читаемость кода
 Невозможно поддерживать и расширять
 Не позволяет работать командно (несколько
человек, работая с одним модулем, создадут
свалку)
 Изменение в приложении может вызвать коллапс
«фреймворка»
Суть: разбили скрипты на функции/методы,
разнесли по файлам, структурировали.
Суть: разбили скрипты на функции/методы,
разнесли по файлам, структурировали.
Суть: разбили скрипты на функции/методы,
разнесли по файлам, структурировали.
Подходит, когда:
 Функциональная команда (каждый пишет свое)
 Разный уровень автоматизаторов в команде
(синьйоры пишут фреймворк, юниоры пишут
тесты на базе фрейморка)
Сложности:
 Спроектировать структуру фреймворка
 Отвязать тесты от изменений
Особенности:
 Само по себе вынесение тестовых данных за
пределы скрипта – это еще не DDT
 DDT подходит не для всех проектов и не для всех
задач
 Центр внимания сконцентрирован вокруг данных
Вынесение данных за пределы скрипта:
DDT:
Что еще можно сделать?
Functional Decomposition:
DDT:
Особенности DDT:
 Возможность трассировать требования на тестовые
данные, огибая саму имплементацию тестов
 Возможность разделить составление тест дизайна
от написания кода тестов
 Возможность изменять тестовые данные, не трогая
при этом код (полезно для регресионных тестов)
 Возможность генерировать случайные данные
(валидные – проще, невалидные – сложнее, но
возможно) и гонять на них тесты в режиме nonstop
DDT подходит, если:
 В проекте много сущностей с большим числом входных
данных (поля регистрации, добавления чего-то и т.п.)
 Есть кому составлять тестовые данные (не должно
демотивировать), есть кому писать фреймворк (он
обычно сложнее, чем при FD)
DDT не подходит для:
 Проверки workflow-based требований или
функциональности
 Тестов для графики (визуализация чего-то, layout,
картинки и т.п.)
Особенности:
 Центром внимания является объект
Подходит, если:
 Приложение содержит много визуализации/окон/форм
и мало полей ввода
Сложности:
 Архитектура фреймворка под ODT – очень не
тривиальная задача
 Боязнь изменений
Пример:
Преимущества:
 Позволяет «держать в памяти» текущий объект =>
облегченное логирование в случае ошибок
 Позволяет существенно уменьшить
параметризацию методов
 Что логировать?
 Как логировать?
 Как это выглядит во фреймворке?
Tests
Helpers
Forms
Controls
Log level 1
Log level 2
Log level 3
Questions?
Download