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

Test Driven Development
...
Тестирование и нагрузочное тестирование
Функциональное тестирование
• Количество тест-кейсов увеличивается по мере разрабо...
Тестирование и нагрузочное тестирование
Функциональное тестирование
Cost of bug

Test volume

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

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

 Пишем нагрузочные тесты / бенчмарк
 Исправляем проб...
А на практике?
 Трудоёмкость нагрузочных тестов
• Сложная логика тестов, распределённые
• “Ручной труд” в сценариях тести...
А на практике?
И тем не менее
Фундамент для PTTD
 End-to-End автоматизация тестов
 Инкрементальный подход
бенчмарк → изолированный тест...
Автоматизация
“Классический” подход
 bash + ssh + анализ логов + Excel / R
 Мало пригоден для повторного использования
...
Спектр нагрузочных тестов
 Бенчмарки и распределённые бенчмарки
 Проверка гипотез, прототипирование
 Непрерывные нагруз...
“Правильные” нагрузочные тесты
 Мониторинг, мониторинг, мониторинг
 Системные и сетевые метрики, тайминги внешних

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

которых рань...
Ссылки релевантные для Java
Удалённое/распределённое выполнение кода на Java
- http://code.google.com/p/gridkit/wiki/NanoC...
Спасибо
Алексей Рагозин
alexey.ragozin@db.com
Upcoming SlideShare
Loading in...5
×

Performance Test Driven Development (CEE SERC 2013 Moscow)

1,771

Published on

(slidedeck from presentation)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,771
On Slideshare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Performance Test Driven Development (CEE SERC 2013 Moscow)

  1. 1. Девятая независимая научно-практическая конференция «Разработка ПО 2013» 23 - 25 октября, Москва Test Driven Development Alexey Ragozin Deutsche Bank
  2. 2. Тестирование и нагрузочное тестирование Функциональное тестирование • Количество тест-кейсов увеличивается по мере разработки • Стоимость ошибки уменьшается по мере тестирования Нагрузочное тестирование • Количество потенциальных сценариев тестирования стабилизируется на ранних стадиях разработки • Стоимость ошибки экспонетциально растёт с ростом функционала
  3. 3. Тестирование и нагрузочное тестирование Функциональное тестирование Cost of bug Test volume Нагрузочное тестирование Release Cost of bug Test volume Release
  4. 4. Performance Test Driver Development  Пишем неоптимизированный код  Пишем нагрузочные тесты / бенчмарк  Исправляем проблемы производительности  Организуем изолированные тесты в профили нагрузки по мере добавления функционала  Непрерывное тестирование производительности
  5. 5. А на практике?  Трудоёмкость нагрузочных тестов • Сложная логика тестов, распределённые • “Ручной труд” в сценариях тестирования  Отсутствие нагрузочных требованией • “Должно работать быстро и обрабатывать много данных” • Нагрузочный тест план требует отдельного анализа  Отсутствие адекватной тестовой среды • Никто не хочет платить за оборудование дважды • Зависимость от внешних компонентов
  6. 6. А на практике?
  7. 7. И тем не менее Фундамент для PTTD  End-to-End автоматизация тестов  Инкрементальный подход бенчмарк → изолированный тест → профиль нагрузки  Непрерывное нагрузочное тестирование  Нагрузочное тестирование – ответственность комады разработчиков
  8. 8. Автоматизация “Классический” подход  bash + ssh + анализ логов + Excel / R  Мало пригоден для повторного использования  Короткий период полураспада тестов  Использование незнакомого инструментария “Монокультурный” подход  Платформа приложения = платформа автоматизации − Приходится изобретать велосипеды, но + Решается проблема культурного диссонанса
  9. 9. Спектр нагрузочных тестов  Бенчмарки и распределённые бенчмарки  Проверка гипотез, прототипирование  Непрерывные нагрузочные тесты  Поддержка тестовой базы в консистентном состоянии  Раннее обнаружение проблем производительности  Нагрузочные профили  Нагрузочный эквивалент интеграционного тестирования  Проверка соответствия NFR  Профилирование и диагностика проблем
  10. 10. “Правильные” нагрузочные тесты  Мониторинг, мониторинг, мониторинг  Системные и сетевые метрики, тайминги внешних систем и т.д.  Верификация результатов  Эффективность отдачи 503 – не ваш KPI  Корректность генерации нагрузки  Качество тестовых данных
  11. 11. Последствия PTTD практики  Мы стали писать меньше кода  Тестированием оказались покрыты многие моменты, до которых раньше никогда не доходили руки  Результаты, полученные на ранних этапах разработки, позволяют более аккуратно планировать закупки оборудования Открытые проблемы  Важность нагрузочного тестирования по-прежнему недооценена  Практически всегда приходится интерполировать результаты из-за ограничений тестовой среды
  12. 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
  13. 13. Спасибо Алексей Рагозин alexey.ragozin@db.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×