Функциональное тестирование высоконагруженных...

76
Илья Пастушков Функциональное тестирование высоконагруженных проектов

Upload: ontico

Post on 16-Apr-2017

624 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Илья Пастушков

Функциональное тестированиевысоконагруженных проектов

Page 2: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Расскажу...

Page 3: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Расскажу...

Page 4: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Расскажу...

Page 5: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Расскажу...

Page 6: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Расскажу...

Page 7: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Кто я?

• Специалист по тестированию в компании 2ГИС

• Больше двух лет работаю в команде Unix.

Page 8: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Кто я?

• Специалист по тестированию в компании 2ГИС

• Больше двух лет работаю в команде Unix.

Page 9: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Чем занимаетсякоманда Unix

Page 10: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Наши сервисы

Page 11: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Unit-тесты

• Регрессия

• Нагрузочные

• Функциональные

• Автотесты

Тестирование

Page 12: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 13: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 14: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 15: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 16: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 17: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование самолётов

Процесс:

• Строят опытный образец

• Ставят под нагрузку

• Через 5-10 лет запускают модель в эксплуатацию

• А самолёт стоит на стенде

Даже если на тестах сломается,у авиакомпании будет 5-10 лет в запасе

Page 18: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Поисковые сервисы

2014

• Сбербанк

Аптеки

Кафе

Почта

Такси

2015

• Парикмахерские

Аптеки

Почта

Кафе

Супермаркеты

Page 19: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Серверы обновлений

2014

• Android 4

iOS 7

Windows 8

2015

• Android 6

iOS 9

Windows 10

Page 20: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование

Функциональные тесты важны даже для highload

Проблемы:

• "Проблема 34%"

• Запрос пришёл и застрял

Page 21: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование

Функциональные тесты важны даже для highload

Проблемы:

• "Проблема 34%"

• Запрос пришёл и застрял

Page 22: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Тестирование

Функциональные тесты важны даже для highload

Проблемы:

• "Проблема 34%"

• Запрос пришёл и застрял

Page 23: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Функциональныетесты

Friend or foe? Да или нет?

Page 24: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

А если подумать?

Page 25: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время

• время отклика сервера

• время получения ответа клиентом

• время отклика компонент

Page 26: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время

• время отклика сервера

• время получения ответа клиентом

• время отклика компонент

Page 27: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время

• время отклика сервера

• время получения ответа клиентом

• время отклика компонент

Page 28: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время. Откуда?

• логи

• мониторинг

• сами

Page 29: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время. Откуда?

• логи

• мониторинг

• сами

Page 30: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Время. Откуда?

• логи

• мониторинг

• сами

Page 31: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Утилизация ресурсов

• CPU usage

• Memory usage

• i/o per second

• network latency

Page 32: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Итог

Всё это может происходить п

• кто-то кошмарит соседей по

шакалы сжимают, тестеры

• перебои с сетью

не было ни единого разрыва

visual studio

отому что:

виртуалке

нагружают, админы бэкапят

, а тут! или все обновляют

Page 33: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Итог

Всё это может происходить п

• кто-то кошмарит соседей по

шакалы сжимают, тестеры

• перебои с сетью

не было ни единого разрыва

visual studio

отому что:

виртуалке

нагружают, админы бэкапят

, а тут! или все обновляют

Page 34: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Итог

Всё это может происходить п

• кто-то кошмарит соседей по

шакалы сжимают, тестеры

• перебои с сетью

не было ни единого разрыва

visual studio

отому что:

виртуалке

нагружают, админы бэкапят

, а тут! или все обновляют

Page 35: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Можно держатьэто в голове

Page 36: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Можномониторить

Page 37: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

А можно уточнить

Page 38: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Нужно большетестов

Page 39: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Организация тестов

• Вносим в тесты некоторую энтропию

Проверяем одно, но разными кейсами

• Мыслим не конкретными запросами, а категориями

Негативные кейсы могут быть заткнутыисключениями

Page 40: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Организация тестов

• Вносим в тесты некоторую энтропию

Проверяем одно, но разными кейсами

• Мыслим не конкретными запросами, а категориями

Негативные кейсы могут быть заткнутыисключениями

Page 41: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Организация тестов

• Вносим в тесты некоторую энтропию

Проверяем одно, но разными кейсами

• Мыслим не конкретными запросами, а категориями

Негативные кейсы могут быть заткнутыисключениями

Page 42: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Причины рандомизации

Если сервис stateless:

• поисковый сервис N раз найдёт x по запросу y

• сервис поиска проезда выдаст N раз

маршрут x по координатам y и z

Stateless, statefull, не забываем про кэширование

Page 43: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Причины рандомизации

Если сервис stateless:

• поисковый сервис N раз найдёт x по запросу y

• сервис поиска проезда выдаст N раз

маршрут x по координатам y и z

Stateless, statefull, не забываем про кэширование

Page 44: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Причины рандомизации

Если сервис stateless:

• поисковый сервис N раз найдёт x по запросу y

• сервис поиска проезда выдаст N раз

маршрут x по координатам y и z

Stateless, statefull, не забываем про кэширование

Page 45: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Причины рандомизации

Если сервис stateful:

• фиксируем состояние

• GOTO предыдущий слайд

Page 46: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Причины рандомизации

Если сервис stateful:

• фиксируем состояние

• GOTO предыдущий слайд

Page 47: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Методы

• библиотека random (fuzzing)

Page 48: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Методы

• библиотека random

(fuzzing)

• ортогональные массивы

Page 49: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Методы

• библиотека random

(fuzzing)

• pairwise (комбинации пар)

Page 50: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Средства визуализации

• Цифры

• Графики

• Отчёты

Page 51: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Цифры

sort -n input.txt > sorted.txt

awk '{all[NR] = $0} END

{print all[int(NR*0.95 - 0.5)]}' sorted.txt

???

PROFIT!!!

01.

02.

03.

04.

На выходе получим величину, которая больше чем в 95%запросов, т.е. 95ую процентиль

Page 52: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Цифры

sort -n input.txt > sorted.txt

awk '{all[NR] = $0} END

{print all[int(NR*0.95 - 0.5)]}' sorted.txt

???

PROFIT!!!

01.

02.

03.

04.

На выходе получим величину, которая больше чем в 95%запросов, т.е. 95ую процентиль

Page 53: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Цифры

sort -n input.txt > sorted.txt

awk '{all[NR] = $0} END

{print all[int(NR*0.95 - 0.5)]}' sorted.txt

???

PROFIT!!!

01.

02.

03.

04.

На выходе получим величину, которая больше чем в 95%запросов, т.е. 95ую процентиль

Page 54: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Цифры

sort -n input.txt > sorted.txt

awk '{all[NR] = $0} END

{print all[int(NR*0.95 - 0.5)]}' sorted.txt

???

PROFIT!!!

01.

02.

03.

04.

На выходе получим величину, которая больше чем в 95%запросов, т.е. 95ую процентиль

Page 55: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Цифры

sort -n input.txt > sorted.txt

awk '{all[NR] = $0} END

{print all[int(NR*0.95 - 0.5)]}' sorted.txt

???

PROFIT!!!

01.

02.

03.

04.

На выходе получим величину, которая больше чем в 95%запросов, т.е. 95ую процентиль

Page 56: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Графики

Page 57: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Page 58: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Page 59: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Page 60: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Я сломаль, я сломаль!

Если есть тесты, которые не сработали, то

внимательно смотрим на них:

• запрос

• время, ресурсы

• предыдущие запросы

Page 61: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Я сломаль, я сломаль!

Если есть тесты, которые не сработали, то

внимательно смотрим на них:

• запрос

• время, ресурсы

• предыдущие запросы

Page 62: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

All tests passed!

Page 63: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

All tests passed!

Если все тесты прошли -- смотрим ещё внимательнее:

• пики точёны по времени/ресурсам - смотрим внимательно

Page 64: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

All tests passed!

Если все тесты прошли -- смотрим ещё внимательнее:

• 95ая, 98 процентиль по характеристике - лучший показатель

НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!

Пример когда среднее не показатель:

• половина запросов обрывается при соединении, те, что

проходят - превышают SLA

Итог - по среднему мы очень даже укладываемся

Page 65: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

All tests passed!

Если все тесты прошли -- смотрим ещё внимательнее:

• 95ая, 98 процентиль по характеристике - лучший показатель

НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!

Пример когда среднее не показатель:

• половина запросов обрывается при соединении, те, что

проходят - превышают SLA

Итог - по среднему мы очень даже укладываемся

Page 66: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

All tests passed!

Если все тесты прошли -- смотрим ещё внимательнее:

• 95ая, 98 процентиль по характеристике - лучший показатель

НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!

Пример когда среднее не показатель:

• половина запросов обрывается при соединении, те, что

проходят - превышают SLA

Итог - по среднему мы очень даже укладываемся

Page 67: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Highload edition

• Нагрузку выстраиваем линейно

• Автоматизация во все поля

Зеркалируем траффик с учётом масштабирования:

• em proxy

• gor

Page 68: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Highload edition

• Нагрузку выстраиваем линейно

• Автоматизация во все поля

Зеркалируем траффик с учётом масштабирования:

• em proxy

• gor

Page 69: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Highload edition

• Нагрузку выстраиваем линейно

• Автоматизация во все поля

Зеркалируем траффик с учётом масштабирования:

• em proxy

• gor

Page 70: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Highload edition

• Нагрузку выстраиваем линейно

• Автоматизация во все поля

Зеркалируем траффик с учётом масштабирования:

• em proxy

• gor

Page 71: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Арифметика масштабирования

• Cобираем соотношения траффика-утилизации-rps

на возможных конфигурациях,

• Выстраиваем зависимость,

• На её основе вычисляем соотношение

• Можно грабить корованы функционально проверять

Page 72: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Арифметика масштабирования

• Cобираем соотношения траффика-утилизации-rps

на возможных конфигурациях,

• Выстраиваем зависимость,

• На её основе вычисляем соотношение

• Можно грабить корованы функционально проверять

Page 73: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Арифметика масштабирования

• Cобираем соотношения траффика-утилизации-rps

на возможных конфигурациях,

• Выстраиваем зависимость,

• На её основе вычисляем соотношение

• Можно грабить корованы функционально проверять

Page 74: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Арифметика масштабирования

• Cобираем соотношения траффика-утилизации-rps

на возможных конфигурациях,

• Выстраиваем зависимость,

• На её основе вычисляем соотношение

• Можно грабить корованы функционально проверять

Page 75: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

• Что можно извлечь из тестов

• Почему результаты одиночного теста не показательны

• Как не потеряться среди огромного количества тестов

• Какими инструментами вообще всё это можно сделать

• И что из этого должно получиться

Сегодня я рассказал...

Page 76: Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)

Вопросы?