SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Девятая независимая
научно-практическая конференция
«Разработка ПО 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

Mais conteúdo relacionado

Mais procurados

6 лекция. тестирование производительности
 6 лекция. тестирование производительности 6 лекция. тестирование производительности
6 лекция. тестирование производительности
vyacheslavmaslov
 
Нагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter КожуховНагрузочное тестирование JMeter Кожухов
Нагрузочное тестирование JMeter Кожухов
Илья Кожухов
 
TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!TDD для интеграции с БД легко и просто!
TDD для интеграции с БД легко и просто!
Mikalai Alimenkou
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4
Technopark
 

Mais procurados (20)

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

Destaque

Destaque (7)

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

Semelhante a Performance Test Driven Development (CEE SERC 2013 Moscow)

Мануйлова Ольга Валерьевна
Мануйлова Ольга ВалерьевнаМануйлова Ольга Валерьевна
Мануйлова Ольга Валерьевна
Olga Manuylova
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
LiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
QA Guards
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
LiloSEA
 
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
seleznev_stas
 

Semelhante a Performance Test Driven Development (CEE SERC 2013 Moscow) (20)

Мануйлова Ольга Валерьевна
Мануйлова Ольга ВалерьевнаМануйлова Ольга Валерьевна
Мануйлова Ольга Валерьевна
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Project under control
Project under controlProject under control
Project under control
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
 
Simonova CSEDays
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
Katerina Simonova CSEDays
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
 
Cовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиCовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработки
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
 
Simonova sql server-enginetesting
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
 
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
 
Web application testing architecture
Web application testing architectureWeb application testing architecture
Web application testing architecture
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
Организация нагрузочного тестирования — Алексей Лавренюк
Организация нагрузочного тестирования — Алексей ЛавренюкОрганизация нагрузочного тестирования — Алексей Лавренюк
Организация нагрузочного тестирования — Алексей Лавренюк
 
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
АНТОН СЕРПУТЬКО «Start performance testing from scratch» QADay 2019
 

Mais de aragozin

Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
aragozin
 
Nanocloud cloud scale jvm
Nanocloud   cloud scale jvmNanocloud   cloud scale jvm
Nanocloud cloud scale jvm
aragozin
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
aragozin
 
Tech talk network - friend or foe
Tech talk   network - friend or foeTech talk   network - friend or foe
Tech talk network - friend or foe
aragozin
 
Поиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решенийПоиск на своем сайте, обзор open source решений
Поиск на своем сайте, обзор open source решений
aragozin
 

Mais de aragozin (20)

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