«bdd и реактивщина в 2ГИС», Евгений Тютюев

69
BDD И РЕАКТИВЩИНА В 2ГИС ЕВГЕНИЙ ТЮТЮЕВ

Upload: devday

Post on 22-Jan-2017

540 views

Category:

Software


7 download

TRANSCRIPT

Page 1: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

BDD И РЕАКТИВЩИНА В 2ГИС

ЕВГЕНИЙ ТЮТЮЕВ

Page 2: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

FDD

Page 3: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

FDD, FORTUNE DRIVEN DEVELOPMENT

▸ Пишете код

▸ Надеетесь что он заработает

Page 4: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

BDD, BEHAVIOUR DRIVEN DEVELOPMENT

▸ Берете сценарий

▸ Пишете на него тест

▸ Пишете код, чтобы этот тест прошел

Page 5: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

О ЧЕМ

▸ Как пришел к разработке через тесты

▸ Внедрение BDD на проект 2ГИС под iOS

▸ Какой профит

▸ Как внедрить опыт в команду

Page 6: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 7: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 1: ЧТО БЫЛО ДО ТЕСТОВ

Page 8: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 9: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

XCTEST

▸Запутанный синтаксис

▸Мало возможностей

Page 10: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

KIWI

▸Specs

▸Expectations

▸Mocks

▸Много примеров

▸Няшный синтаксис

Page 11: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 12: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 13: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ВЫВОД 1

▸ Чтобы хоть как то написать один тест на готовом проекте вам понадобится максимум час времени.

Page 14: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 2: ПЛОХИЕ ТЕСТЫ

Page 15: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ

▸ Большие (больше 10 строчек)

Page 16: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ

▸ Большие (больше 10 строчек)

▸ Тестировали все подряд

Page 17: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ

▸ Большие (больше 10 строчек)

▸ Тестировали все подряд

▸ Писались уже на готовый код.

Page 18: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ

▸ Большие (больше 10 строчек)

▸ Тестировали все подряд

▸ Писались уже на готовый код

▸ Модульность? не, не слышал.

Page 19: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 20: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 21: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ВЫВОД 2

▸ Даже если тесты плохие, но их достаточно много, они помогут вам отловить критичные баги.

Page 22: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 3: ПУТЬ К ТЕСТАМ ЧУТЬ ЛУЧШЕ

Page 23: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

2ГИС

Page 24: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 25: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?

Page 26: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?

▸ Взять и написать один тест.

Page 27: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?

▸ Взять и написать один тест.

▸ Написать кучу хоть каких то тестов.

Page 28: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?

Page 29: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?

▸ Пишите примерно 200 тестов

Page 30: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?

▸ Пишите примерно 200 тестов

▸ Понимаете что они не очень

Page 31: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?

▸ Пишите примерно 200 тестов

▸ Понимаете что они не очень

▸ Удаляете

Page 32: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?

▸ Пишите примерно 200 тестов

▸ Понимаете что они не очень

▸ Удаляете

▸ Пишите тесты получше

Page 33: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ОПРЕДЕЛИТЬ ЧТО ТЕСТ ХОРОШ?

Page 34: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ОДНО ПРЕДПОЛОЖЕНИЕ = ОДИН ТЕСТ

СЛЕДСТВИЕ ОДИН ТЕСТ = МАЛО КОДА

Кто то там.

ВЫВОД 3

Page 35: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 36: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

Удалить

Page 37: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 38: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ТЕСТ ДОЛЖЕН БЫТЬ НАСТОЛЬКО ТУП И ПРОСТ, ЧТО ОБЪЯСНИТЬ ЕГО МОЖНО ДАЖЕ ВАШЕЙ МАМЕ.

Кто то там.

ВЫВОД 4

Page 39: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ХОРОШИЕ ТЕСТЫ ≈ ХОРОШИЙ КОД

Кто то там.

ВЫВОД 5

Page 40: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧАСТЬ 4: ПУТЬ К НОРМАЛЬНЫМ ТЕСТАМ НА РЕАКТИВНЫЙ КОД

Page 41: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 42: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 43: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

Page 44: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

▸ Разбиваем сигнал на 3 части

Page 45: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 46: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

▸ Разбиваем сигнал на 3 части

▸ Тестируем создание сигнала

Page 47: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

▸ Разбиваем сигнал на 3 части

▸ Тестируем создание сигнала

▸ Тестируем то, что метод в сигнале вызывается

Page 48: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

▸ Разбиваем сигнал на 3 части

▸ Тестируем создание сигнала

▸ Тестируем то, что метод в сигнале вызывается

▸ Тестируем метод в теле сигнала

Page 49: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?

▸ Разбиваем сигнал на 3 части

▸ Тестируем создание сигнала

▸ Тестируем то, что метод в сигнале вызывается

▸ Тестируем метод в теле сигнала

▸ Если метод большой, то разбиваем его на простые методы и тестируем их.

Page 50: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧЕМ ХОРОШ ТАКОЙ ПОДХОД

Page 51: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧЕМ ХОРОШ ТАКОЙ ПОДХОД

▸ Локализует проблему при поломке

Page 52: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧЕМ ХОРОШ ТАКОЙ ПОДХОД

▸ Локализует проблему при поломке

▸ Меньше кода проще тестировать.

Page 53: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

УПРАВЛЕНИЕ СЛОЖНОСТЬЮ — САМЫЙ ВАЖНЫЙ ТЕХНИЧЕСКИЙ АСПЕКТ РАЗРАБОТКИ ПО.

ПО-МОЕМУ, УПРАВЛЕНИЕ СЛОЖНОСТЬЮ НАСТОЛЬКО ВАЖНО, ЧТО ОНО ДОЛЖНО БЫТЬ ГЛАВНЫМ ТЕХНИЧЕСКИМ ИМПЕРАТИВОМ РАЗРАБОТКИ ПО.

С. Макконнелл

Page 54: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧТО ПОЛУЧИЛИ

Page 55: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧТО ПОЛУЧИЛИ

▸ За 3 месяца 8% проекта покрыто тестами

Page 56: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧТО ПОЛУЧИЛИ

▸ За 3 месяца 8% проекта покрыто тестами

▸ Протестированная часть разбита на модули

Page 57: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧТО ПОЛУЧИЛИ

▸ За 3 месяца 8% проекта покрыто тестами

▸ Протестированная часть разбита на модули

▸ Новые фичи пишутся через тесты

Page 58: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ЧТО ПОЛУЧИЛИ

▸ За 3 месяца 8% проекта покрыто тестами

▸ Протестированная часть разбита на модули

▸ Новые фичи пишутся через тесты

▸ Команда втягивается в процесс

Page 59: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?

Page 60: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?

▸ Увереность

Page 61: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?

▸ Увереность

▸ Ясность

Page 62: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?

▸ Увереность

▸ Ясность

▸ Предсказуемость

Page 63: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?

▸ Увереность

▸ Ясность

▸ Предсказуемость

▸ Нет регрессиям

Page 64: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

БОНУС: МОТИВАЦИЯ КОМАНДЫ

Page 65: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

БОНУС: МОТИВАЦИЯ КОМАНДЫ

▸ Как?

Page 66: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

БОНУС: МОТИВАЦИЯ КОМАНДЫ

▸ Как?

▸ Никак

Page 67: «Bdd и реактивщина в 2ГИС», Евгений Тютюев
Page 68: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ТЕСТИРОВАТЬ - КРУТО

Ч. Норрис

Page 69: «Bdd и реактивщина в 2ГИС», Евгений Тютюев

ВОПРОСЫ?

[email protected]