Как стать автором
Обновить

Комментарии 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. Пожалуйста, поделись получилось или нет

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации