SlideShare a Scribd company logo
Девятая независимая
научно-практическая конференция
«Разработка ПО 2013»
23 - 25 октября, Москва

Test Driven Development
Alexey Ragozin
Deutsche Bank
Тестирование и нагрузочное тестирование
Функциональное тестирование
• Количество тест-кейсов увеличивается по мере разработки
• Стоимость ошибки уменьшается по мере тестирования

Нагрузочное тестирование
• Количество потенциальных сценариев тестирования

стабилизируется на ранних стадиях разработки
• Стоимость ошибки экспонетциально растёт с ростом
функционала
Тестирование и нагрузочное тестирование
Функциональное тестирование
Cost of bug

Test volume

Нагрузочное тестирование

Release

Cost of bug

Test volume

Release
Performance Test Driver Development
 Пишем неоптимизированный код

 Пишем нагрузочные тесты / бенчмарк
 Исправляем проблемы производительности
 Организуем изолированные тесты в профили нагрузки

по мере добавления функционала
 Непрерывное тестирование производительности
А на практике?
 Трудоёмкость нагрузочных тестов
• Сложная логика тестов, распределённые
• “Ручной труд” в сценариях тестирования

 Отсутствие нагрузочных требованией
• “Должно работать быстро и обрабатывать много данных”
• Нагрузочный тест план требует отдельного анализа

 Отсутствие адекватной тестовой среды
• Никто не хочет платить за оборудование дважды

• Зависимость от внешних компонентов
А на практике?
И тем не менее
Фундамент для PTTD
 End-to-End автоматизация тестов
 Инкрементальный подход
бенчмарк → изолированный тест → профиль нагрузки
 Непрерывное нагрузочное тестирование

 Нагрузочное тестирование – ответственность комады

разработчиков
Автоматизация
“Классический” подход
 bash + ssh + анализ логов + Excel / R
 Мало пригоден для повторного использования
 Короткий период полураспада тестов
 Использование незнакомого инструментария
“Монокультурный” подход
 Платформа приложения = платформа автоматизации
− Приходится изобретать велосипеды, но
+ Решается проблема культурного диссонанса
Спектр нагрузочных тестов
 Бенчмарки и распределённые бенчмарки
 Проверка гипотез, прототипирование
 Непрерывные нагрузочные тесты
 Поддержка тестовой базы в консистентном состоянии
 Раннее обнаружение проблем производительности

 Нагрузочные профили
 Нагрузочный эквивалент интеграционного тестирования
 Проверка соответствия NFR
 Профилирование и диагностика проблем
“Правильные” нагрузочные тесты
 Мониторинг, мониторинг, мониторинг
 Системные и сетевые метрики, тайминги внешних

систем и т.д.
 Верификация результатов
 Эффективность отдачи 503 – не ваш KPI

 Корректность генерации нагрузки
 Качество тестовых данных
Последствия PTTD практики
 Мы стали писать меньше кода
 Тестированием оказались покрыты многие моменты, до

которых раньше никогда не доходили руки
 Результаты, полученные на ранних этапах разработки,
позволяют более аккуратно планировать закупки
оборудования

Открытые проблемы
 Важность нагрузочного тестирования по-прежнему

недооценена
 Практически всегда приходится интерполировать
результаты из-за ограничений тестовой среды
Ссылки релевантные для Java
Удалённое/распределённое выполнение кода на Java
- http://code.google.com/p/gridkit/wiki/NanoCloudTutorial
- http://blog.ragozin.info/2013/01/remote-code-execution-in-java-made.html
- https://github.com/gridkit/gridant

Статистические расчёты
- https://sites.google.com/site/piotrwendykier/software/parallelcolt

Простая библиотека для графиков
- https://github.com/timmolter/XChart
Спасибо
Алексей Рагозин
alexey.ragozin@db.com

More Related Content

PPTX
Нагрузочное тестирование теория Кожухов
PDF
Распределённое нагрузочное тестирование на Java
PDF
Проверка на прочность или нагрузочное тестирование с Jmeter
PPTX
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
PPT
Нагрузочное тестирование
PPTX
Поиск багов в поиске
PPTX
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Нагрузочное тестирование теория Кожухов
Распределённое нагрузочное тестирование на Java
Проверка на прочность или нагрузочное тестирование с Jmeter
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Нагрузочное тестирование
Поиск багов в поиске
Инструментарий для создания дистрибутивов продуктов | Владимир Селин
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg

What's hot (20)

PPTX
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
PPTX
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
PPTX
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
PDF
Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
PPTX
Нагрузочное тестирование. С чего начать?
PDF
2016-01-16 02 Екатерина Боброва. Архитектура автоматизированных тестов
PPT
6 лекция. тестирование производительности
PPTX
Слои тестового фрамеворка. Что? Где? Когда?
PPTX
Test driven development in net
PPTX
Sql server clr integration
PPTX
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
PPT
Анализируем результаты тестирования производительности с Graphite и Grafana
PPTX
Нагрузочное тестирование JMeter Кожухов
PPTX
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
PPTX
TDD для интеграции с БД легко и просто!
PPTX
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
PPT
Нагрузочное тестирование web-приложений с помощью Load Runner
PDF
Тестирование осень 2013 лекция 4
PPT
NoSql. Фокус на тестирование
PPTX
Особенности тестирования NoSql приложений
От простого к сложному: автоматизируем ручные тест-планы | Сергей Тимченко
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Андрей Похилько — Нагрузочное тестирование типичного интернет сервиса
Нагрузочное тестирование. С чего начать?
2016-01-16 02 Екатерина Боброва. Архитектура автоматизированных тестов
6 лекция. тестирование производительности
Слои тестового фрамеворка. Что? Где? Когда?
Test driven development in net
Sql server clr integration
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
Анализируем результаты тестирования производительности с Graphite и Grafana
Нагрузочное тестирование JMeter Кожухов
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур Гильмуллин
TDD для интеграции с БД легко и просто!
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Нагрузочное тестирование web-приложений с помощью Load Runner
Тестирование осень 2013 лекция 4
NoSql. Фокус на тестирование
Особенности тестирования NoSql приложений
Ad

Viewers also liked (7)

PDF
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
PDF
Cборка мусора в Java без пауз (HighLoad++ 2013)
PDF
Performance Test Driven Development with Oracle Coherence
PDF
Virtualizing Java in Java (jug.ru)
PDF
Garbage collection in JVM
PDF
Java GC tuning and monitoring (by Alexander Ashitkin)
PDF
Filtering 100M objects in Coherence cache. What can go wrong?
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
Cборка мусора в Java без пауз (HighLoad++ 2013)
Performance Test Driven Development with Oracle Coherence
Virtualizing Java in Java (jug.ru)
Garbage collection in JVM
Java GC tuning and monitoring (by Alexander Ashitkin)
Filtering 100M objects in Coherence cache. What can go wrong?
Ad

Similar to Performance Test Driven Development (CEE SERC 2013 Moscow) (20)

PPTX
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
PDF
Кутумов - Автоматизация тестирования транспортных карт
PPTX
Sergij Zumenko, BAQ
PDF
Как построить свой фреймворк для автотестов?
PDF
Тестирование весна 2013 лекция 3
PPTX
Автоматизация.pptx
PDF
Introduction into Test Driven Development
PDF
Тестирование осень 2013 лекция 3
PDF
Тестирование ПО: баг не пройдет!
PPTX
Mva stf module 2 - rus
PDF
Организация нагрузочного тестирования — Алексей Лавренюк
PPT
Performance Tester's Professional Roadmap
PDF
Алексей Лавренюк - Организация нагрузочного тестирования
PPTX
WPF Automation – test injection approach to application testing
PDF
Victor Kuliamin.CSEDays
PDF
Тимур Шевляков
PDF
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
PDF
QAFest. Роль тестирования в Devops
PDF
Тестирование весна 2014 смешанное занятие 1
PPTX
Mva stf module 6 - rus
Эволюция нагрузочного тестирования – от простой автоматизации до BDD
Кутумов - Автоматизация тестирования транспортных карт
Sergij Zumenko, BAQ
Как построить свой фреймворк для автотестов?
Тестирование весна 2013 лекция 3
Автоматизация.pptx
Introduction into Test Driven Development
Тестирование осень 2013 лекция 3
Тестирование ПО: баг не пройдет!
Mva stf module 2 - rus
Организация нагрузочного тестирования — Алексей Лавренюк
Performance Tester's Professional Roadmap
Алексей Лавренюк - Организация нагрузочного тестирования
WPF Automation – test injection approach to application testing
Victor Kuliamin.CSEDays
Тимур Шевляков
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
QAFest. Роль тестирования в Devops
Тестирование весна 2014 смешанное занятие 1
Mva stf module 6 - rus

More from aragozin (20)

PDF
Java on Linux for devs and ops
PDF
I know why your Java is slow
PPTX
Java profiling Do It Yourself (jug.msk.ru 2016)
PDF
Java black box profiling JUG.EKB 2016
PDF
What every Java developer should know about network?
PPTX
Java profiling Do It Yourself
PPTX
DIY Java Profiler
PPTX
Java black box profiling
PDF
Блеск и нищета распределённых кэшей
PDF
JIT compilation in modern platforms – challenges and solutions
PDF
Casual mass parallel computing
PPTX
Nanocloud cloud scale jvm
PPTX
Борьба с GС паузами в JVM
PPTX
Распределённый кэш или хранилище данных. Что выбрать?
PPTX
Devirtualization of method calls
PPTX
Tech talk network - friend or foe
PDF
Database backed coherence cache
PDF
ORM and distributed caching
PDF
Секреты сборки мусора в Java [DUMP-IT 2012]
PPTX
Поиск на своем сайте, обзор open source решений
Java on Linux for devs and ops
I know why your Java is slow
Java profiling Do It Yourself (jug.msk.ru 2016)
Java black box profiling JUG.EKB 2016
What every Java developer should know about network?
Java profiling Do It Yourself
DIY Java Profiler
Java black box profiling
Блеск и нищета распределённых кэшей
JIT compilation in modern platforms – challenges and solutions
Casual mass parallel computing
Nanocloud cloud scale jvm
Борьба с GС паузами в JVM
Распределённый кэш или хранилище данных. Что выбрать?
Devirtualization of method calls
Tech talk network - friend or foe
Database backed coherence cache
ORM and distributed caching
Секреты сборки мусора в Java [DUMP-IT 2012]
Поиск на своем сайте, обзор open source решений

Performance Test Driven Development (CEE SERC 2013 Moscow)

  • 1. Девятая независимая научно-практическая конференция «Разработка ПО 2013» 23 - 25 октября, Москва Test Driven Development Alexey Ragozin Deutsche Bank
  • 2. Тестирование и нагрузочное тестирование Функциональное тестирование • Количество тест-кейсов увеличивается по мере разработки • Стоимость ошибки уменьшается по мере тестирования Нагрузочное тестирование • Количество потенциальных сценариев тестирования стабилизируется на ранних стадиях разработки • Стоимость ошибки экспонетциально растёт с ростом функционала
  • 3. Тестирование и нагрузочное тестирование Функциональное тестирование Cost of bug Test volume Нагрузочное тестирование Release Cost of bug Test volume Release
  • 4. Performance Test Driver Development  Пишем неоптимизированный код  Пишем нагрузочные тесты / бенчмарк  Исправляем проблемы производительности  Организуем изолированные тесты в профили нагрузки по мере добавления функционала  Непрерывное тестирование производительности
  • 5. А на практике?  Трудоёмкость нагрузочных тестов • Сложная логика тестов, распределённые • “Ручной труд” в сценариях тестирования  Отсутствие нагрузочных требованией • “Должно работать быстро и обрабатывать много данных” • Нагрузочный тест план требует отдельного анализа  Отсутствие адекватной тестовой среды • Никто не хочет платить за оборудование дважды • Зависимость от внешних компонентов
  • 7. И тем не менее Фундамент для PTTD  End-to-End автоматизация тестов  Инкрементальный подход бенчмарк → изолированный тест → профиль нагрузки  Непрерывное нагрузочное тестирование  Нагрузочное тестирование – ответственность комады разработчиков
  • 8. Автоматизация “Классический” подход  bash + ssh + анализ логов + Excel / R  Мало пригоден для повторного использования  Короткий период полураспада тестов  Использование незнакомого инструментария “Монокультурный” подход  Платформа приложения = платформа автоматизации − Приходится изобретать велосипеды, но + Решается проблема культурного диссонанса
  • 9. Спектр нагрузочных тестов  Бенчмарки и распределённые бенчмарки  Проверка гипотез, прототипирование  Непрерывные нагрузочные тесты  Поддержка тестовой базы в консистентном состоянии  Раннее обнаружение проблем производительности  Нагрузочные профили  Нагрузочный эквивалент интеграционного тестирования  Проверка соответствия NFR  Профилирование и диагностика проблем
  • 10. “Правильные” нагрузочные тесты  Мониторинг, мониторинг, мониторинг  Системные и сетевые метрики, тайминги внешних систем и т.д.  Верификация результатов  Эффективность отдачи 503 – не ваш KPI  Корректность генерации нагрузки  Качество тестовых данных
  • 11. Последствия PTTD практики  Мы стали писать меньше кода  Тестированием оказались покрыты многие моменты, до которых раньше никогда не доходили руки  Результаты, полученные на ранних этапах разработки, позволяют более аккуратно планировать закупки оборудования Открытые проблемы  Важность нагрузочного тестирования по-прежнему недооценена  Практически всегда приходится интерполировать результаты из-за ограничений тестовой среды
  • 12. Ссылки релевантные для Java Удалённое/распределённое выполнение кода на Java - http://code.google.com/p/gridkit/wiki/NanoCloudTutorial - http://blog.ragozin.info/2013/01/remote-code-execution-in-java-made.html - https://github.com/gridkit/gridant Статистические расчёты - https://sites.google.com/site/piotrwendykier/software/parallelcolt Простая библиотека для графиков - https://github.com/timmolter/XChart