tdd in the world of big data
DESCRIPTION
TRANSCRIPT
TDD IN THE WORLD OFBIG
НЕМНОГО О СЕБЕ
TDD ? А кто за это
будет платить?
TDD работает не везде
Классаня штука. Но
у нас релиз на
носу
НЕМНОГО ПРО TDD
Первый закон TTD . Не пишите код продукта, пока не напишете отказной модульный тест.
Второй закон TTD . Не пишите модульный тест в объеме большем, чем необходимо для отказа. Невозможность компиляции является отказом.
Третий закон TTD. Не пишите код продукта в объем большем, чем необходимо для прохождения текущего отказного теста.
Три Закона TDD
ВЛИЯНИЕ TDD НА ПРОИЗВОДИТЕЛЬНОСТЬ ?
1M 3M 6M 1Y0
1
2
3
4
5
6
CLASSICTDDGURU
AFD (ASSERT FIRST DEVELOPMENT)
Помагает больше думать, меньше кодировать
Помагает по максимуму использовать возможности IDE по кодогенерации.
КОГДА НЕ TDD ?
РАЗРАБОТКА TDD
БОЛЬШИЕ, НАГРУЗОЧНЫЕ
, СЛОЖНЫЕ ТЕСТЫ
МАЛЕНьКИЕ, ЛЕГКИЕ
ФУНКЦ-НЫЕ ТЕСТЫ
НЕМНОГО ПРО NO.SQL
Key-Value Stores (Amazon Dynamo, Hbase, Cassandra)
Document Stores (MongoDB, Riak) Graph Databases (Neo4J)
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.
ТЕСТИРОВАНИЕ В ГИБКОЙ РАЗРАБОТКЕ Ideas, brainstorming
Critical thinking PoC Stage (Scalability, Performance)
Load tests Exploratory tests
Development (Functionality) Functional tests (unit, integration, end-to-
end) UAT
Acceptance tests, demo Stress, performance tests
ЧТО ТАКОЕ БОЛЬШИЕ ДАННЫЕ ? Не обязательно терабайты данных
ОБЛАКО
RAM RAM RAM
НОДЫ НА АМАЗОНЕ
REST
MONGOMONGO
MONGO
10-100 м. Предложений в день
MESSAGER
WEB SERVER
10 тыс. подписчиков в день
NOSQL TESTING CHALLENGES
Доп. тестирование транзакционности. Симуляция конкурентных запросов.
Доп. тестирование на целостность данных при разных условиях, в.т.ч. Constraints, connections
Доп. тестирование пессимистичных блокировок и возможного отката
В целом интеграционных и функциональных тестов может быть больше
Тестирование Больших Данных
ИНСТРУМЕНТЫ
Junit 4.10 (http://sourceforge.net/projects/junit/)
Nosql unit (https://github.com/lordofthejars/nosql-unit)
MRUnit (http://mrunit.apache.org/) Amazon WS (http://aws.amazon.com/) Примеры (https://github.com/javamv/tdd-
bigdata)
EMBEDDED SERVER APPROACH
Тесты не требуют выделенного окружения и работающего сервера nosql db
Тесты отрабатывают очень быстро. Высокий уровень изоляции тестов Отлавливают до 70-80%
функциональных дефектов Легкая отладка тестов
Test NOSQL IN-MEMORY INSTANCE
НЕДОСТАТКИ EMBEDDED ПОДХОДА
Не отлавливают дефекты, связанные с кластерными конфигурациями и тонкими настройками
Такой тип тестирование поддерживают не все производители NOSQL БД
Невозможность тестирования данных больших объемов
MANAGED SERVER APPROACH
Тесты не требуют выделенного окружения, но требуют проинсталлированный дистрибутив NOSQL сервера
Отлавливают до 90-100% функциональных дефектов
Возможность тестирования данных больших объемов
TestNOSQL
REAL INSTANCE
Start Instance
Shut down instance
Run Test
НЕДОСТАТКИ MANAGED ПОДХОДА
Затрудненная отладка тестов Скорость отрабатываютки тестов зависит
от скорости запуска сервера и количество запусков на тестовую сюиту
Уровень изоляции зависит от конфигурации тестовой сьюиты
Тесты зависят от успешности запуска NOSQL сервера
Такой тип тестирования иногда не работает под Windows
STANDALONE SERVER APPROACH
Отлавливают 100% функциональных дефектов
Возможность тестирования данных больших объемов
Возможность гибкой конфигурации тестового стэнда
TestNOSQL
REAL INSTANCEStart Instance
Shut down instance
Run Test Human
НЕДОСТАТКИ STANDALONE ПОДХОДА
Дорогая отладка тестов Проход тестов зависят от работы
NOSQL сервера Уровень изоляции низкий Тесты требуют выделенного
окружения Скорость отрабатываютки тестов
зависит от скорости протокола и канала
XYZ
Спасибо ! [email protected]