tdd in the world of big data

19
TDD IN THE WORLD OF BIG

Upload: vyacheslav-moskalenko

Post on 14-Jan-2015

376 views

Category:

Self Improvement


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Tdd in the world of big data

TDD IN THE WORLD OFBIG

Page 2: Tdd in the world of big data

НЕМНОГО О СЕБЕ

TDD ? А кто за это

будет платить?

TDD работает не везде

Классаня штука. Но

у нас релиз на

носу

Page 3: Tdd in the world of big data

НЕМНОГО ПРО TDD

Первый закон TTD . Не пишите код продукта, пока не напишете отказной модульный тест.

Второй закон TTD . Не пишите модульный тест в объеме большем, чем необходимо для отказа. Невозможность компиляции является отказом.

Третий закон TTD. Не пишите код продукта в объем большем, чем необходимо для прохождения текущего отказного теста.

Три Закона TDD

Page 4: Tdd in the world of big data

ВЛИЯНИЕ TDD НА ПРОИЗВОДИТЕЛЬНОСТЬ ?

1M 3M 6M 1Y0

1

2

3

4

5

6

CLASSICTDDGURU

Page 5: Tdd in the world of big data

AFD (ASSERT FIRST DEVELOPMENT)

Помагает больше думать, меньше кодировать

Помагает по максимуму использовать возможности IDE по кодогенерации.

Page 6: Tdd in the world of big data

КОГДА НЕ TDD ?

РАЗРАБОТКА TDD

БОЛЬШИЕ, НАГРУЗОЧНЫЕ

, СЛОЖНЫЕ ТЕСТЫ

МАЛЕНьКИЕ, ЛЕГКИЕ

ФУНКЦ-НЫЕ ТЕСТЫ

Page 7: Tdd in the world of big data

НЕМНОГО ПРО NO.SQL

Key-Value Stores (Amazon Dynamo, Hbase, Cassandra)

Document Stores (MongoDB, Riak) Graph Databases (Neo4J)

Page 8: Tdd in the world of big data

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.

Page 9: Tdd in the world of big 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

Page 10: Tdd in the world of big data

ЧТО ТАКОЕ БОЛЬШИЕ ДАННЫЕ ? Не обязательно терабайты данных

ОБЛАКО

RAM RAM RAM

НОДЫ НА АМАЗОНЕ

REST

MONGOMONGO

MONGO

10-100 м. Предложений в день

MESSAGER

WEB SERVER

10 тыс. подписчиков в день

Page 11: Tdd in the world of big data

NOSQL TESTING CHALLENGES

Доп. тестирование транзакционности. Симуляция конкурентных запросов.

Доп. тестирование на целостность данных при разных условиях, в.т.ч. Constraints, connections

Доп. тестирование пессимистичных блокировок и возможного отката

В целом интеграционных и функциональных тестов может быть больше

Тестирование Больших Данных

Page 12: Tdd in the world of big data

ИНСТРУМЕНТЫ

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)

Page 13: Tdd in the world of big data

EMBEDDED SERVER APPROACH

Тесты не требуют выделенного окружения и работающего сервера nosql db

Тесты отрабатывают очень быстро. Высокий уровень изоляции тестов Отлавливают до 70-80%

функциональных дефектов Легкая отладка тестов

Test NOSQL IN-MEMORY INSTANCE

Page 14: Tdd in the world of big data

НЕДОСТАТКИ EMBEDDED ПОДХОДА

Не отлавливают дефекты, связанные с кластерными конфигурациями и тонкими настройками

Такой тип тестирование поддерживают не все производители NOSQL БД

Невозможность тестирования данных больших объемов

Page 15: Tdd in the world of big data

MANAGED SERVER APPROACH

Тесты не требуют выделенного окружения, но требуют проинсталлированный дистрибутив NOSQL сервера

Отлавливают до 90-100% функциональных дефектов

Возможность тестирования данных больших объемов

TestNOSQL

REAL INSTANCE

Start Instance

Shut down instance

Run Test

Page 16: Tdd in the world of big data

НЕДОСТАТКИ MANAGED ПОДХОДА

Затрудненная отладка тестов Скорость отрабатываютки тестов зависит

от скорости запуска сервера и количество запусков на тестовую сюиту

Уровень изоляции зависит от конфигурации тестовой сьюиты

Тесты зависят от успешности запуска NOSQL сервера

Такой тип тестирования иногда не работает под Windows

Page 17: Tdd in the world of big data

STANDALONE SERVER APPROACH

Отлавливают 100% функциональных дефектов

Возможность тестирования данных больших объемов

Возможность гибкой конфигурации тестового стэнда

TestNOSQL

REAL INSTANCEStart Instance

Shut down instance

Run Test Human

Page 18: Tdd in the world of big data

НЕДОСТАТКИ STANDALONE ПОДХОДА

Дорогая отладка тестов Проход тестов зависят от работы

NOSQL сервера Уровень изоляции низкий Тесты требуют выделенного

окружения Скорость отрабатываютки тестов

зависит от скорости протокола и канала

Page 19: Tdd in the world of big data

XYZ

Спасибо ! [email protected]