Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Готовим тестовые данные и сервируем отчёт по тестированию производительности

Готовим тестовые данные и сервируем отчёт по тестированию производительности

Тезисы

Рассказ об особенностях подготовки тестовых данных для тестов производительности новых микросервисов в банке. Поделюсь наработками по генерации тестовых данных в PostgreSQL и их влиянии на результат тестирования. Обсудим, что включить в отчёт по тестированию производительности и без чего в нем не обойтись. Также расскажу о наработках по сбору метрик в InfluxDB и их визуализации в Grafana.

Аудитория и уровень

Доклад будет интересен инженерам по тестированию производительности, начинающим и опытным. Тем, кто ставит задачи по тестированию производительности, пригодится информация о затратах на подготовку тестовых данных и их сокращении. А тем, кто получает результат от этой увлекательной работы в виде отчётов и дефектов, будет полезно узнать, что же может быть в отчёте по тестированию.

Доклад готовился для
CodeFest Online 2020, который прошел в формате Online-мероприятия

polarnik

May 30, 2020
Tweet

More Decks by polarnik

Other Decks in Programming

Transcript

  1. Готовим тестовые данные и сервируем отчет по тестированию Рассказ о

    данных для нагрузочных тестов, об отчетах и метриках Вячеслав Смирнов Эксперт по тестированию Райффайзенбанк
  2. Готовим тестовые данные 3 Методика Профиль нагрузки, требования Подготовка данных

    и стенда Изучение работы с системой Разработка тестов и заглушек Запуск тестов Анализ метрик и логов Отчёт и инструкции
  3. Готовим тестовые данные: найдем 40% багов 4 Методика Профиль нагрузки,

    требования Подготовка данных и стенда Изучение работы с системой Разработка тестов и заглушек Запуск тестов Анализ метрик и логов Отчёт и инструкции
  4. Сервируем отчет по тестированию 5 Методика Профиль нагрузки, требования Изучение

    работы с системой Разработка тестов и заглушек Запуск тестов Анализ метрик и логов Отчёт и инструкции Отчёт и инструкции Подготовка данных и стенда
  5. Сервируем отчет по тестированию: минус день 6 Методика Профиль нагрузки,

    требования Изучение работы с системой Разработка тестов и заглушек Запуск тестов Анализ метрик и логов Отчёт и инструкции Отчёт и инструкции Подготовка данных и стенда
  6. Содержание 1. Подготовка данных для микросервисов 2. Подготовка данных для

    тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности 7 Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  7. Содержание 1. Подготовка данных для микросервисов 2. Подготовка данных для

    тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности 8 Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  8. Содержание 1. Подготовка данных для микросервисов 2. Подготовка данных для

    тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности 9 Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  9. Содержание 1. Подготовка данных для микросервисов 2. Подготовка данных для

    тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности 10 Данные для сервисов
  10. Подготовка данных для микросервисов Особенности подготовки данных для новых микросервисов:

    • для новых микросервисов тестовые данные взять неоткуда; • для тестов производительности данных должно быть много; • тестовые данные должны быть корректными, идеальными; • нужно генерировать данные для нескольких систем. 11 Данные для сервисов
  11. Подготовка данных для микросервисов Особенности подготовки данных для новых микросервисов:

    • для новых микросервисов тестовые данные взять неоткуда; • для тестов производительности данных должно быть много; • тестовые данные должны быть корректными, идеальными; • нужно генерировать данные для нескольких систем. 12 Данные для сервисов
  12. Подготовка данных для микросервисов Особенности подготовки данных для новых микросервисов:

    • для новых микросервисов тестовые данные взять неоткуда; • для тестов производительности данных должно быть много; • тестовые данные должны быть корректными, идеальными; • нужно генерировать данные для нескольких систем. 25 Данные для сервисов
  13. Пример запроса импорта CSV-файла COPY table_name [ ( column_name [,

    ...] ) ] FROM 'filename' [ [ WITH ] [ DELIMITER [ AS ] 'delimiter_character' ] [ NULL [ AS ] 'null_string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote_character' ] [ ESCAPE [ AS ] 'escape_character' ] [ FORCE NOT NULL column_name [, ...] ] ] ] https://www.postgresql.org/docs/current/sql-copy.html 31 Данные для сервисов
  14. Подготовка данных для микросервисов Особенности подготовки данных для новых микросервисов:

    • для новых микросервисов тестовые данные взять неоткуда; • для тестов производительности данных должно быть много; • тестовые данные должны быть корректными, идеальными; • нужно генерировать данные для нескольких систем. 39 Данные для сервисов
  15. Данные проверяются с разной точностью 45 Уровень Язык Тщательность проверок

    Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  16. Интерфейс: выпадающие списки значений 46 Уровень Язык Тщательность проверок Интерфейс

    JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  17. Интерфейс: выпадающие списки значений, очень сложно ошибиться в данных 47

    Уровень Язык Тщательность проверок Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  18. Уровень API: проверка бизнес-логики 48 Уровень Язык Тщательность проверок Интерфейс

    JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  19. Уровень API: проверка бизнес-логики, сложно ошибиться в данных 49 Уровень

    Язык Тщательность проверок Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  20. Уровень SQL: только проверка целостности 50 Уровень Язык Тщательность проверок

    Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  21. Уровень SQL: только проверка целостности, легко ошибиться в данных 51

    Уровень Язык Тщательность проверок Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  22. А данные ломать нельзя Проверка формата: • ФИО • email

    • номера банковского счёта • кода страны, валюты, операции • номера ИНН, КПП, ОГРН, СНИЛС, ... 58 Данные для сервисов
  23. Сломанные данные могут не отображаться на уровне интерфейса и вызывать

    ошибки 59 Уровень Язык Тщательность проверок Интерфейс JavaScript Выпадающие списки Сервер приложений Java, Scala Бизнес-правила Хранение данных SQL Constraint Целостность Данные для сервисов
  24. Подготовка данных для микросервисов Особенности подготовки данных для новых микросервисов:

    • для новых микросервисов тестовые данные взять неоткуда; • для тестов производительности данных должно быть много; • тестовые данные должны быть корректными, идеальными; • нужно генерировать данные для нескольких систем. 63 Данные для сервисов
  25. Random для идентификаторов запрещён 71 Документы клиентов компании № 77777

    Данные для сервисов Клиенты компании № 22222 Компания № 11111
  26. Подготовка данных для микросервисов 1. Для новых сервисов тестовые данные

    генерируются. 2. Основа генерации больших данных — хранимые процедуры, а импорт из CSV и работа с API лишь помогают. 3. Для старых микросервисов данные тоже генерируются, деперсонализация дорога и сложна. 4. Для генерации согласованных и предсказуемых данных не используется Random, используется числовой идентификатор объекта и математические преобразование. 73 Данные для сервисов
  27. Подготовка данных для микросервисов 1. Для новых сервисов тестовые данные

    генерируются. 2. Основа генерации больших данных — хранимые процедуры, а импорт из CSV и работа с API лишь помогают. 3. Для старых микросервисов данные тоже генерируются, деперсонализация дорога и сложна. 4. Для генерации согласованных и предсказуемых данных не используется Random, используется числовой идентификатор объекта и математические преобразование. 74 Данные для сервисов
  28. Подготовка данных для микросервисов 1. Для новых сервисов тестовые данные

    генерируются. 2. Основа генерации больших данных — хранимые процедуры, а импорт из CSV и работа с API лишь помогают. 3. Для старых микросервисов данные тоже генерируются, деперсонализация дорога и сложна. 4. Для генерации согласованных и предсказуемых данных не используется Random, используется числовой идентификатор объекта и математические преобразование. 75 Данные для сервисов
  29. Подготовка данных для микросервисов 1. Для новых сервисов тестовые данные

    генерируются. 2. Основа генерации больших данных — хранимые процедуры, а импорт из CSV и работа с API лишь помогают. 3. Для старых микросервисов данные тоже генерируются, деперсонализация дорога и сложна. 4. Для генерации согласованных и предсказуемых данных не используется Random, используется числовой идентификатор объекта и математические преобразование. 76 Данные для сервисов
  30. Подготовка данных для микросервисов 1. Для новых сервисов тестовые данные

    генерируются. 2. Основа генерации больших данных — хранимые процедуры, а импорт из CSV и работа с API лишь помогают. 3. Для старых микросервисов данные тоже генерируются, деперсонализация дорога и сложна. 4. Для генерации согласованных и предсказуемых данных не используется Random, используется числовой идентификатор объекта и математические преобразование. 77 Данные для сервисов
  31. Содержание 78 Данные для сервисов Данные для нагрузки 1. Подготовка

    данных для микросервисов 2. Подготовка данных для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности
  32. Подготовка данных для нагрузки Особенности тестов производительности: • тесты должны

    быть атомарными; • данные должны быть одноразовыми; • данные не должны пересекаться между двумя агентами; • тесты надо проводить часто, данные нужно готовить быстро. 79 Данные для сервисов Данные для нагрузки
  33. Подготовка данных для нагрузки Особенности тестов производительности: • тесты должны

    быть атомарными; • данные должны быть одноразовыми; • данные не должны пересекаться между двумя агентами; • тесты надо проводить часто, данные нужно готовить быстро. 80 Данные для сервисов Данные для нагрузки
  34. Разделяем тесты на сценарии 85 Сценарий Почтовый домен Login @ok.ru

    Try_fail_password @fail.ru Reset_password @pass.ru Данные для сервисов Данные для нагрузки
  35. Выделяем маркеры тестовых данных 86 Сценарий Почтовый домен Login @ok.ru

    Try_fail_password @fail.ru Reset_password @pass.ru Данные для сервисов Данные для нагрузки
  36. Разделяем данные по сценариям и маркерам 87 Сценарий Шаблоны Количество

    Login loadUser{N}@ok.ru users 100k history 300k Try_fail_password incorrect{N}@fail.ru users 50k history 50k Reset_password u{N}[email protected] users 10k history 50k Данные для сервисов Данные для нагрузки
  37. Просчитываем количество данных 88 Сценарий Шаблоны Количество Login loadUser{N}@ok.ru users

    100k history 300k Try_fail_password incorrect{N}@fail.ru users 50k history 50k Reset_password u{N}[email protected] users 10k history 50k Данные для сервисов Данные для нагрузки
  38. Фиксируем профиль данных в методике 89 Сценарий Шаблоны Количество Login

    loadUser{N}@ok.ru users 100k history 300k Try_fail_password incorrect{N}@fail.ru users 50k history 50k Reset_password u{N}[email protected] users 10k history 50k Методика тестирования Данные для сервисов Данные для нагрузки
  39. Подготовка данных для нагрузки Особенности тестов производительности: • тесты должны

    быть атомарными; • данные должны быть одноразовыми; • данные не должны пересекаться между двумя агентами; • тесты надо проводить часто, данные нужно готовить быстро. 90 Данные для сервисов Данные для нагрузки
  40. Дважды войти с паролем Passw можно 91 Сценарий Описание Login

    Вход по логину и паролю Данные для сервисов Данные для нагрузки
  41. Дважды ошибиться с паролем pASSW можно 92 Сценарий Описание Login

    Вход по логину и паролю Try_fail_password Попытка входа с неверным паролем Данные для сервисов Данные для нагрузки
  42. Дважды сбросить пароль можно 93 Сценарий Описание Login Вход по

    логину и паролю Try_fail_password Попытка входа с неверным паролем Reset_password Сброс пароля Данные для сервисов Данные для нагрузки
  43. Дважды сменить пароль Passw нельзя 94 Сценарий Описание Login Вход

    по логину и паролю Try_fail_password Попытка входа с неверным паролем Reset_password Сброс пароля Change_password Смена пароля Данные для сервисов Данные для нагрузки
  44. Дважды сделать первый вход нельзя 95 Сценарий Описание Login Вход

    по логину и паролю Try_fail_password Попытка входа с неверным паролем Reset_password Сброс пароля Change_password Смена пароля First_Login Первый вход в систему Данные для сервисов Данные для нагрузки
  45. Данные должны быть одноразовыми Иначе не получится протестировать: 1. Если

    начать менять изменённый пароль, то будет ошибка. 2. Если повторно зайти пользователем, которого ждут шаги первого входа, то сценарий не выполнится. 3. ... 96 Данные для сервисов Данные для нагрузки
  46. Подготовка данных для нагрузки Особенности тестов производительности: • тесты должны

    быть атомарными; • данные должны быть одноразовыми; • данные не должны пересекаться между двумя агентами; • тесты надо проводить часто, данные нужно готовить быстро. 97 Данные для сервисов Данные для нагрузки
  47. Агенты не должны мешать друг-другу 101 Данные для сервисов Данные

    для нагрузки Работа без конфликтов и блокировок
  48. Virtual Table Server (VTS) из HP LoadRunner 106 Данные для

    сервисов Данные для нагрузки
  49. Выбирая имя файла по текущему имени хоста 111 Имя файла

    = Имя агента Данные для сервисов Данные для нагрузки
  50. CSV-файлы — максимально просто и быстро 113 Мой выбор: •

    просто • быстро Данные для сервисов Данные для нагрузки
  51. Подготовка данных для нагрузки Особенности тестов производительности: • тесты должны

    быть атомарными; • данные должны быть одноразовыми; • данные не должны пересекаться между двумя агентами; • тесты надо проводить часто, данные нужно готовить быстро. 114 Данные для сервисов Данные для нагрузки
  52. За часовой тест меняется малая часть данных 116 100 000

    объектов в тесте всего 1 000 000 объектов в БД Данные для сервисов Данные для нагрузки
  53. За часовой тест меняется малая часть данных 117 10 000

    объектов в тесте изменено 1 000 000 объектов в БД Данные для сервисов Данные для нагрузки
  54. За часовой тест меняется малая часть данных 118 1% объектов

    БД изменен Данные для сервисов Данные для нагрузки 1 000 000 объектов в БД
  55. Ресурсы для восстановления 119 Восстановление Длительность Место Сгенерировать заново 1

    неделя мало Восстановить full backup 1 день немного Откатить журнал транзакций 1 час много Обновить изменённые 1 час мало Данные для сервисов Данные для нагрузки
  56. Обновить изменённые записи — проще всего 124 Восстановление Длительность Место

    Сгенерировать заново 1 неделя Восстановить full backup 1 день немного Откатить журнал транзакций 1 час много Обновить изменённые 1 час мало Данные для сервисов Данные для нагрузки
  57. Подготовка данных для нагрузки 1. Для каждого сценария в тесте

    производительности должен быть отдельный пул тестовых данных. 2. Пул тестовых данных должен быть без повторного использования. И читать данные из CSV быстрее всего. 3. SQL UPDATE — самый простой способ восстановления данных, при экономии места на дисках. 125 Данные для сервисов Данные для нагрузки
  58. Подготовка данных для нагрузки 1. Для каждого сценария в тесте

    производительности должен быть отдельный пул тестовых данных. 2. Пул тестовых данных должен быть без повторного использования. И читать данные из CSV быстрее всего. 3. SQL UPDATE — самый простой способ восстановления данных, при экономии места на дисках. 126 Данные для сервисов Данные для нагрузки
  59. Подготовка данных для нагрузки 1. Для каждого сценария в тесте

    производительности должен быть отдельный пул тестовых данных. 2. Пул тестовых данных должен быть без повторного использования. И читать данные из CSV быстрее всего. 3. SQL UPDATE — самый простой способ восстановления данных, при экономии места на дисках. 127 Данные для сервисов Данные для нагрузки
  60. Содержание 128 1. Подготовка данных для микросервисов 2. Подготовка данных

    для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности Данные для сервисов Данные для нагрузки Генерация с Postgres
  61. Генерация данных с PostgreSQL 129 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Особенности генерации данных с PostgreSQL: • структура генератора данных; • подходы для генерации значений; • ускорение вставки значений.
  62. Шаблоны и количество передаются через в хранимую процедуру генерации 130

    load_fill_database_{scenario} load_fill_database load_get_name, load_get_password, … Данные для сервисов Данные для нагрузки Генерация с Postgres
  63. Функция верхнего уровня просто передаёт параметры 131 load_fill_database_{test} • login

    • try_fail_password • reset_password • change_password • ... Данные для сервисов Данные для нагрузки Генерация с Postgres
  64. Помним: параметры берутся из методики 132 Сценарий Шаблоны Количество Login

    loadUser{N}@ok.ru users 100k history 300k Try_fail_password incorrect{N}@fail.ru users 50k history 50k Reset_password u{N}[email protected] users 10k history 50k Методика тестирования Данные для сервисов Данные для нагрузки Генерация с Postgres
  65. Функция генерации данных запускает циклы генерации объектов 133 load_fill_database_{scenario} load_fill_database

    load_get_name, load_get_password, … Данные для сервисов Данные для нагрузки Генерация с Postgres
  66. Функция генерации данных запускает циклы генерации данных 134 load_fill_database: FOR

    i IN iStart..iEnd LOOP • вычисление полей • INSERT INTO ... • INSERT INTO ... Данные для сервисов Данные для нагрузки Генерация с Postgres
  67. В циклах вызываются функции вычисления полей, поля вычисляются без RUNDOM()

    135 load_fill_database_{scenario} load_fill_database load_get_name, load_get_password, … Данные для сервисов Данные для нагрузки Генерация с Postgres
  68. Помним: нужно высчитывать идентификаторы 136 F(index) F(index) F(index) Данные для

    сервисов Данные для нагрузки Генерация с Postgres
  69. Подходы для генерации значений 137 Объект – функция от параметров

    и номера FOR index IN "indexStart".."indexEnd" LOOP value = function(index, params) Использование value для вставки в таблицы Данные для сервисов Данные для нагрузки Генерация с Postgres
  70. Генерация данных с PostgreSQL 138 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Особенности генерации данных с PostgreSQL: • структура генератора данных; • подходы для генерации значений; • ускорение вставки значений.
  71. [0; N-1] = Остаток от деления на N 139 timeDiffMinutes

    = i % 80000 Данные для сервисов Данные для нагрузки Генерация с Postgres
  72. Функция format для шаблонных строк 140 nick_name = format('user%sname', i::text)

    user123name Данные для сервисов Данные для нагрузки Генерация с Postgres
  73. Комбинации format и остатка от деления для IPv4 141 format('106.%s.%s.%s',

    (((ip_index / 250) / 250) % 250)::text, ((ip_index / 250) % 250)::text, (1 + ip_index % 250)::text ) 106.0.1.2 15 625 000 значений Данные для сервисов Данные для нагрузки Генерация с Postgres
  74. GUID = md5 от имени таблицы, теста и номера 142

    guid = md5('users ' || test_name || lpad(i::text, 12, '0'))::uuid faf154aa-54d1-0b07-3c8e-fe8921f96 c45 Данные для сервисов Данные для нагрузки Генерация с Postgres
  75. GUID = код(имени таблицы), код(теста) и номер, для отсортированных GUID

    143 guid = ('22-33-44-55' || 'aa-bb-cc-dd-ee-ff' || lpad(i::text, 12, '0'))::uuid 22334455-aabb-ccdd-eeff-00000000 0001 Данные для сервисов Данные для нагрузки Генерация с Postgres
  76. Выбор из словаря по номеру для имён, фамилий, отчеств 144

    array[ 1 + mod(abs("Index"), arrayLenght) ] предел 1 ГБайт, тестировал 10 МБайт, использую 64 кБайт Данные для сервисов Данные для нагрузки Генерация с Postgres
  77. Выбор из словаря по номеру для имён, фамилий, отчеств 145

    array[ 1 + mod( abs("Index"), arrayLenght ) ] Данные для сервисов Данные для нагрузки Генерация с Postgres
  78. Выбор из сгенерированной тестовой таблицы 146 1. Генерация CSV на

    java 2. Загрузка СSV в таблицу 3. SELECT из таблицы Данные для сервисов Данные для нагрузки Генерация с Postgres
  79. Генерация данных с PostgreSQL 147 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Особенности генерации данных с PostgreSQL: • структура генератора данных; • подходы для генерации значений; • ускорение вставки значений.
  80. Ускорение вставки значений в базу данных 149 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после Данные для сервисов Данные для нагрузки Генерация с Postgres
  81. Ускорение вставки значений в базу данных 150 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после UPDATE pg_index SET indisready=false WHERE indexrelid = ( SELECT oid FROM pg_class WHERE relname in ('таблица1', 'таблица2') ); Данные для сервисов Данные для нагрузки Генерация с Postgres
  82. Ускорение вставки значений в базу данных 151 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после ALTER TABLE public.таблица1 DISABLE TRIGGER ALL; ALTER TABLE public.таблица2 DISABLE TRIGGER ALL; Данные для сервисов Данные для нагрузки Генерация с Postgres
  83. Ускорение вставки значений в базу данных 152 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после ALTER TABLE public.таблица1 DROP CONSTRAINT таблица1_pkey; ALTER TABLE public.таблица2 DROP CONSTRAINT таблица2_pkey; Данные для сервисов Данные для нагрузки Генерация с Postgres
  84. Ускорение вставки значений в базу данных 153 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после SELECT load_fill_database_test1( 1, 1000000 ); SELECT load_fill_database_test2( 1000001, 2000000 ); Данные для сервисов Данные для нагрузки Генерация с Postgres
  85. Ускорение вставки значений в базу данных 154 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после ALTER TABLE public.таблица1 ADD CONSTRAINT таблица1_pkey PRIMARY KEY(id); ALTER TABLE public.таблица2 ADD CONSTRAINT таблица2_pkey PRIMARY KEY(id); Данные для сервисов Данные для нагрузки Генерация с Postgres
  86. Ускорение вставки значений в базу данных 155 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после ALTER TABLE public.таблица1 ENABLE TRIGGER ALL; ALTER TABLE public.таблица2 ENABLE TRIGGER ALL; Данные для сервисов Данные для нагрузки Генерация с Postgres
  87. Ускорение вставки значений в базу данных 156 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после UPDATE pg_index SET indisready=true WHERE indexrelid = ( SELECT oid FROM pg_class WHERE relname in ('таблица1', 'таблица2') ); Данные для сервисов Данные для нагрузки Генерация с Postgres
  88. Ускорение вставки значений в базу данных 157 1. Сохранить схему

    БД 2. Отключить индексы 3. Отключить триггеры 4. Удалить ключи 5. Сгенерировать данные 6. Создать ключи 7. Включить триггеры 8. Включить индексы 9. Переиндексировать 10. Сравнить схему до и после REINDEX public.таблица1; REINDEX public.таблица2; Данные для сервисов Данные для нагрузки Генерация с Postgres
  89. Генерация данных с PostgreSQL 158 Данные для сервисов Данные для

    нагрузки Генерация с Postgres 1. Основа генератора — параметризированная хранимая процедура с циклами создания объектов. 2. На SQL можно вычислять числа, шаблонные строки, GUID-ы, выбирать значения из массивов и таблиц. 3. Для ускорения вставки рекомендуется отключать индексы и удалять ключи, а потом их восстанавливать.
  90. Генерация данных с PostgreSQL 159 Данные для сервисов Данные для

    нагрузки Генерация с Postgres 1. Основа генератора — параметризированная хранимая процедура с циклами создания объектов. 2. На SQL можно вычислять числа, шаблонные строки, GUID-ы, выбирать значения из массивов и таблиц. 3. Для ускорения вставки рекомендуется отключать индексы и удалять ключи, а потом их восстанавливать.
  91. Генерация данных с PostgreSQL 160 Данные для сервисов Данные для

    нагрузки Генерация с Postgres 1. Основа генератора — параметризированная хранимая процедура с циклами создания объектов. 2. На SQL можно вычислять числа, шаблонные строки, GUID-ы, выбирать значения из массивов и таблиц. 3. Для ускорения вставки рекомендуется отключать индексы и удалять ключи, а потом их восстанавливать.
  92. Генерация данных с PostgreSQL 161 Данные для сервисов Данные для

    нагрузки Генерация с Postgres 1. Основа генератора — параметризированная хранимая процедура с циклами создания объектов. 2. На SQL можно вычислять числа, шаблонные строки, GUID-ы, выбирать значения из массивов и таблиц. 3. Для ускорения вставки рекомендуется отключать индексы и удалять ключи, а потом их восстанавливать.
  93. Содержание 162 1. Подготовка данных для микросервисов 2. Подготовка данных

    для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python
  94. 163

  95. 164

  96. 167

  97. 168

  98. Генерация данных с Python 174 Данные для сервисов Данные для

    нагрузки Генерация с Postgres 1. Генерировать псевдо-персональные данные легко. 2. Работать со списками значений легко с Pandas. 3. Сохранять наборы данных в Excel/CSV легко. Генерация с Python
  99. Содержание 175 Данные для сервисов Данные для нагрузки Генерация с

    Postgres Генерация с Python Сериализац ия классов 1. Подготовка данных для микросервисов 2. Подготовка данных для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности
  100. Если генерируете данные со стороны API 176 Данные для сервисов

    Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов
  101. Переиспользуйте структуры данных сервиса 177 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов
  102. Так легче всего получить валидный JSON/XML 178 Данные для сервисов

    Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов
  103. Разработчики уже всё написали и структуры данных и код валидации

    179 • Data Transfer Object • Model • XSD Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов
  104. Генерация данных с сериализацией классов 180 Данные для сервисов Данные

    для нагрузки Генерация с Postgres 1. Разработчики уже написали DTO, Model, XSD, ... 2. Можно генерировать связанные объекты. 3. Можно генерировать сложные объекты. 4. Можно ставить точки останова. 5. Легко получить JSON и XML. Генерация с Python Сериализац ия классов
  105. Содержание 181 Данные для сервисов Данные для нагрузки Генерация с

    Postgres Генерация с Python Сериализац ия классов Влияние на результат 1. Подготовка данных для микросервисов 2. Подготовка данных для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности
  106. Влияние данных на результат тестирования 182 Данные для сервисов Данные

    для нагрузки 1. Нет ошибок вызываемых некоректными данными. 2. Плюс 40% новых важных дефектов производительности. 3. Можно легко находить ошибки потери и повреждения данных, это до 7% всех ошибок нагруженной системы. 4. Можно легко находить медленные запросы, это до 35% всех ошибок нагруженной системы. Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  107. Сгенерированы только корректные данные 183 Данные для сервисов Данные для

    нагрузки 1. Созданы только корректные данные 2. Система работает 3. Смотрим лог ошибок: ◦ все ошибки значимы ◦ ошибок должно быть 0 ◦ просто заводить баги SELECT load_fill_database_test1( 1, 1000000 ); SELECT load_fill_database_test2( 1000001, 2000000 ); Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  108. Сгенерированы только корректные данные 184 1. Созданы только корректные данные

    2. Система работает 3. Смотрим лог ошибок: ◦ все ошибки значимы ◦ ошибок должно быть 0 ◦ просто заводить баги Пишет лог: app.log ElasticSearch GrayLog ... Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  109. Сгенерированы только корректные данные 185 1. Созданы только корректные данные

    2. Система работает 3. Смотрим лог ошибок: ◦ все ошибки значимы ◦ ошибок должно быть 0 ◦ просто заводить баги grep "ERROR" ./app.log Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  110. Влияние данных на результат тестирования 186 Данные для сервисов Данные

    для нагрузки 1. Нет ошибок вызываемых некоректными данными. 2. Плюс 40% новых важных дефектов производительности. 3. Можно легко находить ошибки потери и повреждения данных, это до 7% всех ошибок нагруженной системы. 4. Можно легко находить медленные запросы, это до 35% всех ошибок нагруженной системы. Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  111. Выявление дефектов производительности 187 Данные для сервисов Данные для нагрузки

    Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  112. Плюс 40% дефектов производительности 188 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  113. Влияние данных на результат тестирования 189 Данные для сервисов Данные

    для нагрузки 1. Нет ошибок вызываемых некоректными данными. 2. Плюс 40% новых важных дефектов производительности. 3. Можно легко находить ошибки потери и повреждения данных, это до 7% всех ошибок нагруженной системы. 4. Можно легко находить медленные запросы, это до 35% всех ошибок нагруженной системы. Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  114. Корректность данных: количество строк 190 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  115. При генерации создаётся 1 000 000 записей 191 1. Создаётся

    N записей 2. Система работает 3. Сверяем числа: ◦ количество записей ◦ строки в отчете ◦ статистика SELECT load_fill_database_test1( 1, 1000000 ); SELECT load_fill_database_test2( 1000001, 2000000 ); Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  116. Система работает, меняет данные 192 1. Создаётся N записей 2.

    Система работает 3. Сверяем числа: ◦ количество записей ◦ строки в отчете ◦ статистика UPDATE ... SELECT ... SELECT ... UPDATE ... INSERT ... INSERT ... SELECT ... DELETE ... UPDATE ... SELECT ... SELECT ... Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  117. Проверяем наличие 1 000 000 записей 193 1. Создаётся N

    записей 2. Система работает 3. Сверяем числа: ◦ количество записей ◦ строки в отчете ◦ статистика SELECT count(*) FROM public.таблица1 GROUP BY name; SELECT count(*) FROM public.таблица2 GROUP BY title; Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  118. Проверяем наличие 1 000 000 записей 194 1. Создаётся N

    записей 2. Система работает 3. Сверяем числа: ◦ количество записей ◦ строки в отчете ◦ статистика -- Корректное количество: 1 000 000 -- Запись потерялась: 999 999 -- Две записи потеряны: 999 998 -- Дублирование: 2 000 000 Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  119. Влияние данных на результат тестирования 195 Данные для сервисов Данные

    для нагрузки 1. Нет ошибок вызываемых некоректными данными. 2. Плюс 40% новых важных дефектов производительности. 3. Можно легко находить ошибки потери и повреждения данных, это до 7% всех ошибок нагруженной системы. 4. Можно легко находить медленные запросы, это до 35% всех ошибок нагруженной системы. Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  120. Большие данные: медленные запросы 196 Данные для сервисов Данные для

    нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  121. При генерации создаётся много записей 197 1. Создаётся много записей

    2. Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы SELECT load_fill_database_test1( 1, 1000000 ); SELECT load_fill_database_test2( 1000001, 2000000 ); Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  122. Система работает, ей тяжело, данных много 198 1. Создаётся много

    записей 2. Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы UPDATE ... SELECT ... SELECT ... UPDATE ... INSERT ... INSERT ... SELECT ... DELETE ... UPDATE ... SELECT ... SELECT ... Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  123. Смотрим статистику выполнения запросов 199 1. Создаётся много записей 2.

    Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы SELECT query, calls, total_time, mean_time FROM pg_stat_statements ORDER BY total_time DESC Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  124. Изучаем планы медленных запросов 200 1. Создаётся много записей 2.

    Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы BEGIN; EXPLAIN ANALYZE ...; ROLLBACK; Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  125. Добавляем индексы, смотрим на план 201 1. Создаётся много записей

    2. Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы CREATE INDEX ...; CREATE INDEX ...; BEGIN; EXPLAIN ANALYZE ...; ROLLBACK; Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  126. Смотрим на планы изменённых запросов 202 1. Создаётся много записей

    2. Система работает 3. Смотрим на мониторинг ◦ pg_stat_statements 4. Изучаем план запроса 5. Добавляем индексы 6. Переписываем запросы BEGIN; EXPLAIN ANALYZE ...; ROLLBACK; BEGIN; EXPLAIN ANALYZE ...; ROLLBACK; BEGIN; EXPLAIN ANALYZE ...; ROLLBACK; Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  127. Влияние данных на результат тестирования 203 Данные для сервисов Данные

    для нагрузки 1. Нет ошибок вызываемых некоректными данными. 2. Плюс 40% новых важных дефектов производительности. 3. Можно легко находить ошибки потери и повреждения данных, это до 7% всех ошибок нагруженной системы. 4. Можно легко находить медленные запросы, это до 35% всех ошибок нагруженной системы. Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат
  128. Содержание 204 Данные для сервисов Данные для нагрузки Генерация с

    Postgres Генерация с Python Сериализац ия классов Влияние на результат 1. Подготовка данных для микросервисов 2. Подготовка данных для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности Микроотчет
  129. Микроотчет по тестам производительности 205 Данные для сервисов Данные для

    нагрузки 1. Структура и стоимость отчета по тестам производительности 2. Применимость отчета по тестам производительности 3. Структура и стоимость микроотчета Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  130. Микроотчет по тестам производительности 206 Данные для сервисов Данные для

    нагрузки 1. Структура и стоимость отчета по тестам производительности 2. Применимость отчета по тестам производительности 3. Структура и стоимость микроотчета Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  131. Самый главный совет 207 Данные для сервисов Данные для нагрузки

    Записывать всё, все результаты и детали Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  132. Самый главный совет 208 Данные для сервисов Данные для нагрузки

    Записывать всё, все результаты и детали, например, в отчет по тестированию Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  133. Микроотчет по тестам производительности 209 Данные для сервисов Данные для

    нагрузки 1. Структура и стоимость отчета по тестам производительности 2. Применимость отчета по тестам производительности 3. Структура и стоимость микроотчета Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  134. Отчет по нагрузке читать не будут 210 Данные для сервисов

    Данные для нагрузки Коллеги уже перегружены информацией Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  135. Отчет нужен только самому инженеру 211 Данные для сервисов Данные

    для нагрузки • Для истории • Для отчетности в бухгалтерию • Обязательный артефакт тестирования Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  136. Отчет полезен на презентации результатов 212 Данные для сервисов Данные

    для нагрузки Если нужно донести информацию из отчета, то можно собрать совещание, и рассказать о результатах Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  137. Презентации результатов полезны 213 Данные для сервисов Данные для нагрузки

    В больших распределённых командах, при долгих циклах тестирования, если вы — внешний сотрудник Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  138. Презентации и большой отчет не нужны 214 Данные для сервисов

    Данные для нагрузки В малых локальных командах, с короткими циклами тестирования, если вы внутренний сотрудник компании Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  139. Микроотчет по тестам производительности 215 Данные для сервисов Данные для

    нагрузки 1. Структура и стоимость отчета по тестам производительности 2. Применимость отчета по тестам производительности 3. Структура и стоимость микроотчета Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  140. Результаты НТ сервиса AAAA версии 1.2.3 216 Данные для сервисов

    Данные для нагрузки Кому: Разработчик, Администратор, Менеджер, Команда Тестирование нагрузки прошло успешно. Деградации производительности нет. Ссылки на результаты запуска: • отчет инструмента тестирования • утилизация ресурсов и метрики • статистика по логам системы Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  141. Результаты НТ сервиса AAAA версии 1.2.4 217 Данные для сервисов

    Данные для нагрузки Кому: Разработчик, Администратор, Менеджер, Команда Тестирование нагрузки прошло успешно. Деградация производительности 40%, чинится настройками. Администратор, нужно применить рекомендации для прода: • ссылка на рекомендации для продуктива Ссылки на результаты запуска: • ... Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  142. Результаты НТ сервиса AAAA версии 1.2.5 218 Данные для сервисов

    Данные для нагрузки Кому: Разработчик, Администратор, Менеджер, Команда Тестирование нагрузки прошло неуспешно. Деградация производительности 100%. Разработчик, оформлены дефекты производительности: • ссылки на дефекты производительности Ссылки на результаты запуска: • ... Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  143. Результаты НТ сервиса AAAA версии 1.2.6 219 Данные для сервисов

    Данные для нагрузки Кому: Разработчик, Администратор, Менеджер, Команда Тестирование нагрузки прошло успешно. Производительность системы восстановлена и улучшена. Менеджер, дефекты производительности исправлены и проверены: • ссылки на дефекты производительности Администратор, нужно применить рекомендации для прода: • ссылка на рекомендации для продуктива Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  144. Микроотчет по тестам производительности 220 Данные для сервисов Данные для

    нагрузки 1. Большой отчет пишется от 1 дня и включает версию, описание стенда, профиль нагрузки, профиль данных, результаты, ссылки на метрики, графики, таблицы 2. Большой отчет нужен инженеру для презентации 3. Микроотчет пишется в email, кратко, со ссылками на детали Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет
  145. Содержание 221 Данные для сервисов Данные для нагрузки Генерация с

    Postgres Генерация с Python Сериализац ия классов Влияние на результат 1. Подготовка данных для микросервисов 2. Подготовка данных для тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности Микроотчет Метрики
  146. Самый главный совет 222 Данные для сервисов Данные для нагрузки

    Записывать всё, все результаты и детали Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  147. Самый главный совет 223 Данные для сервисов Данные для нагрузки

    Записывать всё, все результаты и детали, например, автоматически в Time Series Data Base Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  148. Сбор и визуализация метрик 224 Данные для сервисов Данные для

    нагрузки 1. InfluxDB может хранить большую часть результатов 2. В InfluxDB есть retention policy, без которой база переполнится 3. В Grafana есть снимки досок, на которые удобно ссылаться Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  149. InfluxDB может хранить почти все результаты 225 Данные для сервисов

    Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  150. Telegraf собирает метрики по 100 видам систем 226 Данные для

    сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  151. Сбор и визуализация метрик 227 Данные для сервисов Данные для

    нагрузки 1. InfluxDB может хранить большую часть результатов 2. В InfluxDB есть retention policy, без которой база переполнится 3. В Grafana есть снимки досок, на которые удобно ссылаться Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  152. ∞ Retention policy с именем auto в InfluxDB 228 Данные

    для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  153. ∞ База данных растёт, становится медленной 229 Данные для сервисов

    Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  154. ∞ И перестаёт работать, приходится чистить 230 Данные для сервисов

    Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  155. • month — на месяц, default • year — на

    год • year10 — на 10 лет Retention policy на месяц, год и 10 лет 231 Данные для сервисов Данные для нагрузки Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  156. Сбор и визуализация метрик 232 Данные для сервисов Данные для

    нагрузки 1. InfluxDB может хранить большую часть результатов 2. В InfluxDB есть retention policy, без которой база переполнится 3. В Grafana есть снимки досок, на которые удобно ссылаться Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  157. 233

  158. 234

  159. 235

  160. Результаты НТ сервиса AAAA версии 1.2.3 236 Данные для сервисов

    Данные для нагрузки Кому: Разработчик, Администратор, Менеджер, Команда Тестирование нагрузки прошло успешно. Деградации производительности нет. Ссылки на результаты запуска: • отчет инструмента тестирования • утилизация ресурсов и метрики • статистика по логам системы Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  161. Сбор и визуализация метрик 237 Данные для сервисов Данные для

    нагрузки 1. InfluxDB может хранить большую часть результатов 2. В InfluxDB есть retention policy, без которой база переполнится 3. В Grafana есть снимки досок, на которые удобно ссылаться Генерация с Postgres Генерация с Python Сериализац ия классов Влияние на результат Микроотчет Метрики
  162. Содержание 1. Подготовка данных для микросервисов 2. Подготовка данных для

    тестов производительности 3. Генерация данных c PostgreSQL 4. Генерация данных с Python 5. Генерация данных с сериализацией классов 6. Влияние данных на результат тестирования 7. Микроотчёт по тестированию производительности 8. Сбор и визуализация метрик производительности 238