Extreme banking

63
eXtreme Banking Вадим Герасимов Андрей Солнцев

description

Доклад для XP Days Kiev 2013. Many people think that Agile works only for small or unimportant projects. Forget it! We use extreme programming for developing Bank Saint Petersburg which hit the TOP-3 of Russia internet banks. During the session we will share our XP experience and demonstrate pair programming, TDD, and UI tests on a real example of internet bank. Still unbelievable? So come and see!

Transcript of Extreme banking

Page 1: Extreme banking

eXtreme BankingВадим Герасимов

Андрей Солнцев

Page 2: Extreme banking

Интернет-банкБСПБ

i.bspb.ruдемо-версия: idemo.bspb.ru

В ТОП-3 российских ИБ по версии Markswebb

Page 3: Extreme banking

Интернет-банк в цифрах

Page 4: Extreme banking

4 программера

Page 5: Extreme banking

0 архитекторов

Page 6: Extreme banking

0 архитекторов 0 аналитиков

Page 7: Extreme banking

0 архитекторов 0 аналитиков

0 релиз- менеджеров

Page 8: Extreme banking

0 архитекторов 0 аналитиков

0 тестировщиков 0 релиз- менеджеров

Page 9: Extreme banking

GA спустя 5 месяцев после старта

первый in-house релиз через месяц

Page 10: Extreme banking

Релиз каждые 2-3 дня

Page 11: Extreme banking

180 UI тестов за 4 минуты!

Page 12: Extreme banking

Как мы до такого докатились

Page 13: Extreme banking

Java платформа

Page 14: Extreme banking

НО без энтерпрайз фанатизма

● EJB● ESB● JMS● Spring● WebLogic, Websphere,

JBoss● WAR● EAR

Page 15: Extreme banking

Простой

Наш выбор:

Page 16: Extreme banking

Простой Быстрый в разработке

Наш выбор:

Page 17: Extreme banking

Простой Быстрый в разработке

ИнспирированRoR-ом

Наш выбор:

Page 18: Extreme banking

Простой Быстрый в разработке

Перезагрузка классов на лету

ИнспирированRoR-ом

Наш выбор:

Page 19: Extreme banking

Простой Быстрый в разработке

Перезагрузка классов на лету

Легко масштабируемый

ИнспирированRoR-ом

Наш выбор:

Page 20: Extreme banking

для изменений базы данных

Page 21: Extreme banking

для написания UI тестов

Page 22: Extreme banking

Дисциплины и техники

Page 23: Extreme banking

Парное программирование

Пацан накодил-

пацан протестил

Page 24: Extreme banking

Парное программирование

TDDПацан накодил-

пацан протестил

Page 25: Extreme banking

Парное программирование

TDD

KISS

Пацан накодил-

пацан протестил

Page 26: Extreme banking

Парное программирование

TDD

Частые pair switching

KISS

Пацан накодил-

пацан протестил

Page 27: Extreme banking

Парное программирование

TDD

Частые pair switching

KISScontinuous refactoring

Пацан накодил-

пацан протестил

Page 28: Extreme banking

Прямое общение с заказчиком

Page 29: Extreme banking

Прямое общение с заказчиком

два раза в неделю skype стендапы

Page 30: Extreme banking

Прямое общение с заказчиком

два раза в неделю skype стендапы

раз в 1-1.5 месяца on-site встречи

Page 31: Extreme banking

Прямое общение с заказчиком

два раза в неделю skype стендапы

раз в 1-1.5 месяца on-site встречи

8 x 5 коммуникация через Skype

Page 32: Extreme banking

Минимум документацииDocument driven development

Page 33: Extreme banking

Интерактивная и самотестируемая документация

для интеграции онлайн продавцов с Интернет-банком

Page 34: Extreme banking

It’s DEMO time!

Page 35: Extreme banking

Сколько должно быть тестов?

● Unit● UI● Integration● ...

Page 36: Extreme banking

Unit

UI

Integration

Не жалей!

Page 37: Extreme banking

Unit

UI

Integration

Не жалей!

Бизнес-чувствительная функциональность, базовые сценарии

Page 38: Extreme banking

Unit

UI

Integration

Не жалей!

Бизнес-чувствительная функциональность, базовые сценарии

Критичная функциональность, есть возможность управлять состояниями в backend-ах (или не требует)

Page 39: Extreme banking

Что и как мы тестируемUnit тесты: интеграция с backend-ом, валидация

Page 40: Extreme banking

Что и как мы тестируемUnit тесты: интеграция с backend-ом, валидация

UI тесты: не покрывают backend

Page 41: Extreme banking

Что и как мы тестируемUnit тесты: интеграция с backend-ом, валидация

UI тесты: не покрывают backend

Интеграционные тесты: минимальный набор критических функций

Page 42: Extreme banking

Быстрые UI тесты

Свой in-memory backend

Page 43: Extreme banking

Быстрые UI тесты

Свой in-memory backend Переиспользуем сессию

Page 44: Extreme banking

Быстрые UI тесты

Свой in-memory backend Переиспользуем сессию

Быстрый логин

Page 45: Extreme banking

Быстрые UI тесты

Запускаем только под Chrome

Свой in-memory backend Переиспользуем сессию

Быстрый логин

Page 46: Extreme banking

Быстрые UI тесты

Запускаем только под Chrome

Свой in-memory backend Переиспользуем сессию

Быстрый логин

Оптимизация работы LESS

Page 47: Extreme banking

Билд и релиз

Jenkins CI

Page 48: Extreme banking

Билд и релиз

Jenkins CI

Zero branching

Page 49: Extreme banking

Билд и релиз

Jenkins CI

Zero branching

ранняя доступностьдля альфа-тестеров

Page 50: Extreme banking

Билд и релиз

Jenkins CI

UI тесты часть билда

Zero branching

ранняя доступностьдля альфа-тестеров

Page 51: Extreme banking

Билд и релиз

Jenkins CI

UI тесты часть билдаГотовность в любой момент выслать билд

Zero branching

ранняя доступностьдля альфа-тестеров

Page 52: Extreme banking

Билд и релиз

Jenkins CI

UI тесты часть билдаГотовность в любой момент выслать билд

Zero branchinggit log как release notes

ранняя доступностьдля альфа-тестеров

Page 53: Extreme banking

Итого

● Делай просто

Page 54: Extreme banking

Итого

● Делай просто

● Релизь часто

Page 55: Extreme banking

“Правопорядок в стране определяется не наличием воров, а умением властей их обезвреживать.”

Глеб Жеглов

Page 56: Extreme banking

Итого

● Делай просто

● Релизь часто

● Ты и клиент - единое целое

Page 57: Extreme banking

Итого

● Делай просто

● Релизь часто

● Ты и клиент - единое целое

● Не раздувай команду

Page 58: Extreme banking

Итого

● Делай просто

● Релизь часто

● Ты и клиент - единое целое

● Не раздувай команду

● Тесты - наше всё

Page 59: Extreme banking

Итого

● Делай просто

● Релизь часто

● Ты и клиент - единое целое

● Не раздувай команду

● Тесты - наше всё

● UI тесты должны быть быстрыми

Page 60: Extreme banking
Page 61: Extreme banking

Разработка Интернет-банка для нового клиента

Следующие шаги:

Page 62: Extreme banking

Разработка Интернет-банка для нового клиента

Сохранение и развитие единой платформы

Следующие шаги:

Page 63: Extreme banking

XP работает!

Андрей Солнцев

http://blog.codeborne.com/2012/12/5.html

Вадим Герасимов