SlideShare a Scribd company logo
1 of 76
Download to read offline
Илья Пастушков
Функциональное тестирование
высоконагруженных проектов
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
Кто я?
• Специалист по тестированию в компании 2ГИС
• Больше двух лет работаю в команде Unix.
Кто я?
• Специалист по тестированию в компании 2ГИС
• Больше двух лет работаю в команде Unix.
Чем занимается
команда Unix
Наши сервисы
• Unit-тесты
• Регрессия
• Нагрузочные
• Функциональные
• Автотесты
Тестирование
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Тестирование самолётов
Процесс:
• Строят опытный образец
• Ставят под нагрузку
• Через 5-10 лет запускают модель в эксплуатацию
• А самолёт стоит на стенде
Даже если на тестах сломается,
у авиакомпании будет 5-10 лет в запасе
Поисковые сервисы
2014
• Сбербанк
Аптеки
Кафе
Почта
Такси
•
•
•
•
2015
• Парикмахерские
Аптеки
Почта
Кафе
Супермаркеты
•
•
•
•
Серверы обновлений
2014
• Android 4
iOS 7
Windows 8
•
•
2015
• Android 6
iOS 9
Windows 10
•
•
Тестирование
Функциональные тесты важны даже для highload
Проблемы:
• "Проблема 34%"
• Запрос пришёл и застрял
Тестирование
Функциональные тесты важны даже для highload
Проблемы:
• "Проблема 34%"
• Запрос пришёл и застрял
Тестирование
Функциональные тесты важны даже для highload
Проблемы:
• "Проблема 34%"
• Запрос пришёл и застрял
Функциональные
тесты
Friend or foe? Да или нет?
А если подумать?
Время
• время отклика сервера
• время получения ответа клиентом
• время отклика компонент
Время
• время отклика сервера
• время получения ответа клиентом
• время отклика компонент
Время
• время отклика сервера
• время получения ответа клиентом
• время отклика компонент
Время. Откуда?
• логи
• мониторинг
• сами
Время. Откуда?
• логи
• мониторинг
• сами
Время. Откуда?
• логи
• мониторинг
• сами
Утилизация ресурсов
• CPU usage
• Memory usage
• i/o per second
• network latency
Итог
Всё это может происходить п
• кто-то кошмарит соседей по
шакалы сжимают, тестеры
• перебои с сетью
не было ни единого разрыва
visual studio
отому что:
виртуалке
нагружают, админы бэкапят
, а тут! или все обновляют
Итог
Всё это может происходить п
• кто-то кошмарит соседей по
шакалы сжимают, тестеры
• перебои с сетью
не было ни единого разрыва
visual studio
отому что:
виртуалке
нагружают, админы бэкапят
, а тут! или все обновляют
Итог
Всё это может происходить п
• кто-то кошмарит соседей по
шакалы сжимают, тестеры
• перебои с сетью
не было ни единого разрыва
visual studio
отому что:
виртуалке
нагружают, админы бэкапят
, а тут! или все обновляют
Можно держать
это в голове
Можно
мониторить
А можно
уточнить
Нужно больше
тестов
Организация тестов
• Вносим в тесты некоторую энтропию
Проверяем одно, но разными кейсами
• Мыслим не конкретными запросами, а категориями
Негативные кейсы могут быть заткнуты
исключениями
Организация тестов
• Вносим в тесты некоторую энтропию
Проверяем одно, но разными кейсами
• Мыслим не конкретными запросами, а категориями
Негативные кейсы могут быть заткнуты
исключениями
Организация тестов
• Вносим в тесты некоторую энтропию
Проверяем одно, но разными кейсами
• Мыслим не конкретными запросами, а категориями
Негативные кейсы могут быть заткнуты
исключениями
Причины рандомизации
Если сервис stateless:
• поисковый сервис N раз найдёт x по запросу y
• сервис поиска проезда выдаст N раз
маршрут x по координатам y и z
Stateless, statefull, не забываем про кэширование
Причины рандомизации
Если сервис stateless:
• поисковый сервис N раз найдёт x по запросу y
• сервис поиска проезда выдаст N раз
маршрут x по координатам y и z
Stateless, statefull, не забываем про кэширование
Причины рандомизации
Если сервис stateless:
• поисковый сервис N раз найдёт x по запросу y
• сервис поиска проезда выдаст N раз
маршрут x по координатам y и z
Stateless, statefull, не забываем про кэширование
Причины рандомизации
Если сервис stateful:
• фиксируем состояние
• GOTO предыдущий слайд
Причины рандомизации
Если сервис stateful:
• фиксируем состояние
• GOTO предыдущий слайд
Методы
• библиотека random (fuzzing)
Методы
• библиотека random
(fuzzing)
• ортогональные массивы
Методы
• библиотека random
(fuzzing)
• pairwise (комбинации пар)
Средства визуализации
• Цифры
• Графики
• Отчёты
Цифры
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ую процентиль
Цифры
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ую процентиль
Цифры
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ую процентиль
Цифры
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ую процентиль
Цифры
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ую процентиль
Графики
Я сломаль, я сломаль!
Если есть тесты, которые не сработали, то
внимательно смотрим на них:
• запрос
• время, ресурсы
• предыдущие запросы
Я сломаль, я сломаль!
Если есть тесты, которые не сработали, то
внимательно смотрим на них:
• запрос
• время, ресурсы
• предыдущие запросы
All tests passed!
All tests passed!
Если все тесты прошли -- смотрим ещё внимательнее:
• пики точёны по времени/ресурсам - смотрим внимательно
All tests passed!
Если все тесты прошли -- смотрим ещё внимательнее:
• 95ая, 98 процентиль по характеристике - лучший показатель
НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!
Пример когда среднее не показатель:
• половина запросов обрывается при соединении, те, что
проходят - превышают SLA
Итог - по среднему мы очень даже укладываемся
All tests passed!
Если все тесты прошли -- смотрим ещё внимательнее:
• 95ая, 98 процентиль по характеристике - лучший показатель
НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!
Пример когда среднее не показатель:
• половина запросов обрывается при соединении, те, что
проходят - превышают SLA
Итог - по среднему мы очень даже укладываемся
All tests passed!
Если все тесты прошли -- смотрим ещё внимательнее:
• 95ая, 98 процентиль по характеристике - лучший показатель
НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ!
Пример когда среднее не показатель:
• половина запросов обрывается при соединении, те, что
проходят - превышают SLA
Итог - по среднему мы очень даже укладываемся
Highload edition
• Нагрузку выстраиваем линейно
• Автоматизация во все поля
Зеркалируем траффик с учётом масштабирования:
• em proxy
• gor
Highload edition
• Нагрузку выстраиваем линейно
• Автоматизация во все поля
Зеркалируем траффик с учётом масштабирования:
• em proxy
• gor
Highload edition
• Нагрузку выстраиваем линейно
• Автоматизация во все поля
Зеркалируем траффик с учётом масштабирования:
• em proxy
• gor
Highload edition
• Нагрузку выстраиваем линейно
• Автоматизация во все поля
Зеркалируем траффик с учётом масштабирования:
• em proxy
• gor
Арифметика масштабирования
• Cобираем соотношения траффика-утилизации-rps
на возможных конфигурациях,
• Выстраиваем зависимость,
• На её основе вычисляем соотношение
• Можно грабить корованы функционально проверять
Арифметика масштабирования
• Cобираем соотношения траффика-утилизации-rps
на возможных конфигурациях,
• Выстраиваем зависимость,
• На её основе вычисляем соотношение
• Можно грабить корованы функционально проверять
Арифметика масштабирования
• Cобираем соотношения траффика-утилизации-rps
на возможных конфигурациях,
• Выстраиваем зависимость,
• На её основе вычисляем соотношение
• Можно грабить корованы функционально проверять
Арифметика масштабирования
• Cобираем соотношения траффика-утилизации-rps
на возможных конфигурациях,
• Выстраиваем зависимость,
• На её основе вычисляем соотношение
• Можно грабить корованы функционально проверять
• Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Сегодня я рассказал...
Вопросы?

More Related Content

What's hot

Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Ontico
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ontico
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Ontico
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)Ontico
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...Ontico
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Ontico
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Ontico
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Ontico
 

What's hot (20)

Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли..."Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
ТОП ошибок в инфраструктуре, мешающих высоким нагрузкам / Андрей Половов (Флант)
 
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
 
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
 
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 

Viewers also liked

Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)Ontico
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)Ontico
 
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)Ontico
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)Ontico
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Ontico
 
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...Ontico
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Ontico
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
 
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Ontico
 

Viewers also liked (11)

Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
 
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
«Секретные» технологии инвестиционных банков / Алексей Рагозин (Дойче Банк)
 
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)
Распределенный blockchain процессинг / Алексей Трошичев (QiWi, Rakuten)
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
 
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
A/Б-тестирование: от сегментирования до профита / Кирилл Котов (Superjob)
 
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
Строим сервисы на базе Nginx и Tarantool / Василий Сошников, Андрей Дроздов (...
 
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...
Управление производительностью на базе HP Performance Center. Опыт Альфа-банк...
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
 
Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)Continuous Integration на стероидах / Александр Акбашев (HERE)
Continuous Integration на стероидах / Александр Акбашев (HERE)
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
 
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
Artisto: опыт запуска нейросетей в production / Эдуард Тянтов (Mail.ru Group)
 

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

«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС
«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС «Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС
«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС 2ГИС Технологии
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаAleksandr Boichenko
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрикRoman Ivliev
 
Юрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаЮрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаSQADays_2009_Piter
 
Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиковSQALab
 
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Lviv Startup Club
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияSQALab
 
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьSQALab
 
И. Вахрушев "Тестирование на аутсорс", DUMP-2014
И. Вахрушев "Тестирование на аутсорс", DUMP-2014И. Вахрушев "Тестирование на аутсорс", DUMP-2014
И. Вахрушев "Тестирование на аутсорс", DUMP-2014it-people
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииSQALab
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16Andrei Solntsev
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuousSQALab
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииDeutsche Post
 
Автоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахАвтоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахIgor Khrol
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - ТестированиеYandex
 
Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Andrei Solntsev
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий СтрелюкSQALab
 

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

«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС
«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС «Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС
«Функциональное тестирование высоконагруженных проектов» – Илья Пастушков, 2ГИС
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрик
 
Uawebchallenge.yandex.tank
Uawebchallenge.yandex.tankUawebchallenge.yandex.tank
Uawebchallenge.yandex.tank
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
Юрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаЮрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услуга
 
Математика для тестировщиков
Математика для тестировщиковМатематика для тестировщиков
Математика для тестировщиков
 
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
Olexander Donchuk "AI testing in shooters: main points and hidden hazards"
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
 
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
 
И. Вахрушев "Тестирование на аутсорс", DUMP-2014
И. Вахрушев "Тестирование на аутсорс", DUMP-2014И. Вахрушев "Тестирование на аутсорс", DUMP-2014
И. Вахрушев "Тестирование на аутсорс", DUMP-2014
 
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Test-Cases: избавьтесь от тест-кейсов в тестировании
 
The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16The fast and the continuous - SQA Days 16
The fast and the continuous - SQA Days 16
 
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
 
Автоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахАвтоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектах
 
Марина Широчкина - Тестирование
Марина Широчкина - ТестированиеМарина Широчкина - Тестирование
Марина Широчкина - Тестирование
 
Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)Экономически эффективный процесс тестирования (Codefest 2015)
Экономически эффективный процесс тестирования (Codefest 2015)
 
Tao and Test Automation
Tao and Test AutomationTao and Test Automation
Tao and Test Automation
 
Виталий Стрелюк
Виталий СтрелюкВиталий Стрелюк
Виталий Стрелюк
 

More from Ontico

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Ontico
 

More from Ontico (20)

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
 

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

  • 2. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Расскажу...
  • 3. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Расскажу...
  • 4. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Расскажу...
  • 5. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Расскажу...
  • 6. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Расскажу...
  • 7. Кто я? • Специалист по тестированию в компании 2ГИС • Больше двух лет работаю в команде Unix.
  • 8. Кто я? • Специалист по тестированию в компании 2ГИС • Больше двух лет работаю в команде Unix.
  • 11. • Unit-тесты • Регрессия • Нагрузочные • Функциональные • Автотесты Тестирование
  • 12. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 13. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 14. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 15. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 16. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 17. Тестирование самолётов Процесс: • Строят опытный образец • Ставят под нагрузку • Через 5-10 лет запускают модель в эксплуатацию • А самолёт стоит на стенде Даже если на тестах сломается, у авиакомпании будет 5-10 лет в запасе
  • 18. Поисковые сервисы 2014 • Сбербанк Аптеки Кафе Почта Такси • • • • 2015 • Парикмахерские Аптеки Почта Кафе Супермаркеты • • • •
  • 19. Серверы обновлений 2014 • Android 4 iOS 7 Windows 8 • • 2015 • Android 6 iOS 9 Windows 10 • •
  • 20. Тестирование Функциональные тесты важны даже для highload Проблемы: • "Проблема 34%" • Запрос пришёл и застрял
  • 21. Тестирование Функциональные тесты важны даже для highload Проблемы: • "Проблема 34%" • Запрос пришёл и застрял
  • 22. Тестирование Функциональные тесты важны даже для highload Проблемы: • "Проблема 34%" • Запрос пришёл и застрял
  • 25. Время • время отклика сервера • время получения ответа клиентом • время отклика компонент
  • 26. Время • время отклика сервера • время получения ответа клиентом • время отклика компонент
  • 27. Время • время отклика сервера • время получения ответа клиентом • время отклика компонент
  • 28. Время. Откуда? • логи • мониторинг • сами
  • 29. Время. Откуда? • логи • мониторинг • сами
  • 30. Время. Откуда? • логи • мониторинг • сами
  • 31. Утилизация ресурсов • CPU usage • Memory usage • i/o per second • network latency
  • 32. Итог Всё это может происходить п • кто-то кошмарит соседей по шакалы сжимают, тестеры • перебои с сетью не было ни единого разрыва visual studio отому что: виртуалке нагружают, админы бэкапят , а тут! или все обновляют
  • 33. Итог Всё это может происходить п • кто-то кошмарит соседей по шакалы сжимают, тестеры • перебои с сетью не было ни единого разрыва visual studio отому что: виртуалке нагружают, админы бэкапят , а тут! или все обновляют
  • 34. Итог Всё это может происходить п • кто-то кошмарит соседей по шакалы сжимают, тестеры • перебои с сетью не было ни единого разрыва visual studio отому что: виртуалке нагружают, админы бэкапят , а тут! или все обновляют
  • 39. Организация тестов • Вносим в тесты некоторую энтропию Проверяем одно, но разными кейсами • Мыслим не конкретными запросами, а категориями Негативные кейсы могут быть заткнуты исключениями
  • 40. Организация тестов • Вносим в тесты некоторую энтропию Проверяем одно, но разными кейсами • Мыслим не конкретными запросами, а категориями Негативные кейсы могут быть заткнуты исключениями
  • 41. Организация тестов • Вносим в тесты некоторую энтропию Проверяем одно, но разными кейсами • Мыслим не конкретными запросами, а категориями Негативные кейсы могут быть заткнуты исключениями
  • 42. Причины рандомизации Если сервис stateless: • поисковый сервис N раз найдёт x по запросу y • сервис поиска проезда выдаст N раз маршрут x по координатам y и z Stateless, statefull, не забываем про кэширование
  • 43. Причины рандомизации Если сервис stateless: • поисковый сервис N раз найдёт x по запросу y • сервис поиска проезда выдаст N раз маршрут x по координатам y и z Stateless, statefull, не забываем про кэширование
  • 44. Причины рандомизации Если сервис stateless: • поисковый сервис N раз найдёт x по запросу y • сервис поиска проезда выдаст N раз маршрут x по координатам y и z Stateless, statefull, не забываем про кэширование
  • 45. Причины рандомизации Если сервис stateful: • фиксируем состояние • GOTO предыдущий слайд
  • 46. Причины рандомизации Если сервис stateful: • фиксируем состояние • GOTO предыдущий слайд
  • 48. Методы • библиотека random (fuzzing) • ортогональные массивы
  • 49. Методы • библиотека random (fuzzing) • pairwise (комбинации пар)
  • 51. Цифры 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ую процентиль
  • 52. Цифры 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ую процентиль
  • 53. Цифры 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ую процентиль
  • 54. Цифры 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ую процентиль
  • 55. Цифры 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ую процентиль
  • 57.
  • 58.
  • 59.
  • 60. Я сломаль, я сломаль! Если есть тесты, которые не сработали, то внимательно смотрим на них: • запрос • время, ресурсы • предыдущие запросы
  • 61. Я сломаль, я сломаль! Если есть тесты, которые не сработали, то внимательно смотрим на них: • запрос • время, ресурсы • предыдущие запросы
  • 63. All tests passed! Если все тесты прошли -- смотрим ещё внимательнее: • пики точёны по времени/ресурсам - смотрим внимательно
  • 64. All tests passed! Если все тесты прошли -- смотрим ещё внимательнее: • 95ая, 98 процентиль по характеристике - лучший показатель НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ! Пример когда среднее не показатель: • половина запросов обрывается при соединении, те, что проходят - превышают SLA Итог - по среднему мы очень даже укладываемся
  • 65. All tests passed! Если все тесты прошли -- смотрим ещё внимательнее: • 95ая, 98 процентиль по характеристике - лучший показатель НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ! Пример когда среднее не показатель: • половина запросов обрывается при соединении, те, что проходят - превышают SLA Итог - по среднему мы очень даже укладываемся
  • 66. All tests passed! Если все тесты прошли -- смотрим ещё внимательнее: • 95ая, 98 процентиль по характеристике - лучший показатель НИ В КОЕМ СЛУЧАЕ НЕ БРАТЬ СРЕДНЕЕ! Пример когда среднее не показатель: • половина запросов обрывается при соединении, те, что проходят - превышают SLA Итог - по среднему мы очень даже укладываемся
  • 67. Highload edition • Нагрузку выстраиваем линейно • Автоматизация во все поля Зеркалируем траффик с учётом масштабирования: • em proxy • gor
  • 68. Highload edition • Нагрузку выстраиваем линейно • Автоматизация во все поля Зеркалируем траффик с учётом масштабирования: • em proxy • gor
  • 69. Highload edition • Нагрузку выстраиваем линейно • Автоматизация во все поля Зеркалируем траффик с учётом масштабирования: • em proxy • gor
  • 70. Highload edition • Нагрузку выстраиваем линейно • Автоматизация во все поля Зеркалируем траффик с учётом масштабирования: • em proxy • gor
  • 71. Арифметика масштабирования • Cобираем соотношения траффика-утилизации-rps на возможных конфигурациях, • Выстраиваем зависимость, • На её основе вычисляем соотношение • Можно грабить корованы функционально проверять
  • 72. Арифметика масштабирования • Cобираем соотношения траффика-утилизации-rps на возможных конфигурациях, • Выстраиваем зависимость, • На её основе вычисляем соотношение • Можно грабить корованы функционально проверять
  • 73. Арифметика масштабирования • Cобираем соотношения траффика-утилизации-rps на возможных конфигурациях, • Выстраиваем зависимость, • На её основе вычисляем соотношение • Можно грабить корованы функционально проверять
  • 74. Арифметика масштабирования • Cобираем соотношения траффика-утилизации-rps на возможных конфигурациях, • Выстраиваем зависимость, • На её основе вычисляем соотношение • Можно грабить корованы функционально проверять
  • 75. • Что можно извлечь из тестов • Почему результаты одиночного теста не показательны • Как не потеряться среди огромного количества тестов • Какими инструментами вообще всё это можно сделать • И что из этого должно получиться Сегодня я рассказал...