В докладе я расскажу о следующем:
+ почему тема доклада не оговорка, а абсолютно реальная вещь;
+ что можно извлечь из результатов теста помимо «да/нет»;
+ в каких случаях «количество» = «качество»;
+ когда «один в поле не воин»;
+ немного о том, зачем тестировщику нужна матстатистика;
+ как избежать случайностей в результатах;
+ «буря в стакане» или масштабируем highload в docker/openvz;
+ почему фиксация запросов в тестах приводит к фиксации сервиса на продакшене;
+ а также всё вышеперечисленное на примерах наших проектов.
2. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
3. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
4. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
5. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
6. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Расскажу...
7. Кто я?
• Специалист по тестированию в компании 2ГИС
• Больше двух лет работаю в команде Unix.
8. Кто я?
• Специалист по тестированию в компании 2ГИС
• Больше двух лет работаю в команде Unix.
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 лет в запасе
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, не забываем про кэширование
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. • Что можно извлечь из тестов
• Почему результаты одиночного теста не показательны
• Как не потеряться среди огромного количества тестов
• Какими инструментами вообще всё это можно сделать
• И что из этого должно получиться
Сегодня я рассказал...