Upload
serhiy-kalinets
View
458
Download
4
Embed Size (px)
DESCRIPTION
Слайды с моего доклада на XP days 2013
Citation preview
XP FUN Сергей Калинец@skalinets
ОБО МНЕ
.NET разработчик
Архитектор в Universal Mind
Тренер по XP практикам
О ЧЕМ БУДЕМ ГОВОРИТЬ
Развлечения разработчиков
XP практики
Функциональщина
ДОБАВЛЯЕМ FUNCTIONAL…
АВТОМАТИЗАЦИЯ СБОРКИ
Fake (F# Make)
ЗАДАЧИ
Сборка
Запуск тестов
Развертывание
Создание артефактов
Настройка окружения
ДАЖЕ ЕСЛИ ЕСТЬ РЕЛИЗ ИНЖЕНЕР…
РЕЛИЗ ИНЖЕНЕРА МОЖЕТНЕ БЫТЬ НА МЕСТЕ
ЗАДАЧИ МОГУТ БЫТЬЛОКАЛЬНЫМИ
ЭТО МОЖЕТЬ БЫТЬ ИНТЕРЕСНЫМ
АВТОМАТИЗАЦИЯ СБОРКИ: ТЕКУЩЕЕ ПОЛОЖЕНИЕ
XML
ant
maven
nant
msbuild
tfs
#AKE
nmake
rake
jake
psake
fake
ЧЕМ ПЛОХ XML
Многобуков
Сложно разрешать конфликты версий сценария
Сложно реализовать что-то неподдерживаемое изначально
Проблемы с императивными конструкциями (вроде циклов)
ПОЧЕМУ FAKE
Удобный синтаксис
Поддержка всех основных операций
Деплоймент из коробки
Все возможности .NET
ОПРЕДЕЛЕНИЕ ШАГОВ И ЗАВИСИМОСТЕЙ
РАБОТА С ФАЙЛАМИ
ЗАПУСК ТЕСТОВ
FAKE.DEPLOY
Локальное и удалённое развертывание приложений
Использует Nuget, как единицу развертывания
HTTP / REST API
АВТОМАТИЗИРУЕМ ВЕБ ТЕСТИРОВАНИЕ
canopy
ЗАЧЕМ?
Выполняемые спецификации
Однозначное определение критериев готовности
Сценарии понятны и бизнесу и разработчикам
Экономия времени на воспроизведении и проверке
ЛОНДОНСКАЯ ШКОЛА TDD
1. Спецификация
2. Выполняемый скрипт проверки спецификации
3. Модульные тесты на реализацию
ЗАЧЕМ CANOPY?
Опять же – полный набор возможностей F# и .NET
Синтаксис, понятный не только автоматизаторам, но и бизнесу и пользователям
ТЕСТКЕЙС
Open url http://lefthandedgoat.github.io/canopy/demo/amir.html
Enter “Minnie” as First Name
Select Female Gender
Click “Continue”
Verify that First Name is “Minnie”
ТЕСТКЕЙС НА CANOPY
И ОПЯТЬ ОБЫЧНЫЙ ТЕКСТ
Open url http://lefthandedgoat.github.io/canopy/demo/amir.html
Enter “Minnie” as First Name
Select Female Gender
Click “Continue”
Verify that First Name is “Minnie”
КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ CANOPY
ЗАПУСК НЕСКОЛЬКИХ БРАУЗЕРОВ
start firefox
let mainBrowser = browser
start chrome
let secondBrowser = browser
switchTo mainBrowser
КЛИКИ МЫШКОЙ
click "#login"
click "Login"
click (element "#login")
ЗАПОЛНЕНИЕ ЗНАЧЕНИЙ
"#firstName" << "Alex"
"First Name" << "Alex"
clear "First Name"
ПРОВЕРКА
"#firstName" == "Alex"
"#firstName" != "Tom"
".todoItem" *= "Buy milk“ // хотя бы один элемент равен
".todoItem" *!= "Buy milk“
"#lastName" =~ "Gr[ae]y" // regexp
displayed "#errorMessage"
REPORTERS
Console, Teamcity, HTML, Coverage
open configuration
open reporters
reporter <- new LiveHtmlReporter() :> IReporter
ПОДВЕДЕНИЕ ИТОГОВ
Всегда есть что улучшить на наших проектах
Это заняние можно и нужно сделать интересным
Нужно пробовать новые подходы и языки
СПАСИБО! @skalinets