33
Григорий Липин Инженер по тестированию Субботник в Екатеринбурге, 20.09.14 Автоматизация нагрузочного тестирования

Автоматизация нагрузочного тестирования — Григорий Липин

  • Upload
    yandex

  • View
    372

  • Download
    1

Embed Size (px)

DESCRIPTION

Как нагрузочное тестирование происходит в Яндексе и как можно его автоматизировать с помощью инструмента Яндекс.Танк.

Citation preview

Page 1: Автоматизация нагрузочного тестирования — Григорий Липин

Григорий ЛипинИнженер по тестированию

Субботник в Екатеринбурге, 20.09.14

Автоматизация нагрузочноготестирования

Page 2: Автоматизация нагрузочного тестирования — Григорий Липин

2

Вступление

• Путь от ручных нагрузочных тестов к автоматическим

Page 3: Автоматизация нагрузочного тестирования — Григорий Липин

3 Тренд автоматизации

Page 4: Автоматизация нагрузочного тестирования — Григорий Липин

4

Автоматизация НТ

Автоматическое управление:

• Запуск теста

• Остановка теста

• Репортинг результатов

Как запускать автоматически?

Page 5: Автоматизация нагрузочного тестирования — Григорий Липин

5

Инструмент автоматизации

• Мы используем Jenkins!– Opensource– Большое количество плагинов– Возможность написать свои плагины

Page 6: Автоматизация нагрузочного тестирования — Григорий Липин

6 Тестовый стенд

Page 7: Автоматизация нагрузочного тестирования — Григорий Липин

7

Запуск нагрузочного теста

Page 8: Автоматизация нагрузочного тестирования — Григорий Липин

8

Запуск нагрузочного теста - template

Page 9: Автоматизация нагрузочного тестирования — Григорий Липин

9

Консольный вывод танка

Page 10: Автоматизация нагрузочного тестирования — Григорий Липин

10

Консольный вывод

21:42:43 INFO: Finishing test...

21:42:43 INFO: Finishing monitoring21:42:43 INFO: Post-processing test...21:42:43 INFO: Artifacts dir: logs/121:42:43 INFO: Done performing test with code 0Finished: SUCCESS

Page 11: Автоматизация нагрузочного тестирования — Григорий Липин

11

Автоматизация НТ

• Умеем запускать

• Останавливать?

Page 12: Автоматизация нагрузочного тестирования — Григорий Липин

12

Автостопы

• HTTP коды ответа

• Сетевые коды ответа

• Превышение заданного порога для времени ответа сервиса

• Автостоп по метрикам мониторинга

http://yandextank.readthedocs.org

Какие автостопы использовать?

Page 13: Автоматизация нагрузочного тестирования — Григорий Липин

13

Требования

Пусть наш сервис:

• Выдерживает нагрузку 500 rps

• 95% квантиль < 10мс

• Ошибок менее 1%

Как обеспечить проверку требований?

Page 14: Автоматизация нагрузочного тестирования — Григорий Липин

14

Пример автостопов

• quantile(95, 10ms, 10s), код выхода: 21

• http(5xx, 1%, 10s), код выхода: 22

• http(4xx, 1%, 10s), код выхода: 22

• net(1хх, 1%,10s), код выхода: 23

Page 15: Автоматизация нагрузочного тестирования — Григорий Липин

15

Сработал автостоп

22:19:00 INFO: Autostop criteria requested test stop: Percentile 95.0 higher than 10ms for 10s, since 2013-10-22 22:18:49

22:19:00 INFO: Finishing test...

22:19:00 WARNING: Terminating phantom process with PID 31329

22:19:00 INFO: Finishing monitoring

22:19:00 INFO: Post-processing test...

22:19:00 INFO: Artifacts dir: logs/2

22:19:00 INFO: Done performing test with code 21

Build step 'Execute shell' marked build as failure

Finished: FAILURE

Page 16: Автоматизация нагрузочного тестирования — Григорий Липин

16

Build History

Page 17: Автоматизация нагрузочного тестирования — Григорий Липин

18

Мониторинг в Яндекс.Танке

• Ресурсы: CPU, Disk, Net, Memory...

• Custom метрики

• Несколько серверов одновременно

Page 18: Автоматизация нагрузочного тестирования — Григорий Липин

19

Автостоп по метрикам мониторинга

• Проверка на memory leak

• metric_lower(Backend.host, Mem_free, 500,20s)

Page 19: Автоматизация нагрузочного тестирования — Григорий Липин

20

Автоматизация НТ

• Умеем запускать

• Умеем останавливать

• Анализ?

Page 20: Автоматизация нагрузочного тестирования — Григорий Липин

21

Анализ

• Удобное отображение в Jenkins

• Offline-отчет Яндекс.Танка

Page 21: Автоматизация нагрузочного тестирования — Григорий Липин

22

Offline-отчет

Page 22: Автоматизация нагрузочного тестирования — Григорий Липин

23

Offline-отчет

Page 23: Автоматизация нагрузочного тестирования — Григорий Липин

24

Автоматизация НТ

• Умеем запускать

• Умеем останавливать

• Умеем анализировать

• Репортинг?

Page 24: Автоматизация нагрузочного тестирования — Григорий Липин

25

Репортинг

• Email– Каждый failed build– Первый successful после failed– Первый unstable после successful

• Jabber

Page 25: Автоматизация нагрузочного тестирования — Григорий Липин

26

Автоматизация НТ

• Умеем запускать

• Умеем останавливать

• Умеем анализировать

• Репортинг

• Когда запускать?

Page 26: Автоматизация нагрузочного тестирования — Григорий Липин

27

Триггеры

Page 27: Автоматизация нагрузочного тестирования — Григорий Липин

28

События

Page 28: Автоматизация нагрузочного тестирования — Григорий Липин

30

Событийный триггер

Page 29: Автоматизация нагрузочного тестирования — Григорий Липин

31

Мониторинг и автостоп

• Метрика мониторинга<Custom measure="call" label="Jams"> curl http://maps.yandex.ru/Jams</Custom>

• Автостоп metric_lower(tank.host,Jams,7,10s)

• Переопределение кода выхода: RES=$?

if [[ $RES == 31 ]] then RES=0

exit $RES

Page 30: Автоматизация нагрузочного тестирования — Григорий Липин

32

Автоматизация НТ

• Умеем запускать

• Умеем останавливать

• Умеем анализировать

• Умеем репортить

• Когда запускать

• Какие задачи решаем?

Page 31: Автоматизация нагрузочного тестирования — Григорий Липин

33

Автоматизация!

Решаем задачи:

• Разработчикам удобно запускать НТ

• Легко выполняем регрессионные нагрузочные тесты

Page 32: Автоматизация нагрузочного тестирования — Григорий Липин

35

Заводите Автоматизацию!

Есть вопросы?

• Jenkins - jenkins-ci.org

• Наш клуб в Я.ру: clubs.ya.ru/yandex-tank/

• GitHub: github.com/yandex-load/yandex-tank/

Page 33: Автоматизация нагрузочного тестирования — Григорий Липин

Григорий Липин

Инженер по тестированию

8 (903) 586-76-90

[email protected]

Спасибо