Size: a a a

QA — Load & Performance

2020 August 03

OC

Oleg Chaplashkin in QA — Load & Performance
Логично конечно, что частично зависит от диапазонов:
одно дело рандомить в диапазоне [0,5] несколько полей,
а другое - [0,int64] где int64 макс. значение типа

Шанс того, что выбранные 4 числа пересекутся - мизерно мал
источник

СФ

Степа Фомичев... in QA — Load & Performance
Ну зависит от количества символов, которые они генерируют
источник

OC

Oleg Chaplashkin in QA — Load & Performance
Bola
а что вы тестируете в конечном итоге? как работает кэширование?
Этот вопрос я и хочу узнать: влияение кэшей внутри системы
источник

СФ

Степа Фомичев... in QA — Load & Performance
Если у тебя поля типа номеров счета, бика и так далее, то у тебя конечное множество, и достаточно легко сделать список из всех возможных вариантов
источник

СФ

Степа Фомичев... in QA — Load & Performance
Я бы пошёл с этого края)
источник

СФ

Степа Фомичев... in QA — Load & Performance
Прям брутфорсом фигануть и потом подставлять по порядку, что обеспечит тебе полную уникальность
источник

OC

Oleg Chaplashkin in QA — Load & Performance
Спасибо, надо бы сначала точнее описать модель нагрузки и разобраться в своих мыслях, а то каша :)
источник

OC

Oleg Chaplashkin in QA — Load & Performance
Система так устроена, что на вход может принимать N опциональных полей

Мне стало интересно влияние кэшей и работы системы, если условные клиенты пуляются в нас N rps, причем:
- один клиент пустые данные
- другой клиент полупустые, где половина полей - одинаково
- третий - всё уникальное, со всеми полями

График нагрузки пока что не обдумывал, ну, очевидно пока как трапеция: несколько минут на разогрев до N, потом постоянная N и (если всё хорошо), спуск с N до 0

Кстати, вопрос к графикам нагрузки: что можно почитать на эту тему?
источник
2020 August 04

jj

jagga jagga in QA — Load & Performance
Странный вопрос, мб он про профиль?
источник

OC

Oleg Chaplashkin in QA — Load & Performance
jagga jagga
Странный вопрос, мб он про профиль?
Да, профиль, вылетело из головы :(
источник

jj

jagga jagga in QA — Load & Performance
В банках любят ступеньки) в других местах трапеции
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Oleg Chaplashkin
Коллеги, засел над, скорее, идеологическим вопросом.
Есть условный сервер на который подаётся некоторая нагрузка с помощью Jmeter.

Пусть мы хотим снять нагрузку при одинаковых, статических запросах (когда тело запроса содержит конкретные значения JSON). Ок, написали, измерили, сохранили отчёт.

Пусть теперь нагрузку будем генерировать с динамическими полями, но статическими значениями ( ключи в JSON - случайно меняются, значения привязаны к ключам). Ок.

И теперь нам необходимо посмотреть в случае полной динамики: когда и сама структура тела (ключи) в JSON меняется, и сами значения поставляются рандомно.

Таких полей - 50-70 на всю систему. писать генератор в BeanShell? (поля есть и атомарные - строки, числа, так и структуры - массивы, словари); При этом уже есть написанный Python-генератор на абсолютно случайные значения. Вызывать python-скрипт из Jmeter - то еще извращение мне кажется, а вот сгенерировать скриптом какой-нибудь CSV/JSON, считать его и получить для каждого поля массив из данных мне кажется удобным.

Собственно вопрос: где та грань между "случайными" данными? При каком проценте повторений значений мы считаем событией уникальным?
Я ушёл в теорию вероятностей, однако может быть по другому решают подобное?

Спасибо!
У меня похожая ситуация.
1) был генератор, но на джаве, старый и никто особо его не поддерживал и не сопровождал, к моему приходу уже только ИФТ с горем по полам его реанимировали от спринта к релизу... он тоже генерировал объекты. Точнее были шаблоны, на основе них генерировались бизнес-объекты с валидными данными.
Я забрал исходники себе, задолбался разбираться. но ключевые моменты все нашел вскоре. Накрутил обвесов, исправил не продуктив, что-то усложнил, что-то упростил, навернул сверху, и получился такой себе "франкенштейн". Но практически любую подготовку к тесту я доверяю ему, пару параметров + либо прямо из ИДЕ запускаю, либо из баш-скрипта - и все готово, даже сам запуск теста собственно.
Основное что я изменил - это "из объектов" я стал делать просто строку(.CSV), а строку разгребать во время теста и использовать по мере необходимости. Далее с генерированные файлы с миллионами строк стали волшебно улетать на генераторы нагрузки))) и многое другое...
В общем тема с готовым генератором - это хорошая тема, когда нужны данные связанные между собой(например кейс из нескольких операций с одними данными)...
2) По поводу "баланса параметризации", к сожалению у меня такого вопроса не стаяло, так как логика системы слишком сильно завязана на "реалистичности", там где была необходимость дотошной параметризации, иначе попросту не взлетало, так как "не оригинальный запрос" мог валиться при повторении одного из параметров... а многие параметры были ограничены длинной или набором допустимых значений, плюс что-то проверялось в связке, что-то только уникальное... в общем максимально приближено к жизни... а прибавим факт того, что я не могу откатить БД после теста(вообще, никак, от слова совсем, и на это никто не пойдет, из-за сложности архитектуры, реплик, огромного кол-ва БД, отсутствия доступов и пром данных на нем)....
В общем, все что требовалось пришлось параметризовать по максимуму...  иначе, у меня не сегодня так завтра тест завалится из-за дублей, а если один дубль - система сходила с ума и выдавала лютую дичь(пока не удалить говноданные)... В общем доходит до того, что админ мне выгружает "неиспользованные" данные из БД для теста, и я это "неиспользованное" скармливаю своему Франкенштейну.jar, он все эти данные обогащает, делая из файлов в пару мегов - файлы в гигабайты. В начале для валидного результата часового теста могли, всех на уши подняв, запускать неделю... После допила генератора - за пол часа запускаемсО)))

Жаль только выгрузку с БД пока никак не автоматизировать увы...

А по поводу "баланса", лично мое мнение, параметризация быть должна в обяз, но не много, значений 3-5, больше - это лишняя нагрузка на генераторы... Но с поправкой на бизнес-логику конечно...
источник

OC

Oleg Chaplashkin in QA — Load & Performance
Alexey Kübler-Ross
У меня похожая ситуация.
1) был генератор, но на джаве, старый и никто особо его не поддерживал и не сопровождал, к моему приходу уже только ИФТ с горем по полам его реанимировали от спринта к релизу... он тоже генерировал объекты. Точнее были шаблоны, на основе них генерировались бизнес-объекты с валидными данными.
Я забрал исходники себе, задолбался разбираться. но ключевые моменты все нашел вскоре. Накрутил обвесов, исправил не продуктив, что-то усложнил, что-то упростил, навернул сверху, и получился такой себе "франкенштейн". Но практически любую подготовку к тесту я доверяю ему, пару параметров + либо прямо из ИДЕ запускаю, либо из баш-скрипта - и все готово, даже сам запуск теста собственно.
Основное что я изменил - это "из объектов" я стал делать просто строку(.CSV), а строку разгребать во время теста и использовать по мере необходимости. Далее с генерированные файлы с миллионами строк стали волшебно улетать на генераторы нагрузки))) и многое другое...
В общем тема с готовым генератором - это хорошая тема, когда нужны данные связанные между собой(например кейс из нескольких операций с одними данными)...
2) По поводу "баланса параметризации", к сожалению у меня такого вопроса не стаяло, так как логика системы слишком сильно завязана на "реалистичности", там где была необходимость дотошной параметризации, иначе попросту не взлетало, так как "не оригинальный запрос" мог валиться при повторении одного из параметров... а многие параметры были ограничены длинной или набором допустимых значений, плюс что-то проверялось в связке, что-то только уникальное... в общем максимально приближено к жизни... а прибавим факт того, что я не могу откатить БД после теста(вообще, никак, от слова совсем, и на это никто не пойдет, из-за сложности архитектуры, реплик, огромного кол-ва БД, отсутствия доступов и пром данных на нем)....
В общем, все что требовалось пришлось параметризовать по максимуму...  иначе, у меня не сегодня так завтра тест завалится из-за дублей, а если один дубль - система сходила с ума и выдавала лютую дичь(пока не удалить говноданные)... В общем доходит до того, что админ мне выгружает "неиспользованные" данные из БД для теста, и я это "неиспользованное" скармливаю своему Франкенштейну.jar, он все эти данные обогащает, делая из файлов в пару мегов - файлы в гигабайты. В начале для валидного результата часового теста могли, всех на уши подняв, запускать неделю... После допила генератора - за пол часа запускаемсО)))

Жаль только выгрузку с БД пока никак не автоматизировать увы...

А по поводу "баланса", лично мое мнение, параметризация быть должна в обяз, но не много, значений 3-5, больше - это лишняя нагрузка на генераторы... Но с поправкой на бизнес-логику конечно...
Спасибо большое за развернутый ответ! Возьму на заметку, будем думать :)
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Oleg Chaplashkin
Спасибо большое за развернутый ответ! Возьму на заметку, будем думать :)
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
источник

v

vasiliy in QA — Load & Performance
Maksimall89
Напишу
👍
источник

v

vasiliy in QA — Load & Performance
У нас можно сказать "продуктовые команды" и мы перешли к 2м видам отчётов - супер-экспресс на 2 листа чисто для бизнесов и краткими выводами для технарей - 1 лист: сценарий и выводы с дальнейшими шагами, 2й лист графики подтверждающие выводы . Без графиков которые к выводам не относятся. Делаем часа за 2.
Ну и стандартный экспресс репорт со всеми основными графиками листов на 10-15, собирается день - он скорее больше для истории, чтобы потом можно было поднять вспомнить что было с системой например полгода назад.
Огромный отчёт с горой тестов "по ПМИ" как то пока не пригодился уже почти как с год..
источник

VG

Viktor Ganeles in QA — Load & Performance
vasiliy
У нас можно сказать "продуктовые команды" и мы перешли к 2м видам отчётов - супер-экспресс на 2 листа чисто для бизнесов и краткими выводами для технарей - 1 лист: сценарий и выводы с дальнейшими шагами, 2й лист графики подтверждающие выводы . Без графиков которые к выводам не относятся. Делаем часа за 2.
Ну и стандартный экспресс репорт со всеми основными графиками листов на 10-15, собирается день - он скорее больше для истории, чтобы потом можно было поднять вспомнить что было с системой например полгода назад.
Огромный отчёт с горой тестов "по ПМИ" как то пока не пригодился уже почти как с год..
Огромный отчёт «по ПМИ» имхо нужен в случае, если НТ проводится редко и не своей командой, а подрядчиком

Во-первых потому, что если нт делается редко - то интересны даже графики, показывающие отсутствие утилизации - именно что бы знать: «на этих узлах даже под нагрузкой всё спокойно»

Во-вторых потому, что редкое нт делается под конкретную ситуацию, и там, может быть, и результаты кто-нибудь изучит подробно

В третьих - что бы показать, что подрядчик чем-то занимался все 4-6 месяцев, пока проект шёл :)


Для обычных регулярных тестов «отчёт по ПМИ» не особо нужен.

Ps под «отчёт по ПМИ» я подразумеваю отчёт страниц на сто, где отдельно приводятся куски мнт, схемы систем, профиль нт, список проведённых тестов, все графики и тд.


P.p.s Слава-то говорил о глубоких исследованиях под рядовые отчёты. Насколько нужно упарываться ради качества отчётов, которые всё равно, скорее всего, не читают. И, насколько я знаю Славу, ради качества он будет стараться очень глубоко :)
источник

VG

Viktor Ganeles in QA — Load & Performance
Oleg Chaplashkin
Коллеги, засел над, скорее, идеологическим вопросом.
Есть условный сервер на который подаётся некоторая нагрузка с помощью Jmeter.

Пусть мы хотим снять нагрузку при одинаковых, статических запросах (когда тело запроса содержит конкретные значения JSON). Ок, написали, измерили, сохранили отчёт.

Пусть теперь нагрузку будем генерировать с динамическими полями, но статическими значениями ( ключи в JSON - случайно меняются, значения привязаны к ключам). Ок.

И теперь нам необходимо посмотреть в случае полной динамики: когда и сама структура тела (ключи) в JSON меняется, и сами значения поставляются рандомно.

Таких полей - 50-70 на всю систему. писать генератор в BeanShell? (поля есть и атомарные - строки, числа, так и структуры - массивы, словари); При этом уже есть написанный Python-генератор на абсолютно случайные значения. Вызывать python-скрипт из Jmeter - то еще извращение мне кажется, а вот сгенерировать скриптом какой-нибудь CSV/JSON, считать его и получить для каждого поля массив из данных мне кажется удобным.

Собственно вопрос: где та грань между "случайными" данными? При каком проценте повторений значений мы считаем событией уникальным?
Я ушёл в теорию вероятностей, однако может быть по другому решают подобное?

Спасибо!
У тебя вопрос, когда данные считаются случайными?

Дак очень просто же: когда объект тестирования считает их случайными.

Вот надо нам было загружать за тест в систему несколько тысяч pdf-файлов, каждый на пару Мб.

Мы выяснили у разрабов, что с ними делает система:
Оказалось, что система берёт хэш, и по нему проверяет уникальность. А само содержимое файла не читает.
Ну так всё просто:
Мы взяли одну pdf на 2 мега и дописывали в конец 10кб рандома.

И всё. Для человека файл был бы одинаковый, но для системы - отличался.
источник

VG

Viktor Ganeles in QA — Load & Performance
В общем, как сказал когда-то Д.В.Антохов, «Нам вовсе не надо повышать качество тестирования до бесконечности. Нам надо достичь целей минимальными трудозатратами»
источник