2. НЕМНОГО О СЕБЕ
Классаня TDD
штука. Но работает
TDD ? А
у нас не везде
кто за это
будет релиз на
платить? носу
3. НЕМНОГО ПРО TDD
Три Закона TDD
Первый закон TTD . Не
пишите код продукта, пока
не напишете отказной
модульный тест.
Второй закон TTD . Не
пишите модульный тест в
объеме большем, чем
необходимо для отказа.
Невозможность
компиляции является
отказом.
Третий закон TTD. Не
пишите код продукта в
объем большем, чем
необходимо для
прохождения текущего
отказного теста.
4. ВЛИЯНИЕ TDD НА ПРОИЗВОДИТЕЛЬНОСТЬ ?
6
5
4
CLASSIC
3
TDD
2 GURU
1
0
1M 3M 6M 1Y
5. AFD (ASSERT FIRST DEVELOPMENT)
Помагает больше думать, меньше
кодировать
Помагает по максимуму использовать
возможности IDE по кодогенерации.
6. КОГДА НЕ TDD ?
БОЛЬШИЕ, НАГР
УЗОЧНЫЕ, СЛОЖ
НЫЕ ТЕСТЫ
РАЗРАБОТКА
МАЛЕНьКИЕ, ЛЕГ
КИЕ ФУНКЦ-НЫЕ
ТЕСТЫ
7. НЕМНОГО ПРО NO.SQL
Key-Value Stores (Amazon
Dynamo, Hbase, Cassandra)
Document Stores (MongoDB, Riak)
Graph Databases (Neo4J)
8. NOSQL FACTS
Windows Azure cloud based on MongoDB
MongoDB highly supported by Microsoft and
good API for
Java, C++, C#, PHP, Python, Perl, Ruby
Cassandra has massive numeber of
production users
http://www.datastax.com/cassandrausers
Hadoop is used in Yahoo. Deployed on 4000
nodes and process 32PB of data.
10. ЧТО ТАКОЕ БОЛЬШИЕ ДАННЫЕ ?
Не обязательно терабайты данных
10-100 м. Предложений в день
MESSAGER
ОБЛАКО
REST
WEB
SERVER
MONGO RAM RAM RAM
MONGO
MONGO
10 тыс. подписчиков в день
НОДЫ НА АМАЗОНЕ
11. NOSQL TESTING CHALLENGES
Доп. тестирование транзакционности.
Симуляция конкурентных запросов.
Доп. тестирование на целостность данных при
разных условиях, в.т.ч. Constraints, connections
Доп. тестирование пессимистичных блокировок
и возможного отката
В целом интеграционных и функциональных
тестов может быть больше
Тестирование Больших Данных
13. EMBEDDED SERVER APPROACH
Test NOSQL IN-MEMORY
INSTANCE
Тесты не требуют выделенного окружения
и работающего сервера nosql db
Тесты отрабатывают очень быстро.
Высокий уровень изоляции тестов
Отлавливают до 70-80% функциональных
дефектов
Легкая отладка тестов
14. НЕДОСТАТКИ EMBEDDED ПОДХОДА
Не отлавливают дефекты, связанные с
кластерными конфигурациями и тонкими
настройками
Такой тип тестирование поддерживают не
все производители NOSQL БД
Невозможность тестирования данных
больших объемов
15. MANAGED SERVER APPROACH
Start Instance
NOSQL
Test Run Test REAL INSTANCE
Shut down instance
Тесты не требуют выделенного окружения, но
требуют проинсталлированный дистрибутив
NOSQL сервера
Отлавливают до 90-100% функциональных
дефектов
Возможность тестирования данных больших
объемов
16. НЕДОСТАТКИ MANAGED ПОДХОДА
Затрудненная отладка тестов
Скорость отрабатываютки тестов зависит от
скорости запуска сервера и количество запусков
на тестовую сюиту
Уровень изоляции зависит от конфигурации
тестовой сьюиты
Тесты зависят от успешности запуска NOSQL
сервера
Такой тип тестирования иногда не работает под
Windows
17. STANDALONE SERVER APPROACH
NOSQL Start Instance
Test Run Test Human
REAL INSTANCE
Shut down instance
Отлавливают 100% функциональных
дефектов
Возможность тестирования данных
больших объемов
Возможность гибкой конфигурации
тестового стэнда
18. НЕДОСТАТКИ STANDALONE ПОДХОДА
Дорогая отладка тестов
Проход тестов зависят от работы
NOSQL сервера
Уровень изоляции низкий
Тесты требуют выделенного окружения
Скорость отрабатываютки тестов
зависит от скорости протокола и канала
Немного о себе. Идеолог гибких инженерных практик в компании Люксофт. Общаюсь много с обыкновенными инженерами. Часто в паре, где мы пробуем Pair Programming Ping-Pong, TDD, Clean Code, Agile Design на их боевых примерах и проектах. На картинке Office Space моими глазами и ушами. Мой последний опыт тесно связан с проектом, где нужно быстро обрабатывать огромный массив предложений по десяткам тысяч критериев. На проекте работает MongoDB, Riakи Hadoop.
Как изветно самый большой миф гибкой разработки – это хаотичность. Этот миф некогда был и моим заблуждением. На самом деле в отличие от традиционного подхода, который накладывает ограничения и правила на принятие дизайнерских решений и дает полную свободу в дисциплине, гибкие методологии открывают большую свободу принятия дизайнерских решений, но устанавливает определенную дисциплину и последовательность работы с кодом. TDD – это одна из дисциплин, имеющих четкие правила, которые нужно соблюдать. TDD – по сути, это привычка. Как и другую привычку её нужно вырабатывать в течении 3-6 месяцев, и часто зависит от возраста разработчика.
NoSQLхранилища данных делятся на три основные категории. На этом мастер-классе будем рассматривать как совмещать дисциплинуTDD с разработкой функционала под самые популярные NoSQLхранилища по одной из каждой технологии (MongoDB, Cassandra, Neo4J). В конце также коснемся темы применимостиTDD с Hadoop и применимость TDD в .NET C# на примере работы с MongoDB
На этом мастер-классе мы в основном будем использовать Java библиотеки для построения тестов. Разберем новые возможности jUnit 4.10