SlideShare uma empresa Scribd logo
1 de 19
TDD IN THE
WORLD OF
BIG
НЕМНОГО О СЕБЕ

              Классаня      TDD
              штука. Но   работает
  TDD ? А
                у нас     не везде
 кто за это
   будет      релиз на
 платить?       носу
НЕМНОГО ПРО TDD
                      Три Закона TDD

                     Первый закон TTD . Не
                      пишите код продукта, пока
                      не напишете отказной
                      модульный тест.
                     Второй закон TTD . Не
                      пишите модульный тест в
                      объеме большем, чем
                      необходимо для отказа.
                      Невозможность
                      компиляции является
                      отказом.
                     Третий закон TTD. Не
                      пишите код продукта в
                      объем большем, чем
                      необходимо для
                      прохождения текущего
                      отказного теста.
ВЛИЯНИЕ TDD НА ПРОИЗВОДИТЕЛЬНОСТЬ ?
6

5

4

                                 CLASSIC
3
                                 TDD
2                                GURU


1

0
    1M     3M      6M     1Y
AFD (ASSERT FIRST DEVELOPMENT)

 Помагает больше думать, меньше
  кодировать
 Помагает по максимуму использовать
  возможности IDE по кодогенерации.
КОГДА НЕ 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
ЧТО ТАКОЕ БОЛЬШИЕ ДАННЫЕ ?
   Не обязательно терабайты данных

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


                                                MESSAGER
                           ОБЛАКО
    REST
                                                  WEB
                                                 SERVER



     MONGO           RAM      RAM     RAM
      MONGO
       MONGO
                                            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

       Test       NOSQL IN-MEMORY
                     INSTANCE


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

 Высокий уровень изоляции тестов

 Отлавливают до 70-80% функциональных
  дефектов
 Легкая отладка тестов
НЕДОСТАТКИ EMBEDDED ПОДХОДА


 Не отлавливают дефекты, связанные с
  кластерными конфигурациями и тонкими
  настройками
 Такой тип тестирование поддерживают не
  все производители NOSQL БД
 Невозможность тестирования данных
  больших объемов
MANAGED SERVER APPROACH
                Start Instance
                                        NOSQL
         Test   Run Test             REAL INSTANCE
                Shut down instance


   Тесты не требуют выделенного окружения, но
    требуют проинсталлированный дистрибутив
    NOSQL сервера
   Отлавливают до 90-100% функциональных
    дефектов
   Возможность тестирования данных больших
    объемов
НЕДОСТАТКИ MANAGED ПОДХОДА

   Затрудненная отладка тестов
   Скорость отрабатываютки тестов зависит от
    скорости запуска сервера и количество запусков
    на тестовую сюиту
   Уровень изоляции зависит от конфигурации
    тестовой сьюиты
   Тесты зависят от успешности запуска NOSQL
    сервера
   Такой тип тестирования иногда не работает под
    Windows
STANDALONE SERVER APPROACH

                         NOSQL        Start Instance
    Test   Run Test                                        Human
                      REAL INSTANCE
                                      Shut down instance


 Отлавливают 100% функциональных
  дефектов
 Возможность тестирования данных
  больших объемов
 Возможность гибкой конфигурации
  тестового стэнда
НЕДОСТАТКИ STANDALONE ПОДХОДА

 Дорогая отладка тестов
 Проход тестов зависят от работы
  NOSQL сервера
 Уровень изоляции низкий

 Тесты требуют выделенного окружения

 Скорость отрабатываютки тестов
  зависит от скорости протокола и канала
XYZ



       Спасибо!
       javamv@gmail.com

Mais conteúdo relacionado

Mais procurados

Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...SQALab
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»WrikeTechClub
 
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...CEE-SEC(R)
 
Be productive with Javascript in the end of 2016
Be productive with Javascript in the end of 2016 Be productive with Javascript in the end of 2016
Be productive with Javascript in the end of 2016 DataArt
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Fwdays
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Ontico
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET CoreDotNetConf
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоDotNetConf
 
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелитьсяСинхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелитьсяMODX Беларусь
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceEYevseyeva
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магияAleksey Solntsev
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиYuriy Vasiyarov
 
Введение в maven
Введение в mavenВведение в maven
Введение в mavenDmitry Zinushin
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 

Mais procurados (20)

Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
Разработка системы автоматизированного тестирования при помощи фреймворка Pro...
 
Be productive with Javascript in the end of 2016
Be productive with Javascript in the end of 2016 Be productive with Javascript in the end of 2016
Be productive with Javascript in the end of 2016
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
 
Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.Максим Дунин, Nginx, Inc.
Максим Дунин, Nginx, Inc.
 
Как это будет: ASP.NET Core
Как это будет: ASP.NET CoreКак это будет: ASP.NET Core
Как это будет: ASP.NET Core
 
Разработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешевоРазработка надежных параллельных, распределенных приложений: быстро и дешево
Разработка надежных параллельных, распределенных приложений: быстро и дешево
 
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелитьсяСинхронный MODX: как сделать настоящую синхронизацию и не застрелиться
Синхронный MODX: как сделать настоящую синхронизацию и не застрелиться
 
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance ConferenceВыступление Юрия Насретдинова, Badoo, на High Performance Conference
Выступление Юрия Насретдинова, Badoo, на High Performance Conference
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
Maven 3 : уличная магия
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработки
 
Введение в maven
Введение в mavenВведение в maven
Введение в maven
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 

Destaque

20140808090832 ri sukan berpasukan sem 1 2014-2015
20140808090832 ri   sukan berpasukan sem 1 2014-201520140808090832 ri   sukan berpasukan sem 1 2014-2015
20140808090832 ri sukan berpasukan sem 1 2014-2015KPM
 
Guia de trabajos nro 1, unidad ii modulo 2
Guia de trabajos nro 1, unidad ii  modulo 2Guia de trabajos nro 1, unidad ii  modulo 2
Guia de trabajos nro 1, unidad ii modulo 2micka_05
 
Guia de trabajos nro 1, unidad ii modulo 2.
Guia de trabajos nro 1, unidad ii  modulo 2.Guia de trabajos nro 1, unidad ii  modulo 2.
Guia de trabajos nro 1, unidad ii modulo 2.micka_05
 
Uji liliefors
Uji lilieforsUji liliefors
Uji lilieforsjojun
 
Upsi sem8 课业说明 krl3043 ilmiah bc
Upsi sem8  课业说明 krl3043 ilmiah bcUpsi sem8  课业说明 krl3043 ilmiah bc
Upsi sem8 课业说明 krl3043 ilmiah bcKPM
 
Mockup Double Viewer
Mockup Double ViewerMockup Double Viewer
Mockup Double ViewerLoïc Haÿ
 

Destaque (8)

20140808090832 ri sukan berpasukan sem 1 2014-2015
20140808090832 ri   sukan berpasukan sem 1 2014-201520140808090832 ri   sukan berpasukan sem 1 2014-2015
20140808090832 ri sukan berpasukan sem 1 2014-2015
 
Guia de trabajos nro 1, unidad ii modulo 2
Guia de trabajos nro 1, unidad ii  modulo 2Guia de trabajos nro 1, unidad ii  modulo 2
Guia de trabajos nro 1, unidad ii modulo 2
 
Guia de trabajos nro 1, unidad ii modulo 2.
Guia de trabajos nro 1, unidad ii  modulo 2.Guia de trabajos nro 1, unidad ii  modulo 2.
Guia de trabajos nro 1, unidad ii modulo 2.
 
Uji liliefors
Uji lilieforsUji liliefors
Uji liliefors
 
Cultural transformation
Cultural transformationCultural transformation
Cultural transformation
 
Upsi sem8 课业说明 krl3043 ilmiah bc
Upsi sem8  课业说明 krl3043 ilmiah bcUpsi sem8  课业说明 krl3043 ilmiah bc
Upsi sem8 课业说明 krl3043 ilmiah bc
 
Kanban vs scrum_v3
Kanban vs scrum_v3Kanban vs scrum_v3
Kanban vs scrum_v3
 
Mockup Double Viewer
Mockup Double ViewerMockup Double Viewer
Mockup Double Viewer
 

Semelhante a Tdd in the world of big data

Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииCEE-SEC(R)
 
Повышение производительности бизнес-приложений
Повышение производительности бизнес-приложенийПовышение производительности бизнес-приложений
Повышение производительности бизнес-приложенийКРОК
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...it-people
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsAnton Vidishchev
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDKrivoy Rog IT Community
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Mad Devs
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)Alexander Gornik
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusOntico
 
микроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубымикроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубыAleksandr Tarasov
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETИспользование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETPavel Treshnikov
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeDmytro Mindra
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Тестовая инфраструктура в облаке
Тестовая инфраструктура в облакеТестовая инфраструктура в облаке
Тестовая инфраструктура в облакеSQALab
 

Semelhante a Tdd in the world of big data (20)

Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
Повышение производительности бизнес-приложений
Повышение производительности бизнес-приложенийПовышение производительности бизнес-приложений
Повышение производительности бизнес-приложений
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо... PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
PostgreSQL: вчера, сегодня, завтра, Олег Бартунов, Postgres Professional, Мо...
 
Test Driven Development in .NET Applications
Test Driven Development in .NET ApplicationsTest Driven Development in .NET Applications
Test Driven Development in .NET Applications
 
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDDkranonit S15 Vladimir Melnik - Ruby on Rails, BDD
kranonit S15 Vladimir Melnik - Ruby on Rails, BDD
 
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
Современный graphql на бекенде и фронтенде. Тестирование, секьюрити, новые во...
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 
Innodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 RusInnodb Scalability And New Features Hl2008 Rus
Innodb Scalability And New Features Hl2008 Rus
 
микроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубымикроСЕРВИСЫ: огонь, вода и медные трубы
микроСЕРВИСЫ: огонь, вода и медные трубы
 
Использование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NETИспользование Mock-объектов в TDD на платформе .NET
Использование Mock-объектов в TDD на платформе .NET
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Тестовая инфраструктура в облаке
Тестовая инфраструктура в облакеТестовая инфраструктура в облаке
Тестовая инфраструктура в облаке
 

Tdd in the world of big data

  • 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.
  • 9. ТЕСТИРОВАНИЕ В ГИБКОЙ РАЗРАБОТКЕ  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
  • 10. ЧТО ТАКОЕ БОЛЬШИЕ ДАННЫЕ ?  Не обязательно терабайты данных 10-100 м. Предложений в день MESSAGER ОБЛАКО REST WEB SERVER MONGO RAM RAM RAM MONGO MONGO 10 тыс. подписчиков в день НОДЫ НА АМАЗОНЕ
  • 11. NOSQL TESTING CHALLENGES  Доп. тестирование транзакционности. Симуляция конкурентных запросов.  Доп. тестирование на целостность данных при разных условиях, в.т.ч. Constraints, connections  Доп. тестирование пессимистичных блокировок и возможного отката  В целом интеграционных и функциональных тестов может быть больше  Тестирование Больших Данных
  • 12. ИНСТРУМЕНТЫ  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)
  • 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 сервера  Уровень изоляции низкий  Тесты требуют выделенного окружения  Скорость отрабатываютки тестов зависит от скорости протокола и канала
  • 19. XYZ  Спасибо!  javamv@gmail.com

Notas do Editor

  1. Немного о себе. Идеолог гибких инженерных практик в компании Люксофт. Общаюсь много с обыкновенными инженерами. Часто в паре, где мы пробуем Pair Programming Ping-Pong, TDD, Clean Code, Agile Design на их боевых примерах и проектах. На картинке Office Space моими глазами и ушами. Мой последний опыт тесно связан с проектом, где нужно быстро обрабатывать огромный массив предложений по десяткам тысяч критериев. На проекте работает MongoDB, Riakи Hadoop.
  2. Как изветно самый большой миф гибкой разработки – это хаотичность. Этот миф некогда был и моим заблуждением. На самом деле в отличие от традиционного подхода, который накладывает ограничения и правила на принятие дизайнерских решений и дает полную свободу в дисциплине, гибкие методологии открывают большую свободу принятия дизайнерских решений, но устанавливает определенную дисциплину и последовательность работы с кодом. TDD – это одна из дисциплин, имеющих четкие правила, которые нужно соблюдать. TDD – по сути, это привычка. Как и другую привычку её нужно вырабатывать в течении 3-6 месяцев, и часто зависит от возраста разработчика.
  3. NoSQLхранилища данных делятся на три основные категории. На этом мастер-классе будем рассматривать как совмещать дисциплинуTDD с разработкой функционала под самые популярные NoSQLхранилища по одной из каждой технологии (MongoDB, Cassandra, Neo4J). В конце также коснемся темы применимостиTDD с Hadoop и применимость TDD в .NET C# на примере работы с MongoDB
  4. На этом мастер-классе мы в основном будем использовать Java библиотеки для построения тестов. Разберем новые возможности jUnit 4.10