Pull to refresh

Comments 44

На данный момент да.
Пока Тест-Цент вызывает большие опасения по юзабилити его использования и терминологии. Писать скрипты на русском не добавляет вдохновения. А JMeter и Java я знаю хорошо, проверенные инструменты

Параметры авторизации можно передать в адресной строке (в случае веб клиента) и в строке запуска (в случае тонкого клиента).

Но с гуидами это только первый слой ада, дальше вы столкнетесь с перегенерируемыми ключами свойств и не постоянными именами объектов в интерфейсе. Поэтому мой вам совет - для тестирования 1с используйте инструменты тестирования 1с. Максимум, что можно тестировать через JMeter - это web и http сервисы.

Разберитесь с тест-центром, разберитесь с механизмом автоматизированного тестирования (либо платформенного, либо на базе Vanessa Automation и Gherkin), и задача будет решаться намного проще, а тесты, которые вы напишите, не протухнут с новым релизом платформы или конфигурации.

Разберитесь с <....>

Вы предлагаете неверный подход. Верный подход - клиенту сменить "тестировщика".

А какой подход к тестированию предложили бы вы?

Как смоделироаать большую нагрузку?

нагрузка нагрузке рознь. Запрос на обновление динсписка, и запрос на обновление динсписка :-) внешне могут быть почти одинаковыми, но давать совершенно разную нагрузку на целевую систему. ХТТП-запрос сервиса текущего времени и ХТТП-запрос "результата продаж товаров группы А за последнюю неделю" тоже могут быть совершенно одинаковы внешне...

Я говорю, тестировщика менять надо... На того, кто представляет, что именно тестирует...

Ну, в статье, конечно, очень многих деталей не хватает.

Из неё невозможно понять, что из этого делалось.

Если сперва был снять нормальный профиль нагрузки и запросы не «втупую» моделировались, то подход вполне рабочий. С ограничениями, конечно - но ограничения в НТ всегда есть

в статье, конечно, очень многих деталей не хватает.

Более того, там вообще ничего нет.

Если сперва был снять нормальный профиль нагрузки [...] то подход вполне рабочий

Для начала, нужно вообще понять "что такое нагрузка".

Вот стоит себе 1С, никого не трогает. И ее никто не трогает. Нет с ней никаких соединений, нет к ней никаких запросов. и тут она начала по расписанию закрывать месяц, считать себес и финрез... это "есть нагрузка" или "нет нагрузки"?

У вас если есть понимание, как создавать большую нагрузку на 1с (пусть даже только через веб) - скажите пожалуйста.

всё делать только через тест-сервер, используя 100500 нагрузочных станций?

Или есть другие тулы, которые могут моделировать хотя бы сотни клиентов с одного компа?

Спасибо.

два клиента, у которых просто открыты разные рабочие столы (например, пустой стол, только со значками разделов, и универсальный настраиваемый рабочий стол об Белокаменцева, с пятком динсписков, да десятком графиков и диаграмм), дадут очень разную загрузку сети. Более того, можно на том же настраиваемом столе создать один-единственный элемент, который практически не даст нагрузки на сеть, но положит нафиг сервер 1С.

повторю на всякий случай еще раз: 1С - это не сайт-визитка. Это даже не интернет-магазин. Это большая и достаточно сложная вещь.

У вас если есть понимание, как создавать большую нагрузку на 1с 

а у вас есть понимание, что такое "нагрузка", и что такое "большая" (хотя бы чем одна "нагрузка" отличается от "другой", и как их измерять)? И почему нагрузку пренепременно нужно делать сотнями клиентов?

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

Потому что если нагрузку можно создать одним клиентом, то нагрузочное тестирование для этого не нужно - работник скажет "когда я запускаю отчёт, всё тормозит", а программист 1с повторит это и помощь инженеров по нагрузке ему не нужна.

Нагрузочное тестирование нужно как раз в тех случаях, когда моделирование нагрузки выходит за рамки работы (или за список обязанностей) разработчика.

Поэтому тестирование и делится на разные ветки - "ручное/автоматическое" или "нагрузочное".

И тут я возвращаюсь к своему вопросу: если 1с тормозит от того, что в ней работает много пользователей (а не от того, что кто-то запустил одну "тяжёлую" операцию) - как правильно её тестировать?

Предположим, у нас большая организация, тормоза начинаются когда в с 1с взаимодействуют множество менеджеров одновременно (скажем, 200 или 500) - что делать? Запускать 200-500 тест-центров или другой инструмент?

Я люблю нагрузочное тестирование, но с 1с у меня опыта нету а значит нет и ответа на этот вопрос, у вас есть, помогите понять!
Спасибо.

1с тормозит от того, что в ней работает много пользователей (а не от того, что кто-то запустил одну "тяжёлую" операцию) - как правильно её тестировать?

Предположим, у нас большая организация, тормоза начинаются когда в с 1с взаимодействуют множество менеджеров одновременно (скажем, 200 или 500) - что делать? Запускать 200-500 тест-центров или другой инструмент?

Еще раз: пользователи работают по-разному. даже одни и те же "менеджеры". Даже одни и те же операторы могут работать в разное время с разным товаром - сейчас с "обычным", а через 10 минут - с товаром, учитываемым по сериям и характеристикам, и оформляемым не только в учетной системе, но и в Меркурии и Честном знаке - и, соответственно, будет разный объем запросов к БД, и разная скорость отклика системы.

Я люблю нагрузочное тестирование, но с 1с у меня опыта нету а значит нет и ответа на этот вопрос, у вас есть, помогите понять!

Нету опыта в 1с - и вы беретесь за нагрузочное тестирование 1с? Это, мягко говоря, нехорошо... Вообще говоря, у самой фирмы 1с есть курс "эксперт по технологическим вопросам", с соответствующей сертификацией (и, соответственно, со входными требованиями - иметь некоторые знания (вообще, формально они хотят сертификаты, конечно - но фактически нужно просто иметь знания, за которые эти сертификаты выдают )). Есть аналогичная книга ("настольная книга эксперта по технологическим вопросам")... в двух словах это не объясняется.

Почитайте хотя бы описание курса на https://uc1.1c.ru/course/podgotovka-k-1s-ekspertu-po-tehnologicheskim-voprosam-osnovnoj-kurs/#toc или содержание книги https://v8.1c.ru/metod/books/42721.htm - и поймете всю глубину идиотизма "попытки нагрузочного тестирования 1с с помощью JMeter" (вот аналогия родилась - тестирование 1с джиметром - это примерно как тестирование телевизора количеством зрителей, которые могут одновременно смотреть на экран)

А я и не берусь за тестирование 1с :)

Мне просто любопытно, как это делать.

Вы правы в том, что 1с сильно отличается от «сайта-визитки», но проблемы, описанные вами (одна и та же операция, выполняемая с разными параметрами создаёт разную нагрузку) свойственны большинству сложных систем, которые я тестировал.

Это решается. Более того, эту проблему приходится решать при тестировании 1с «родным» по.

Я прочитал ваши ссылки, круто, спасибо за них. Покупать книгу не хотелось, всё же тестировать 1с мне не нужно, это просто любопытство.

Но я нашёл вот такую статью на хабре - выглядит очень интересно:

https://habr.com/ru/articles/696790/

И тут коллеги запускают тесты «по 2 пользователя на сервере» на 6 серверах.

В нескорых ситуациях такой подход годится, в некоторых - нет.

Так вот, я хочу понять - есть ли какой-то аналог инструмента для создания массовой нагрузки на 1с через веб-сервер (сотни параллельно выполняющихся операций)?

Вы говорите, что jmeter не годится категорически - значит есть аналоги.

Ваш аналог - это запуск сотен серверов с тест-центром?

Уточню, я не против такого подхода - но в нагрузочном тестировании он используется только если нет другого выхода (в силу огромной ресурсоёмкости и дороговизны)

аналог инструмента для создания массовой нагрузки на 1с через веб-сервер (сотни параллельно выполняющихся операций)

Вы хотите веб-сервер протестировать на нагрузку, или 1с? Вы понимаете, что это совершенно разные вещи? А понимаете то, что "сотни параллельно выполняющихся операций" можно запустить с одного клиента? или вообще без клиента? (И при этом оценивать нагрузку, иметь соответсвующие метрики, и т.п.). Нужно понимать, что именно вы хотите протестировать. Ну, или если вы тестируете некую "систему" - неплохо знать, из чего эта система состоит, и как каждый элемент или подсистема влияет на общую производительность. а у вас получается, что вам пожаловались на то, что хреново показывает телевизор - а вы вместо проверки антенны, наличия сигнала, напряжения в розетке и т.п. - сгоняете в комнату с этим телеыизором десятки человек, и справшиваете у них "а как вам сейчас видно?", да еще и называете это "нагрузочным тестированием".

 jmeter не годится категорически - значит есть аналоги.

Практически невозможно без мата объяснить, что JMeter и его аналог не отдиагностирует, например, медленное подыхание диска, отведенного на сервере под темдб... 1с - это не сайт-визитка. И то, что там код на русском - не означает, что с 1с справится прям совсем-совсем любой идиот... не только лишь все смогут это сделать

хреново показывает телевизор

Ваш пример с телевизором не состоятелен, так как зрители не оказывают влияния на работу телевизора

С другой стороны, если у большинство клиентов работают с 1с через web-сервис, то создание нагрузки именно через web-сервер будет корректным способом воспроизведения этой самой нагрузки (не берусь судить, насколько удобным).

JMeter … не отдиагностирует медленное подыхание диска

Ну, тут надо отделять мух от котлет.

JMeter - это инструмент подачи нагрузки.

Он анализирует те клиентские метрики, которые ему доступны: количество возвращаемых ошибок, количество успешно выполненных операций, времена отклика.

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

Это относится не только к 1с, так делается с любой системой

1с - это не сайт-визитка

Вы всё время это повторяете.

Я полагаю, что 1с - это классная система, не зря же она стала такой популярной. И код на русском - это на мой взгляд только помогает.

Я понимаю, что это система очень сложная и чтобы грамотно её протестировать, необходимо хорошо понимать, как она устроена.

Но я пока так и не увидел, чем она отличается от других ЕРП-систем, например SAP.

Мои коллеги тестировали SAP - с помощью JMeter и с помощью Load Runner.

С Load Runner было удобнее, так как в нём есть специальные рекордеры, облегчающие процесс записи и параметризации скрипта (проблемы, подобные описанным в статье).

Главное, что я хочу сказать - в SAP (как и в множестве других сложных систем) есть все те проблемы, которые вы описали. Они решаются (обычно глубоким анализом статистики и разработкой профиля тестирования совместно с разработчиками предприятия).

Я из комментариев в этом треде понял, что если репрезентативную нагрузку на систему можно создать несколькими пользователями, то лучше использовать тест-центр.

Что делать, если нельзя - пока ответа нет. Было бы здорово, если бы он появился, это пригодилось бы тем, кому понадобится тестировать 1с в дальнейшем

Ваш пример с телевизором не состоятелен, так как зрители не оказывают влияния на работу телевизора

пример демонстрирует ровно то же самое - как зрители возле телевизра мешают друг другу, так и запросы от джиметра...

есть все те проблемы, которые вы описали. Они решаются обычно глубоким анализом статистики и разработкой профиля тестирования

Для того, чтобы статистику анализировать - она прежде всего должна быть. И должна быть релевантная. А не то дерьмо, которое вы получите щупая джиметром веб-сервер..

это пригодилось бы тем, кому понадобится тестировать 1с в дальнейшем

Если тестировать соберется нормальный человек (т.е. человек, представляющий себе 1с, ее внутреннее устройство и внутреннюю работу со всеми реализованными закидонами - профессионал), то он и так знает. Если же "сапоги начнет тачать пирожник", то пусть хоть чем пользуется. Результата не будет.

Ну, чтож.
Оставим тред тому, кто "и так знает".
Ответы ему не нужны, он и так знает.

А я поищу их где-нибудь ещё :)
Спасибо за беседу.

И тут коллеги запускают тесты «по 2 пользователя на сервере» на 6 серверах.

Коллеги там с помощью тест-центра запускают 400 сеансов, если что.

Оо, спасибо вам большое!

После вашего сообщения перечитал тот пост а потом ещё нашёл ещё такой ролик:

https://youtu.be/ByheuXihhuE?si=ATBLxD_4qosTBi6S

тут прямо в деталях показывается, как подавать нагрузку через тест-центр (в том числе регулировать количество пользователей).

Класс, я получил свои ответы, спасибо!

О, это интересно!

А через Vanessa Automation можно создавать нагрузку отправкой трафика, моделируя сотни пользователей с одной нагрузочной странции?

если использовать механизм автоматизированного тестирования, то нет. тест-менеджер одновременно может взаимодействовать только с одним тест-клиентом. можно запускать n тест-менеджеров, часть из них - с одной нагрузочной станции. подробнее https://infostart.ru/1c/articles/1182048/

в любом случае стоит разобраться с 1С:Тест-Центром.

Спасибо за ответ!

Ну вот и причина, по которой автор использовал JMeter для создания нагрузки.

Я так полагаю, 1000 тест-центров на одном компе запустить проблематично. А чтобы слать запросы в 1000 потоков из JMeter хватит обычной рабочей станции.

Тест-центр, полагаю, учить всё равно надо - для моделирования толстого клиента, и, вероятно ради более точных метрик.

Нет, JMeter использовался только потому, что ТС его знал, а разбираться в принципах построения систем на 1с он не захотел.

Все верно, JMeter — очень хорошо знакомый инструмент. Но в особенностях построения систем 1С и ТЦ я не то чтобы не захотел разбираться, а просто пока не добрался. Да и у задачи всегда есть дедлайн, который не позволял сесть за глубокое изучение с нуля.

у задачи всегда есть дедлайн, который не позволял сесть за глубокое изучение с нуля

Любая задача требует адекватного инструментария. И решение с помощью адекватных инструментов - быстрее. Ну и наконец (это всего лишь мое мнение, я его не навязываю, но сам придерживаюсь) - не стоит браться за коммерческие задачи, если нет знаний о предмете, и нет времени эти знания получить.

Прочитал вашу ссылку и понял, что сперва неверно вас понял :)

Вы писали про подключение к одному серверу 1с а я решил что это подключение от имени одного пользователя 1с

спасибо за инфу!

Большое спасибо за ответ!

Подскажите, как называется передача авторизации через адресную строку в 1С? Можете подробнее описать? 🙏

Отлично понимаю совет использовать ТЦ, но у подачи нагрузки извне есть важные достоинства, и 1С — какое-то уникальное исключение, в котором нагрузку можно подавать только с помощью 1С. Для большинства сервисов есть плагины и протоколы в сторонних инструментах тестирования. Корреляция трафика — решаемая задача, работаю над ней. Конкретно с ключами свойств ещё не сталкивался — как они выглядят в трафике?

Я изучал Vanessa Automation, но не нашел там возможности параллелить потоки и запускать нагрузку. Она всё же для автоматизации, а не НТ. А про Gherkin пока не слышал, спасибо за наводку.

А как вы пишите нагрузочные скрипты в ТестЦентре? Там же вроде нет рекордера. Он есть в сценарном тестировании, но его файлы потом не скормить в ТЦ.

Передача логопаса:

https://forum.infostart.ru/redirect.php?url=aHR0cDovL3NlcnZlci9wYXRoL3RvL2Jhc2UvP049dXNlciZhbXA7UD1wYXNzd29yZA==

В 1С подавать нагрузку можно разными способами. И тестировать веб сервисы через jmeter вполне можно. Но тестировать UI намного проще через инструменты автоматизированного тестирования, предоставляемые платформой. Вы же для обычного сценарного тестирования будете Selenium с авторекордингом брать, а не с нуля css в jmeter нвковыривать? Тут так же.

Для большинства сервисов есть плагины и инструменты, а для 1с нихрена нет, так как вендор не заинтересован в раскрытии экосистемы вовне и во главе всего тулинга стоит тотальный NIH-синдром.

Про VA - странно, что вы её изучали, и не заметили геркин. Потому что VA - это буквально фича-плеер геркин файлов так же как и cucumber. Вы точно VA изучали?

Рекордер UI есть в составе платформы. Как и генератор 1C-кода для проигрывания записанных шагов через механизм автоматизированного тестирования. Дополнительно в VA есть генератор фича-файлов на базе записанного рекордером сценария + в VA есть расширения языка геркин для поддержки циклов, условий, переменных и прочего.

Спасибо за ссылку!
Да, VA изучал, но поверхностно. Решил, что она для автоматизации, поэтому двинул больше в изучение ТЦ. Спасибо за наводку, пойду искать рекордер и генератор кода в VA.

Странный какой-то подход у автора статьи.

Стресстесты обычно выявляют "бутылочные горлышки" у серверов.

Если JMeter не знает о модулях 1С:ERP как он будет выяснять какой из них приводит к "тормозам"?

В этом случае нужно не выбирать между двумя инструментами, а использовать оба.

JMeter - для выявления узких мест между клиентом и сервером, а 1С:Тест - для поиска тормозов внутри самой 1С:ERP.

JMeter предполагается использовать для подачи нагрузки, а для мониторинга и поиска узких мест - средства 1С

Как же Вы смоделируете нагрузку без стандартизованного объемного теста?

В этом-то и смысл объёмных тестов - подать некую заранее измеренную нагрузку на железо и программное окружение и замерить отклик.

Без средств 1С - не измерить никак. Нагрузка от итерации к итерации будет разной.

Я делал подобный тест на версии 2.4 - достаточно давно.

И да - тогда к объемному тесту были вопросы.

Не знаю как дело обстоит сейчас.

Но тем не менее - получилось подбоом параметров СУБД и кластера получить приемлемый отклик.

Для стендэлон-систем на мой взгляд что-то настраивать бесполезно.

Просто системные требования отрабатываем и "не мучаем дитю"...

Но может быть есть прогресс в этой области и я отстал...

Пока на этапе написания скриптов. Подача нагрузки следующий шаг. Напишу потом апдейт к статье.

Так и не понял в чем состоит особенность нагрузочного тестирования, да и где само тестирование?

Выводы будут, графики, узкие места, профилирование, какая была конкретность на каком оборудовании?

Согласна. Мне тоже сравнений цифр не хватает

Проводить таким образом нагрузочное тестирование 1С это как сравнивать мерседес и москвич по скорости вращения колес.
Некоторая корреляция конечно будет)

Нагрузочное тестирование 1С - это прежде всего определить реальную нагрузку на текущую базу и масштабировать ее,
Это 99% успеха

Если совсем лень - то Стандартный нагрузочный тест из того же КИП.

А так вы протестировали веб-сервер.
Т.е. заголовок Особенности нагрузочного тестирования веб-сервера 1С: Предприятие

Будет полезно если подробнее расписать

Стандартный нагрузочный тест это вообще чистая синтетика и в моем случае не рассматривается допустимым. Мне необходимо проэмулировать действия реальных пользователей.
Да, возможно заголовок не совсем правильный.

Попробуй авторизовать с помощью строки "<ИмяПользователя>:<ПарольПользователя>" закодированной с помощью base64. Пожалуйста, поделись получилось или нет

Sign up to leave a comment.

Articles