Рефакторить легаси код? Только с юнит тестами!

20
Рефакторить легаси код? Только с юнит тестами! Александр Андронов Антон Бевзюк Smart Step Group

Upload: smartstepgroup

Post on 04-Jul-2015

323 views

Category:

Technology


2 download

DESCRIPTION

Слайды воркшопа "Рефакторить легаси код? Только с юнит тестами!" на AgileDays 2014 в Москве

TRANSCRIPT

Page 1: Рефакторить легаси код? Только с юнит тестами!

Рефакторить

легаси код?

Только с юнит

тестами!

Александр Андронов

Антон Бевзюк

Smart Step Group

Page 2: Рефакторить легаси код? Только с юнит тестами!

SmartStepGroup

Инженерные практики

http://get.cardmone.net

Page 3: Рефакторить легаси код? Только с юнит тестами!

Расписание

Поговорим об унаследованном коде

Практика. Пишем первый тест

Вырабатываем подход

Практика. Вводим новый функционал

Page 4: Рефакторить легаси код? Только с юнит тестами!

Исходники

C#

git clone https://github.com/SmartStepGroup/AwfulVideoStore.git

Java

git clone https://github.com/SmartStepGroup/AwfulVideoStoreJava.git

Page 5: Рефакторить легаси код? Только с юнит тестами!

Изменения в легаси коде?

Page 6: Рефакторить легаси код? Только с юнит тестами!

Перепишем или так оставим?

В след раз точно будет лучше

http://devanswers.ru/

Page 7: Рефакторить легаси код? Только с юнит тестами!

Цель

Показать, как покрыть

легаси код тестами,

ничего не сломав.

Page 8: Рефакторить легаси код? Только с юнит тестами!

Добавляем новый функционал

Покрываем тестами

Делаем код тестируемым

Page 9: Рефакторить легаси код? Только с юнит тестами!

Практика!

C#

git clone https://github.com/SmartStepGroup/AwfulVideoStore.git

Java

git clone https://github.com/SmartStepGroup/AwfulVideoStoreJava.git

Page 10: Рефакторить легаси код? Только с юнит тестами!

Подмена понятий

Page 11: Рефакторить легаси код? Только с юнит тестами!

Упражнение 1. Подмена понятий

Выделяем метод SellingReportService,

мешающий тесту - 10 минут

Page 12: Рефакторить легаси код? Только с юнит тестами!

Инъекция зависимостей

Page 13: Рефакторить легаси код? Только с юнит тестами!

Упражнение 2.

Инъекция зависимостей

Изолировать ISession в DefaultMovieService

– 10 минут

Page 14: Рефакторить легаси код? Только с юнит тестами!

Sprout Method

Page 15: Рефакторить легаси код? Только с юнит тестами!

Упражнение 3.

Sprout method

В SellingReportService не учитывать фильмы

18+

10 минут

Page 16: Рефакторить легаси код? Только с юнит тестами!

Wrap Method

Page 17: Рефакторить легаси код? Только с юнит тестами!

Упражнение 4.

Wrap method SellingReportService должен показывать

первые 5 фильмов в лучшей категории,

отсортированные по цене по убыванию

– 10 минут

Page 18: Рефакторить легаси код? Только с юнит тестами!

Общий подход

• Находим зависимость от

технологий

• Изолируем каким-либо спобобом

• Пишем тест

Page 19: Рефакторить легаси код? Только с юнит тестами!

Список литературы

http://blog.crisp.se/2013/10/11/henrikkniber

g/good-and-bad-technical-debt

Page 20: Рефакторить легаси код? Только с юнит тестами!

Спасибо за внимание

http://get.cardmone.net

разрешите геолокацию