«bdd и реактивщина в 2ГИС», Евгений Тютюев
TRANSCRIPT
BDD И РЕАКТИВЩИНА В 2ГИС
ЕВГЕНИЙ ТЮТЮЕВ
FDD
FDD, FORTUNE DRIVEN DEVELOPMENT
▸ Пишете код
▸ Надеетесь что он заработает
BDD, BEHAVIOUR DRIVEN DEVELOPMENT
▸ Берете сценарий
▸ Пишете на него тест
▸ Пишете код, чтобы этот тест прошел
О ЧЕМ
▸ Как пришел к разработке через тесты
▸ Внедрение BDD на проект 2ГИС под iOS
▸ Какой профит
▸ Как внедрить опыт в команду
ЧАСТЬ 1: ЧТО БЫЛО ДО ТЕСТОВ
XCTEST
▸Запутанный синтаксис
▸Мало возможностей
KIWI
▸Specs
▸Expectations
▸Mocks
▸Много примеров
▸Няшный синтаксис
ВЫВОД 1
▸ Чтобы хоть как то написать один тест на готовом проекте вам понадобится максимум час времени.
ЧАСТЬ 2: ПЛОХИЕ ТЕСТЫ
ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ
▸ Большие (больше 10 строчек)
ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ
▸ Большие (больше 10 строчек)
▸ Тестировали все подряд
ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ
▸ Большие (больше 10 строчек)
▸ Тестировали все подряд
▸ Писались уже на готовый код.
ЧАСТЬ 2: ГОВНЯНЫЕ ТЕСТЫ
▸ Большие (больше 10 строчек)
▸ Тестировали все подряд
▸ Писались уже на готовый код
▸ Модульность? не, не слышал.
ВЫВОД 2
▸ Даже если тесты плохие, но их достаточно много, они помогут вам отловить критичные баги.
ЧАСТЬ 3: ПУТЬ К ТЕСТАМ ЧУТЬ ЛУЧШЕ
2ГИС
КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?
КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?
▸ Взять и написать один тест.
КАК НАЧАТЬ ПИСАТЬ ТЕСТЫ?
▸ Взять и написать один тест.
▸ Написать кучу хоть каких то тестов.
КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?
КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?
▸ Пишите примерно 200 тестов
КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?
▸ Пишите примерно 200 тестов
▸ Понимаете что они не очень
КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?
▸ Пишите примерно 200 тестов
▸ Понимаете что они не очень
▸ Удаляете
КАК ПИСАТЬ ТЕСТЫ ПОЛУЧШЕ?
▸ Пишите примерно 200 тестов
▸ Понимаете что они не очень
▸ Удаляете
▸ Пишите тесты получше
КАК ОПРЕДЕЛИТЬ ЧТО ТЕСТ ХОРОШ?
ОДНО ПРЕДПОЛОЖЕНИЕ = ОДИН ТЕСТ
СЛЕДСТВИЕ ОДИН ТЕСТ = МАЛО КОДА
Кто то там.
ВЫВОД 3
Удалить
ТЕСТ ДОЛЖЕН БЫТЬ НАСТОЛЬКО ТУП И ПРОСТ, ЧТО ОБЪЯСНИТЬ ЕГО МОЖНО ДАЖЕ ВАШЕЙ МАМЕ.
Кто то там.
ВЫВОД 4
ХОРОШИЕ ТЕСТЫ ≈ ХОРОШИЙ КОД
Кто то там.
ВЫВОД 5
ЧАСТЬ 4: ПУТЬ К НОРМАЛЬНЫМ ТЕСТАМ НА РЕАКТИВНЫЙ КОД
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
▸ Разбиваем сигнал на 3 части
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
▸ Разбиваем сигнал на 3 части
▸ Тестируем создание сигнала
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
▸ Разбиваем сигнал на 3 части
▸ Тестируем создание сигнала
▸ Тестируем то, что метод в сигнале вызывается
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
▸ Разбиваем сигнал на 3 части
▸ Тестируем создание сигнала
▸ Тестируем то, что метод в сигнале вызывается
▸ Тестируем метод в теле сигнала
КАК ТЕСТИРОВАТЬ РЕАКТИВНЫЙ КОД?
▸ Разбиваем сигнал на 3 части
▸ Тестируем создание сигнала
▸ Тестируем то, что метод в сигнале вызывается
▸ Тестируем метод в теле сигнала
▸ Если метод большой, то разбиваем его на простые методы и тестируем их.
ЧЕМ ХОРОШ ТАКОЙ ПОДХОД
ЧЕМ ХОРОШ ТАКОЙ ПОДХОД
▸ Локализует проблему при поломке
ЧЕМ ХОРОШ ТАКОЙ ПОДХОД
▸ Локализует проблему при поломке
▸ Меньше кода проще тестировать.
УПРАВЛЕНИЕ СЛОЖНОСТЬЮ — САМЫЙ ВАЖНЫЙ ТЕХНИЧЕСКИЙ АСПЕКТ РАЗРАБОТКИ ПО.
ПО-МОЕМУ, УПРАВЛЕНИЕ СЛОЖНОСТЬЮ НАСТОЛЬКО ВАЖНО, ЧТО ОНО ДОЛЖНО БЫТЬ ГЛАВНЫМ ТЕХНИЧЕСКИМ ИМПЕРАТИВОМ РАЗРАБОТКИ ПО.
С. Макконнелл
ЧТО ПОЛУЧИЛИ
ЧТО ПОЛУЧИЛИ
▸ За 3 месяца 8% проекта покрыто тестами
ЧТО ПОЛУЧИЛИ
▸ За 3 месяца 8% проекта покрыто тестами
▸ Протестированная часть разбита на модули
ЧТО ПОЛУЧИЛИ
▸ За 3 месяца 8% проекта покрыто тестами
▸ Протестированная часть разбита на модули
▸ Новые фичи пишутся через тесты
ЧТО ПОЛУЧИЛИ
▸ За 3 месяца 8% проекта покрыто тестами
▸ Протестированная часть разбита на модули
▸ Новые фичи пишутся через тесты
▸ Команда втягивается в процесс
ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?
ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?
▸ Увереность
ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?
▸ Увереность
▸ Ясность
ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?
▸ Увереность
▸ Ясность
▸ Предсказуемость
ДЛЯ ЧЕГО ВСЕ ЭТО НУЖНО?
▸ Увереность
▸ Ясность
▸ Предсказуемость
▸ Нет регрессиям
БОНУС: МОТИВАЦИЯ КОМАНДЫ
БОНУС: МОТИВАЦИЯ КОМАНДЫ
▸ Как?
БОНУС: МОТИВАЦИЯ КОМАНДЫ
▸ Как?
▸ Никак
ТЕСТИРОВАТЬ - КРУТО
Ч. Норрис