Comments 44
было решено не усложнять себе жизнь
Получилось?
Параметры авторизации можно передать в адресной строке (в случае веб клиента) и в строке запуска (в случае тонкого клиента).
Но с гуидами это только первый слой ада, дальше вы столкнетесь с перегенерируемыми ключами свойств и не постоянными именами объектов в интерфейсе. Поэтому мой вам совет - для тестирования 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 пока не слышал, спасибо за наводку.
А как вы пишите нагрузочные скрипты в ТестЦентре? Там же вроде нет рекордера. Он есть в сценарном тестировании, но его файлы потом не скормить в ТЦ.
Передача логопаса:
В 1С подавать нагрузку можно разными способами. И тестировать веб сервисы через jmeter вполне можно. Но тестировать UI намного проще через инструменты автоматизированного тестирования, предоставляемые платформой. Вы же для обычного сценарного тестирования будете Selenium с авторекордингом брать, а не с нуля css в jmeter нвковыривать? Тут так же.
Для большинства сервисов есть плагины и инструменты, а для 1с нихрена нет, так как вендор не заинтересован в раскрытии экосистемы вовне и во главе всего тулинга стоит тотальный NIH-синдром.
Про VA - странно, что вы её изучали, и не заметили геркин. Потому что VA - это буквально фича-плеер геркин файлов так же как и cucumber. Вы точно VA изучали?
Рекордер UI есть в составе платформы. Как и генератор 1C-кода для проигрывания записанных шагов через механизм автоматизированного тестирования. Дополнительно в VA есть генератор фича-файлов на базе записанного рекордером сценария + в VA есть расширения языка геркин для поддержки циклов, условий, переменных и прочего.
Странный какой-то подход у автора статьи.
Стресстесты обычно выявляют "бутылочные горлышки" у серверов.
Если JMeter не знает о модулях 1С:ERP как он будет выяснять какой из них приводит к "тормозам"?
В этом случае нужно не выбирать между двумя инструментами, а использовать оба.
JMeter - для выявления узких мест между клиентом и сервером, а 1С:Тест - для поиска тормозов внутри самой 1С:ERP.
JMeter предполагается использовать для подачи нагрузки, а для мониторинга и поиска узких мест - средства 1С
Как же Вы смоделируете нагрузку без стандартизованного объемного теста?
В этом-то и смысл объёмных тестов - подать некую заранее измеренную нагрузку на железо и программное окружение и замерить отклик.
Без средств 1С - не измерить никак. Нагрузка от итерации к итерации будет разной.
Я делал подобный тест на версии 2.4 - достаточно давно.
И да - тогда к объемному тесту были вопросы.
Не знаю как дело обстоит сейчас.
Но тем не менее - получилось подбоом параметров СУБД и кластера получить приемлемый отклик.
Для стендэлон-систем на мой взгляд что-то настраивать бесполезно.
Просто системные требования отрабатываем и "не мучаем дитю"...
Но может быть есть прогресс в этой области и я отстал...
Так что ты решил? И где собственно сама нагрузка?
Так и не понял в чем состоит особенность нагрузочного тестирования, да и где само тестирование?
И тут возникает целый набор проблем.
Проблема, собственно, всего одна...
Выводы будут, графики, узкие места, профилирование, какая была конкретность на каком оборудовании?
1С всё глубже укореняется в бизнес-процессах
вы из XX века нам пишите?
Проводить таким образом нагрузочное тестирование 1С это как сравнивать мерседес и москвич по скорости вращения колес.
Некоторая корреляция конечно будет)
Нагрузочное тестирование 1С - это прежде всего определить реальную нагрузку на текущую базу и масштабировать ее,
Это 99% успеха
Если совсем лень - то Стандартный нагрузочный тест из того же КИП.
А так вы протестировали веб-сервер.
Т.е. заголовок Особенности нагрузочного тестирования веб-сервера 1С: Предприятие
Будет полезно если подробнее расписать
Попробуй авторизовать с помощью строки "<ИмяПользователя>:<ПарольПользователя>" закодированной с помощью base64. Пожалуйста, поделись получилось или нет
Особенности нагрузочного тестирования 1С: Предприятие