SlideShare ist ein Scribd-Unternehmen logo
1 von 34
XP FUN

Сергей Калинец
@skalinets
ОБО МНЕ
.NET разработчик
Архитектор в Universal Mind

Тренер по XP практикам
О ЧЕМ БУДЕМ ГОВОРИТЬ
Развлечения разработчиков
XP практики
Функциональщина
ДОБАВЛЯЕМ FUNCTIONAL…
АВТОМАТИЗАЦИЯ
СБОРКИ

Fake (F# Make)
ЗАДАЧИ
Сборка

Создание артефактов

Запуск тестов

Настройка окружения

Развертывание
ДАЖЕ ЕСЛИ ЕСТЬ РЕЛИЗ
ИНЖЕНЕР…
РЕЛИЗ ИНЖЕНЕРА МОЖЕТ
НЕ БЫТЬ НА МЕСТЕ
ЗАДАЧИ МОГУТ БЫТЬ
ЛОКАЛЬНЫМИ
ЭТО МОЖЕТЬ БЫТЬ
ИНТЕРЕСНЫМ
АВТОМАТИЗАЦИЯ СБОРКИ:
ТЕКУЩЕЕ ПОЛОЖЕНИЕ
XML

#AKE

ant

nmake

maven

rake

nant

jake

msbuild

psake

tfs

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

Weitere ähnliche Inhalte

Mehr von Serhiy Kalinets

Руйнуємо .NET Міфи
Руйнуємо .NET МіфиРуйнуємо .NET Міфи
Руйнуємо .NET МіфиSerhiy Kalinets
 
Xp в brown field разработке
Xp в brown field разработкеXp в brown field разработке
Xp в brown field разработкеSerhiy Kalinets
 
Functional programming in C#
Functional programming in C#Functional programming in C#
Functional programming in C#Serhiy Kalinets
 
Даёшь асинхронность в массы, или как ускориться нашару
Даёшь асинхронность в массы, или как ускориться нашаруДаёшь асинхронность в массы, или как ускориться нашару
Даёшь асинхронность в массы, или как ускориться нашаруSerhiy Kalinets
 
Зачем нужны распределенные системы конторля версий
Зачем нужны распределенные системы конторля версийЗачем нужны распределенные системы конторля версий
Зачем нужны распределенные системы конторля версийSerhiy Kalinets
 
вкалывают роботы, счастлив человек (Team city)
вкалывают роботы,  счастлив человек (Team city)вкалывают роботы,  счастлив человек (Team city)
вкалывают роботы, счастлив человек (Team city)Serhiy Kalinets
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Serhiy Kalinets
 
TDD: Arrange Act Assert на примере Rhino Mocks
TDD: Arrange Act Assert на примере Rhino MocksTDD: Arrange Act Assert на примере Rhino Mocks
TDD: Arrange Act Assert на примере Rhino MocksSerhiy Kalinets
 

Mehr von Serhiy Kalinets (13)

CI adventures in .NET
CI adventures in .NETCI adventures in .NET
CI adventures in .NET
 
Руйнуємо .NET Міфи
Руйнуємо .NET МіфиРуйнуємо .NET Міфи
Руйнуємо .NET Міфи
 
Xp в brown field разработке
Xp в brown field разработкеXp в brown field разработке
Xp в brown field разработке
 
Functional programming in C#
Functional programming in C#Functional programming in C#
Functional programming in C#
 
Ready for prod
Ready for prodReady for prod
Ready for prod
 
Solid code via tdd
Solid code via tddSolid code via tdd
Solid code via tdd
 
Даёшь асинхронность в массы, или как ускориться нашару
Даёшь асинхронность в массы, или как ускориться нашаруДаёшь асинхронность в массы, или как ускориться нашару
Даёшь асинхронность в массы, или как ускориться нашару
 
Clean code
Clean codeClean code
Clean code
 
Зачем нужны распределенные системы конторля версий
Зачем нужны распределенные системы конторля версийЗачем нужны распределенные системы конторля версий
Зачем нужны распределенные системы конторля версий
 
Мой Скрамбат
Мой СкрамбатМой Скрамбат
Мой Скрамбат
 
вкалывают роботы, счастлив человек (Team city)
вкалывают роботы,  счастлив человек (Team city)вкалывают роботы,  счастлив человек (Team city)
вкалывают роботы, счастлив человек (Team city)
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
 
TDD: Arrange Act Assert на примере Rhino Mocks
TDD: Arrange Act Assert на примере Rhino MocksTDD: Arrange Act Assert на примере Rhino Mocks
TDD: Arrange Act Assert на примере Rhino Mocks
 

Xp fun