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

More Related Content

PPTX
Дмитрий Долженко "You think you know everything about algorithms and refactor...
PDF
Релизы? Регулярно по пятницам
PDF
Сергей Сергеев "Менеджмент кода, или Почему SCM"
PDF
Выжмем из Cucumber'a все"
PDF
Добро пожаловать в практическую безопасность (Сергей Белов)
PDF
Дмитрий Пискарёв: Из РМ в СТО
PDF
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
PDF
Дмитрий Абрамов. Выбросьте мусор! Как улучшить «идеальный» процесс?
Дмитрий Долженко "You think you know everything about algorithms and refactor...
Релизы? Регулярно по пятницам
Сергей Сергеев "Менеджмент кода, или Почему SCM"
Выжмем из Cucumber'a все"
Добро пожаловать в практическую безопасность (Сергей Белов)
Дмитрий Пискарёв: Из РМ в СТО
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
Дмитрий Абрамов. Выбросьте мусор! Как улучшить «идеальный» процесс?

What's hot (7)

PPTX
«Домовёнок кузя изгоняет лешего»
ODP
enterprize yoba jabber bot
PPTX
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
PDF
DEFCON и развитие информационной безопасности в стране
PDF
Vladimir Obrizan "Ecosystem for reliable Python programming"
PPTX
Разведка боем
PPTX
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
«Домовёнок кузя изгоняет лешего»
enterprize yoba jabber bot
Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Ч...
DEFCON и развитие информационной безопасности в стране
Vladimir Obrizan "Ecosystem for reliable Python programming"
Разведка боем
Сложный проект с нуля: сквозь воду, огонь и медные трубы / Филипп Дельгядо
Ad

Viewers also liked (20)

PDF
Матвей Мальков «Ещё один поиск контактов на Android»
PDF
Задачи машинного обучения
PDF
Learning About At-Risk Veterans Using 
Online Network Surveys
PDF
App store iap. short comments
PDF
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
PDF
Cоздаем пробки или тюнинг postgresql для расчетных задач
PDF
Взаимодействие Go и C-библиотек. Go и Erlang
PPTX
Lua vs c++_desyatov
PDF
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
PDF
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
PDF
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
PPT
Веб 3.0. Футуристический рассказ о будущем интернета и IT
PDF
Фича готова. Что дальше?
PDF
Артём Кудзев «Делайте на работе то, что мотивирует»
PDF
«Agile-тестирование по версии API 2ГИС» — Анастасия Огаркова, 2ГИС
PDF
«Я спросил у сервера...», Илья Пастушков
PPT
Инструкция по созданию самопального биллинга, Михаил Крестьянинов (Новотелеком)
PPT
Распределенное хранилище Ceph. Обзор и практические способы использования
PDF
Рендеринг может больше: vue.js vs React, Андрей Солодовников
PDF
Тимофей Чаптыков «Верстальщик должен быть ленивый»
Матвей Мальков «Ещё один поиск контактов на Android»
Задачи машинного обучения
Learning About At-Risk Veterans Using 
Online Network Surveys
App store iap. short comments
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
Cоздаем пробки или тюнинг postgresql для расчетных задач
Взаимодействие Go и C-библиотек. Go и Erlang
Lua vs c++_desyatov
Манипулятор на Ti Stellaris Launchpad, Лёша Романенко
«Роль исследований в формировании продуктового видения компании», Лиза Алексе...
Хочу делать игры, пусть меня научат — DevDay, 06.06.2012
Веб 3.0. Футуристический рассказ о будущем интернета и IT
Фича готова. Что дальше?
Артём Кудзев «Делайте на работе то, что мотивирует»
«Agile-тестирование по версии API 2ГИС» — Анастасия Огаркова, 2ГИС
«Я спросил у сервера...», Илья Пастушков
Инструкция по созданию самопального биллинга, Михаил Крестьянинов (Новотелеком)
Распределенное хранилище Ceph. Обзор и практические способы использования
Рендеринг может больше: vue.js vs React, Андрей Солодовников
Тимофей Чаптыков «Верстальщик должен быть ленивый»
Ad

More from DevDay (20)

PDF
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
PDF
Фреймворк Slot, Good Parts, Александр Бирюков
PDF
Devops-практики в разработке решений для бизнеса, Максим Пашук
PDF
Inversion of Control в деталях, Дмитрий Кожевников
PDF
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
PDF
«Велогосипед», Данил Ильиных
PDF
«Процесс создания продукта», Максим Берёзкин
PDF
«Вывод продукта на новых территориях», Елизавета Алексеенко
PDF
Лабиринт на Arduino, Вадим Ипполитов
PDF
«Хоба-хоба и в продакшн», Женя Пономарёв
PDF
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
PDF
«Тестируем веб приложения», Павел Сташевский
PDF
«Открытая веб картография», Илья Таратухин
PDF
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
PDF
Олег Годовых «Страх и ненависть в Event Bus»
PDF
Распределенные приложения и Azure Service Bus
PDF
Frontend
PDF
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
PDF
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
PDF
Александр Щепановский «Почему каждому языку нужен свой _»
«Интеграция push-уведомлений в Яндекс.Браузер под iOS», Юрий Музюкин
Фреймворк Slot, Good Parts, Александр Бирюков
Devops-практики в разработке решений для бизнеса, Максим Пашук
Inversion of Control в деталях, Дмитрий Кожевников
«Используем неизменяемые данные и создаем качественный код», Игорь Кудрин
«Велогосипед», Данил Ильиных
«Процесс создания продукта», Максим Берёзкин
«Вывод продукта на новых территориях», Елизавета Алексеенко
Лабиринт на Arduino, Вадим Ипполитов
«Хоба-хоба и в продакшн», Женя Пономарёв
«Бегущий по лезвию. Продуктовые сценарии в дизайне», Макс Карпылев
«Тестируем веб приложения», Павел Сташевский
«Открытая веб картография», Илья Таратухин
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
Олег Годовых «Страх и ненависть в Event Bus»
Распределенные приложения и Azure Service Bus
Frontend
Илья Беда «Как Erlang сделает ваши приложения реалтаймовыми»
Роман Акинфеев «Разработка RESTful API with all bells and whistles»
Александр Щепановский «Почему каждому языку нужен свой _»

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