Промышленное тестирование конфигураций в 1С

31.01.25

Разработка - Тестирование QA

Чтобы обеспечить высокое качество тиражной конфигурации 1С, ручного тестирования недостаточно – нужно учесть множество комбинаций функциональных опций, группы доступа и влияние подсистем друг на друга. Расскажем о промышленном тестировании флагманского продукта 1С:ERP и его дочерних конфигураций.

Анастасия: Меня зовут Анастасия Андриянова. Мы с Леонидом Паутовым отвечаем за тестирование конфигурации 1С:ERP. Расскажем, как организован этот процесс в нашем отделе и в целом в фирме «1С».

Начнем с основ. Мир внедрения и мир разработки – это два разных мира. Если на внедрении все понятно – есть конкретная организация и конкретные пользователи, то при тестировании типовой конфигурации есть множество разных вариантов – разные функциональные опции, разные настройки в учетной политике. И мы сейчас с Леонидом попытаемся совместно рассказать об этой непростой задаче – промышленном тестировании конфигураций в компании-разработчике, фирме «1С».

 

 

Анастасия: Я работаю в фирме «1С» с 2006 года. Начинала в отделе качества. И вот уже 12 лет я работаю под руководством Алексея Моничева – занимаюсь вопросами качества конфигураций ERP\КА\УТ и отвечаю за сроки выпуска их релизов.

 

 

Леонид: Меня зовут Леонид Паутов, я тимлид группы качества в отделе 1С:ERP. Много лет занимаюсь вопросами повышения качества 1С:ERP и других конфигураций. И еще я автор фреймворка для тестов – Vanessa Automation.

 

 

Леонид: В ходе доклада мы хотим поделиться опытом – рассказать, какой путь мы прошли, и к чему пришли в данный момент:

  • Погрузим вас в наше закулисье – покажем, как мы разрабатываем и тестируем 1С:ERP.

  • Расскажем, что делать, если у вас мало железа для тестов, и как его найти без особых затрат.

  • Стоит ли дружить с Git и docker.

  • Нужно ли хранить код и тесты «в одной корзине».

  • И может ли 500 ванесс спеть хором?

Доклад будет интересен и тем, кто только интересуется темой тестирования, и тем, кто уже глубоко в этой теме – для таких продвинутых слушателей на слайдах будет специальная иконка. И, конечно, доклад должен быть интересен тем, кто хочет узнать, что же происходит у нас внутри «1С».

 

 

Анастасия: Начнем с самого начала. Конфигурация 1С:ERP вышла больше 11 лет назад – расскажу, что у нас было, и к чему мы сейчас пришли.

 

 

Анастасия: Как мы работали 10 лет назад:

  • 10 лет назад мы вели разработку в хранилищах конфигурации. У нас была очередь на заливку – я ходила по группе разработки с блокнотиком и записывала: «Вы заливаетесь в четверг, вы – в пятницу» и так далее.

  • Всё тестировали вручную.

  • Автотесты были, но их было очень мало – можно считать, что их не было.

  • Регрессионное тестирование – это была целая история. Тестировщики с разработчиками садились на три месяца и с нуля тестировали все бизнес-процессы вручную по списку: «Завести организацию», потом «Завести сотрудников» и так далее. Все сценарии мы тестировали вручную с нуля.

  • Сборка была полуручная – это тоже отдельная история. У нас был специальный компьютер-билдер, куда вся фирма «1С» приходила собирать свои конфигурации – БП, ERP и так далее. Это тоже была интересная история – там подкладывали специальные батники и т.д.

  • И была отдельная группа тестирования – нам тогда казалось, что так работать эффективнее.

Как мы работаем сейчас:

  • Мы используем современные технологии – Git, EDT, GitLab, Docker. Далее подробно об этом расскажем.

  • У нас все еще есть ручное тестирование – мы от него не ушли, техпроекты мы тестируем вручную.

  • У нас очень много автотестов. Мы используем Vanessa Automation в связке с СППР. СППР – это тоже наш продукт, его разработали в нашем отделе. Мы постоянно дорабатываем его и используем для наших целей.

  • Регрессионное тестирование у нас тоже на автотестах. Но при выпуске такого продукта страшно доверять все роботам, поэтому закладываем себе еще 5 дополнительных дней, чтобы проверить все стыки вручную.

  • Сборки у нас каждую ночь – без учета человека.

  • И тестировщиков мы распределили внутри каждой группы разработки. Это позволило тестировщикам раньше включаться в проект – свои сценарии тестирования они пишут уже на этапе проектирования.

 

 

Анастасия: Немного о составе ERP.

В нашу конфигурацию входит не только код, который писали разработчики ERP, мы заливаем еще 12 библиотек. Их в основном тестируют сами разработчики библиотек. Мы тестируем только некоторые.

 

 

Анастасия: Разработку мы ведем с помощью технических проектов – это наш внутренний жаргон, терминология СППР. А в общепринятой терминологии технический проект – это большой фича-бранч.

На экране представлен шаблон для работы с техпроектом, у него 6 этапов:

  • открытие проекта;

  • проектирование;

  • разработка;

  • тестирование;

  • помещение изменений в ветку версии;

  • прочие работы по проекту.

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

Помимо веток технических проектов у нас есть:

  • релизные ветки – оттуда мы выпускаем релиз;

  • и багфиксовые ветки – для исправления ошибок.

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

А про особенности архитектуры тестирования расскажет Леонид.

 

 

Леонид: Многие уже знают, что из кодовой базы 1С ERP выпускаются и другие продукты. Они как бы из нее вырезаются – такие, как «Комплексная автоматизация», «Управление торговлей». Поэтому корректно говорить про архитектуру группы проектов.

  • Ключевым проектом в этой группе является ERP+. Название ERP+ означает, что в этом проекте есть все метаданные от ERP и еще немного – например, там есть специфические планы обмена, которые есть только в «Управлении торговлей», но нет в самой ERP.

  • Дальше из этого проекта с помощью механизмов вырезки мы получаем другие проекты. Первый и главный из них – это ERP RE, что расшифровывается как ERP Russian Edition. Это та самая ERP с сайта релизов, которую внедряют партнеры – этот продукт вы все знаете как ERP.

  • Также из ERP мы вырезаем «Комплексную автоматизацию» и «Управление торговлей».

  • Из «Управления торговлей» мы вырезаем «Управление торговлей базовую».

  • Еще из ERP+ мы создаем ERP World Edition – это конфигурация для международного рынка, в которой нет специфики российского учета. Там нет НДС, счет-фактур и подобного.

  • Дальше с помощью механизмов перевода мы создаем ERP WE на английском – там переведены код, метаданные и интерфейс.

  • И еще есть две конфигурации – «Управление торговлей» для международного рынка и ее переведенный вариант.

Таким образом, когда мы хотим протестировать ERP, нам на самом деле надо протестировать все эти девять проектов.

 

 

Леонид: Очевидно, что разработкой и тестированием проектов 1С:ERP нужно как-то управлять – для этого мы используем СППР.

Расскажу, как мы используем СППР с точки зрения тестирования.

  • В СППР находится редактор тестов, он же редактор сценариев. Сами сценарии находятся в репозитории Git, а в СППР мы их именно редактируем.

  • Кроме этого, в СППР находится расписание запусков сессий тестирования. Именно СППР определяет то, в каком объеме и как именно будет протестирована конкретная ветка. СППР создает запуск тестирования, который и будет тестировать конкретный техпроект.

  • Потом в СППР приезжают результаты тестирования, которые можно посмотреть в виде отчетов – поговорим об этом позже.

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

 

 

Леонид: Чтобы все это работало, нужна инфраструктура.

  • Ключевым объектом инфраструктуры у нас является GitLab-сервер – наше хранилище репозиториев Git, и, конечно же, Continuous Integration сервер.

  • Для всего этого нужно железо. Основную часть железа нам поставляет тестовое облако, которое находится внутри фирмы «1С». И еще часть железа мы берем от компьютеров сотрудников. Про это расскажу подробнее потом.

  • Ну и, конечно же, у нас есть сервисы для управления и для мониторинга инфраструктуры.

 

 

Леонид: Поговорим про тестовое облако. Оно нам дает определенные мощности, из которых мы потом создаем нужные нам виртуальные машины.

Наше облако создано на базе OpenStack. На экране приведены реальные данные, которые мы используем на данный момент:

  • у нас 1200 ядер процессора;

  • 2,4 терабайта оперативной памяти;

  • 11 терабайт быстрых SSD дисков;

  • 15 терабайт обычных дисков;

  • всего получилось 120 виртуальных машин.

Мы используем подход «Инфраструктура как код» – все машины создаются автоматически скриптами и полностью настраиваются. Мы для этого используем Ansible и механизм оркестрации OpenStack.

Во время тестирования мы поняли, что железа всегда мало. И в нашем тестовом облаке есть классная фича – если у другого отдела есть ресурсы, которые он временно не использует, мы можем забрать их себе. Например, мы можем забрать себе неиспользуемую оперативную память, которая была выделена для другого отдела, и подключить ее к определенной виртуальной машине. Это дает примерно плюс 25% к текущей мощности облака.

И есть горизонтальное и вертикальное масштабирование – мы можем создать много разных машин и менять параметры этих машин так, как нам надо.

 

 

Леонид: На скриншоте показан типичный пайплайн создания виртуальной машины – это реальный скриншот из нашего GitLab CI. Все этапы создания и настройки полностью автоматизированы – после создания тестируется правильность настроек и готовность машины к работе.

 

 

Леонид: Немного технической информации. У нас довольно сложная инфраструктура и много типов виртуальных машин – некоторые самые основные типы я привел на слайде.

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

Синими скобками на слайде выделены машины, которые мы используем на подготовительной стадии.

  • Docker-checkout – это машины, которые нужны для того, чтобы получить данные из репозитория. У нас в репозитории лежит горячий кэш – он довольно большой.

  • Docker-edt – это специальные виртуальные машины с EDT, которая собирает cf-файл, делает перевод, вырезку конфигурации и так далее. Там чуть более мощные машины.

  • И основные наши рабочие лошадки – это машины docker. Их у нас 50 штук, они шестипоточные. И они нам дают примерно 300 потоков тестирования, чтобы мы могли одновременно тестировать в параллельных потоках 300 ERP.

Все docker-контейнеры работают в Linux на Ubuntu 20.

Еще есть несколько Windows-хостов, они выполняют специфические задачи.

 

 

Леонид: Как я уже говорил, железа всегда мало, его всегда не хватает.

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

Мы посмотрели – у нас отдел большой, простаивают сотни достаточно мощных компьютеров и ничего не делают. И решили на них тоже запускать тесты ERP.

 

 

Леонид: Сказано – сделано:

  • поставили Docker Desktop;

  • поставили службу GitLab runner;

  • обмазали все это скриптами;

  • эмпирически вычислили, что нам для запуска дополнительного потока нужно 64 гигабайта памяти;

  • и дополнительный SSD-диск, чтобы все это не конфликтовало с тем, что делают разработчики, тестировщики или другие сотрудники.

С помощью этих машин мы собираем всяческие метрики.

В результате мы к 300 потокам тестирования, которые нам давало облако, получили еще +200 потоков тестирования от машин разработчиков – это достаточно много.

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

Сейчас мы уже подключили все машины и начали присматриваться к сотовым телефонам. Шутка, конечно.

 

 

Леонид: Но совсем не шутка обслуживать такую тестовую инфраструктуру.

Обслуживание сотен виртуальных машин требует автоматизированных сервисов. Может случиться такое, что виртуальная машина вышла из строя, например, кончилось место на диске или произошел другой сбой. Такая машина очень быстро может «перемолоть», т.е. сделать красными много заданий, и кто-то должен среагировать и вывести её из пула.

Для этого у нас существует сервис, который находит такие машины и снимает с них теги, чтобы они перестали выполнять задания. А потом другие сервисы перезапускают задания, которые эта машина успела «сломать».

Кстати, на представленной анимации – реальные фотографии серверной нашего тестового облака.

Для расследования проблем мы используем классическую связку Grafana + Prometheus.

  • Grafana – это инструмент для визуализации, мониторинга, демонстрации и анализа данных.

  • Prometheus – это система, предназначенная для сбора и анализа данных о работоспособности IT-оборудования.

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

 

 

Анастасия: Помните, в самом начале Леонид обещал вам рассказать про 500 ванесс, которые поют хором?

CI у нас не останавливается никогда – он всегда работает, всегда загружен.

На слайде – график загрузки контура CI за неделю.

На графике хорошо видны всплески нагрузки – это загрузка контура CI ночью. Днем разработчики коммитят, пишут код, а в 20:00 запускаются их персональные компьютеры, и мы видим всплески – это работа ночью.

 

 

Анастасия: Так как за одну ночь мы не успеваем протестировать все ветки, часть веток тестируются в выходные. В это время нагрузка на CI максимально большая – тесты запускаются практически постоянно.

На слайде можно видеть, что максимальное значение параллельных потоков тестирования – где-то 550. Это те самые 550 ванесс, которые у нас поют хором.

 

 

Леонид: Дальше я хочу показать, как у нас устроены пайплайны.

Если кто не знает, пайплайн – это конвейер или последовательность действий. Обычно пайплайн состоит из заданий, а задания часто делят на стадии.

На слайде – скриншот нашего реального пайплайна, который тестировал ветку 2.5.17 основного проекта ERP. В этом пайплайне 463 задания: каждый из овальчиков – это либо тест, либо группа тестов.

Но данный скриншот не дает полной картины для понимания состава пайплайна, поэтому мы сделали небольшую анимацию.

 

 

Леонид: Вот так в реальности выглядит пайплайн с полным набором тестов для одной ветки ERP.

 

 

Леонид: А как вы думаете, сколько часов тестируется ERP?

Тестирование мастер-ветки занимает примерно 600 машино-часов. А тестирование со всеми дочерними проектами – я напомню, что проектов у нас 9 – примерно 1500 машино-часов.

Мы прикинули, что если бы это один человек тестировал вручную, это занимало бы где-то полтора человеко-года.

 

 

Леонид: За сутки при полной нагрузке тестовая инфраструктура у нас выполняет 12000 машино-часов. Обычно такое происходит в самый нагруженный день – это суббота.

А за неделю полная нагрузка на инфраструктуру – где-то 65000 машино-часов. Это очень много человеко-лет, мы даже не стали считать, сколько это.

 

 

Анастасия: Зато мы можем посчитать количество веток, которые находятся у нас в тестировании.

У нас в работе ежедневно используется около 120 веток, но CI пропускает только 21-25 веток в сутки. Поэтому многие ветки становятся на тестирование в выходные.

Для управления всем этим потоком у нас в СППР есть планировщик управления тестированием.

У каждой ветки есть приоритет тестирования, настройки запуска, и на основе приоритета тестирования ветки попадают в расписание планировщика. Если какую-то ветку нужно продвинуть, релиз-менеджер ставит ее тестироваться вручную.

 

 

Анастасия: С помощью настройки запуска тестирования мы можем указать для конкретной ветки в СППР состав тестов, которые должны быть запущены:

  • На ветках техпроектов и релизов мы обязательно прогоняем полные тесты.

  • А на багфиксовых ветках нам полные тесты не нужны, поэтому мы можем управлять составом тестов:

    • либо с помощью тегов;

    • либо через список тестов;

    • либо комбинацией – список тестов и теги.

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

 

 

Леонид: Мы используем разные типы тестов – классические дымовые тесты, сценарные тесты и тесты «цепочек» документов:

  • Дымовые тесты – это автоматические тесты на открытие всех форм, проведение/запись документов и так далее.

  • Сценарные тесты – это тесты эмулирующие действия пользователя.

  • Ну а тесты «цепочек» – это немного модернизированные сценарные тесты для проверки движений. О них я расскажу подробнее позже.

 

 

Леонид: В качестве дымовых тестов мы используем внешние обработки для автотестирования, которые перечислены на слайде.

Важно, что эти тесты доступны на сайте релизов 1С в разделе ERP – все, кто имеет доступ к релизам нашей конфигурации, могут их скачать.

Эти обработки включают как классические смоук-тесты – такие, как открытие форм, так и специфические – например, проверка закрытия месяца.

 

 

Леонид: Один из специфических тестов, которые мы используем – это манки тест (MonkeyTest.epf).

Когда мы реализовывали проект по переводу одной из конфигураций, мы столкнулись с тем, что ошибки перевода вызывают исключения в коде: «Поле объекта не обнаружено», «Ошибка при выполнении запроса» и так далее.

В результате мы решили сделать тест, который выполняет весь код ERP по максимуму – открывает все формы, нажимает все кнопки и заполняет все поля случайным образом.

Сказано – сделано! Сделали тест, и он стал находить нам эти ошибки.

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

Тест потребляет достаточно много ресурсов, и если его запустить на ERP, он отработает примерно за 450 машино-часов при выполнении в 700 потоков.

 

 

Леонид: Еще один вид тестов – тесты «цепочек» документов.

Мы столкнулись с проблемой, что сценарные тесты не очень подходят для моделирования движений, потому что там используется UI – форма должна открыться, прокешироваться, потом нужно дождаться, пока все закроется и так далее. А нам, чтобы проверять движения документов в сценарных тестах, нужно моделировать сотни примеров.

Но и в чисто программный API мы тоже уйти не можем, потому что некоторые действия – заполнение для документа каких-нибудь категорий – через внешний API недоступны. Это доступно только в интерфейсе.

Решили сделать гибридный вариант – специальные сценарные тесты для моделирования «цепочек» документов и проверки их движений.

Мы доработали СППР и добавили в карточку сценария флажок «Необратимо меняет данные» – его видно на левом скриншоте на слайде. Если этот флажок снять, обычный сценарий тестирования превращается в цепочку – такие сценарии выполняются подряд без перезапуска ERP.

Создали несколько специальных шагов, которые программно проводят и распроводят документы на стороне клиента тестирования с помощью расширения VAExtension и так же программно работают с отчетом.

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

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

 

 

Леонид: Отдельный мир – это мир 1С:Фреша.

Наверняка вы знаете, что ERP и «Комплексная автоматизация» доступны в режиме сервиса, развернутого по технологии 1C:Fresh – это классический SaaS (Software as a service), когда программа находится в облаке.

Для нас это отдельный мир, потому что там специфические требования – нам нужно проверять, что в ERP корректно создаются области, корректно проходит миграция из «коробки» во фреш и обратно и т.д.

Для работы в режиме 1С:Фреш мы написали специальный сценарный тест, который в реальном менеджере сервиса, в компоненте облака, нажимает на кнопки, создает конфигурацию, обновляет ее, делает все эти миграции. Для нас это обычный сценарный тест, но для этого пришлось поднимать специальный заранее настроенный стенд.

 

 

Леонид: Тест закрытия месяца (CheckMonthClose.epf) – это тоже отдельный мир, его тоже нельзя реализовать на обычных сценарных тестах.

  • У нас есть специальные эталонные базы, в которых наколочено много разных правильных эталонных примеров.

  • Тест перерасчитывает движения документов по финансовым регистрам.

  • Проверяет расчет себестоимости, проводки, НДС, взаиморасчеты и так далее.

  • Выполняет закрытие месяца – перезакрывает сразу много месяцев.

  • Потом он сравнивает текущие движения по регистрам с эталонными движениями и регистрирует расхождения в СППР.

  • А дальше ответственный за этим смотрит и решает, что с этим делать – это ошибка или плановое поведение.

Причем сам код теста встроен в ERP, и его может использовать любой желающий – внешняя обработка тестирования просто вызывает его методы.

На слайде – пример расхождений, которые регистрируются по итогам выполнения этого теста в СППР.

 

 

Леонид: Когда все сессии тестирования выполнились, нам нужно где-то посмотреть результат отчетов.

На раннем этапе, когда мы развивали нашу систему, мы, как и многие, использовали Allure – прямо на GitLab через GitHub Pages прикладывали ссылки на Allure-отчеты.

Потом мы поняли, что в Allure очень не хватает гибкости – нам нужны хитрые отборы и группировки, такие как в системе компоновки данных.

Поэтому решили пойти другим путем – мы научили СППР загружать данные напрямую с GitLab CI, прямо из артефактов считывать данные JUnit-файла. И все – результаты складываются в специальный регистр сведений, из которого можно строить отчеты.

Такая реализация очень важна, потому что у нас тестируется одновременно 9 проектов, а тест при этом работает один и тот же – он может в ERP пройти, а в «Комплексной автоматизации» упасть. И нам это нужно видеть – при том, что фактически это одна сборка, где собираются сразу 9 проектов.

На слайде как раз видно, как один тест отработал в разных конфигурациях.

 

 

Леонид: Нас иногда спрашивают – сколько у нашей команды всего сценарных тестов. Настя, напомни?

Анастасия: Наверное, вопрос не очень корректный, потому что тесты бывают и большие, и маленькие, состоящие из одного шага или как цепочки документов.

Высокоуровневых сценариев у нас примерно 2200, с подсценариями – 6300.

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

 

 

Анастасия: А еще часто задают вопрос – как правильно организовать хранение тестов и кода конфигурации? Где хранить исходный код конфигурации, а где – тесты?

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

Поэтому сейчас мы все храним в одном репозитории – у нас там находятся и тесты, и настройки, и исходный код конфигурации.

 

 

Леонид: Первый коммит в проект 1С:ERP датируется 9 сентября 2013 года.

Переход от хранилища к работе в формате Git+EDT мы сделали в 2018 году. При этом вся история была сконвертирована, и в Git-репозитории все коммиты из хранилища есть.

Сейчас в репозитории примерно 380 тысяч коммитов, а скорость прироста – где-то 1300 коммитов в неделю.

Если попытаться клонировать этот репозиторий к себе, получится каталог размером в 21 гигабайт – таков наш репозиторий, таковы наши реалии. Там где-то 112 тысяч файлов и примерно 12 миллионов строк кода.

 

 

Леонид: Мы периодически сталкиваемся с задачами, которые находятся на стыке разработки и тестирования.

Мы при разработке используем EDT, но не у всех сотрудников он установлен – например, аналитикам и тестировщикам EDT может быть не нужен. Но у всех постоянно возникает необходимость собрать cf-файл из ветки определенного техпроекта, а таких веток у нас много.

Мы решили сделать быстрый механизм сборки – сделали расширение в СППР, чтобы можно было собирать cf-файл из любой ветки без использования EDT.

Но если у нас 100 сотрудников одновременно нажмет на кнопку «Сборка .cf», тестовая инфраструктура сформирует большую очередь, и конфигурация будет собираться довольно долго.

Поэтому файл конфигурации собирается у сотрудника на компьютере, при этом сама сборка происходит в докере с установленным EDT, но сам EDT на ПК действительно ставить не нужно.

Помните, я говорил о том, что мы используем компьютеры сотрудников, чтобы на них запускать тесты? Тут мы переиспользуем эту технологию, так как докер уже установлен на компьютер сотрудника, и он может принимать джобы.

Сотрудник нажимает кнопку «Сборка .cf», и где-то через час ему приходит оповещение в Системе взаимодействия – вот ваша ссылочка, скачайте, пожалуйста, собранный файл конфигурации.

 

 

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

Я предложил им использовать интерфейс GitLab CI, который позволяет запускать произвольные наборы тестов на любых ветках, но сотрудники попросили упростить задачу до одной кнопки.

Мы сделали кнопку в СППР, и теперь кто угодно может запустить дымовые тесты в любой момент времени.

Фактически там просто через стандартный API запускается пайплайн, куда передаются ключи для отбора по дымовым тестам.

 

 

Леонид: Отдельная грань качества – это то, как команды умеют согласовывать между собой изменения.

У нас проект большой, команд много. Есть вертикальные подсистемы – это когда за подсистему отвечает одна команда. И есть горизонтальные подсистемы, которые проходят через всю ERP.

С изменениями в горизонтальных подсистемах постоянно возникали проблемы. Потому что вы можете поправить любой файл – залезть в любое метаданное, и коллега без Git этого не увидит.

Нужен был механизм для согласования изменений объектов метаданных.

 

 

Леонид: Мы реализовали такой механизм – в справочнике «Ветки» есть гиперссылка «Изменения метаданных», по которой открывается список изменений.

СППР по регламентному заданию обращается в CI-сервер и подтягивает все изменения по ветке.

 

 

Леонид: Ответственный за объект метаданных получает в Системе взаимодействия оповещение, что в его объект пытаются внести изменения. И дальше можно либо согласовать эти изменения, либо откатить их, начать какое-то обсуждение.

Таким образом решается проблема, что одна команда разработки может изменить объекты другой команды без согласования с ними.

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

Также СППР научился показывать двустороннее сравнение – можно прямо в СППР посмотреть, что именно изменили.

 

 

Леонид: Запуск тестов на дочерних проектах – это отдельный мир.

У нас 9 проектов и, например, «Заказ покупателя» есть и в ERP, и в «Комплексной автоматизации», и в «Управлении торговлей». Было бы странно написать тест для ERP, а потом еще раз дублировать его для всех дочерних конфигураций проекта.

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

Но один и тот же объект может вести себя в конфигурациях немного по-разному – например, он в ERP такой же, как и в «Комплексной», но чуть-чуть отличается. Не будем же мы писать на это два сценария.

Мы добавили несколько специальных шагов, которые позволяют проверить контекст запуска теста: если мы находимся в «Комплексной», делай так, если в ERP WE – так, а в остальных случаях – так.

Такие шаги показаны на правом скриншоте. С их помощью один сценарий может запускаться на всех дочерних конфигурациях проекта.

 

 

Леонид: Немного про перевод. Я уже говорил, что у нас есть конфигурации, которые переводятся на английский язык – переводится код, метаданные и интерфейсы.

Причем перевод кода для программного продукта – это вообще довольно редкая ситуация в мировой практике, поэтому мы сейчас поговорим именно про конфигурации ERP WE ENG и Trade WE ENG, которые выделены на слайде зеленым.

 

 

Леонид: На слайде пример того, как переводятся метаданные для ERP WE: слева список метаданных на русском, а справа – переведенный вариант. Переводится код, имена объектов метаданных и интерфейс.

 

 

Леонид: Для перевода мы используем 1С:Language Tool, который встраивается в EDT. Про это есть отдельные доклады, я не буду про это подробно рассказывать.

Но у нас возникла задача адаптации существующих тестов под английские имена метаданных.

Например, есть тесты, которые работают в ERP WE на русском, и их нужно запустить в ERP WE на английском, и никто не будет писать их с нуля два раза. Но там же метаданные переведены, и тест будет падать. Поэтому надо переводить тесты.

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

Получилось, что перевод для сценария нужен, но точечный. И в результате сценарии остались похожими – практически один и тот же тест работает и на ERP в русском коде, и в ERP в английском коде.

 

 

Леонид: Нагрузочное тестирование – это вообще отдельный мир. Про это можно делать прям большие доклады. Я вкратце расскажу, как это у нас работает.

Есть отдельный железный стенд, который не использует виртуализацию – специально для того, чтобы делать чистые замеры. На этом стенде раз в неделю замеряется работа ключевых операций, таких как:

  • проведение документов;

  • открытие форм;

  • формирование отчетов;

  • обработчики обновления информационных баз.

Нам важно понять, привели ли последние доработки к деградации скорости работы конфигурации.

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

Вообще по нагрузочному тестированию у нас целая система отчетности, я здесь показываю только маленький кусочек.

 

 

Леонид: Тестирование патчей. Думаю, все знают, что если в конфигурации нашли ошибку, надо либо ждать обновления на следующую версию релиза, либо ставить себе патч.

Патч – это, по сути, расширение. Само собой, нам нужно проверять, как это расширение сформировалось, и как оно работает.

В СППР прямо в форме ошибки есть флаг «Сформировать патч по исправлению ошибки» – при установке этого флага СППР лезет в Git, находит коммит исправления и автоматически формирует патч через механизм БСП.

Но дальше же патч надо проверить – точно ли он все исправляет, а не ломает? Для этого тоже запускается сессия тестирования уже с накаткой этого патча. Таким образом мы проверяем, что патч реально работает.

 

 

Леонид: Мы периодически слышим от партнеров и разработчиков вопрос: «Вы хорошо рассказываете, а можете поделиться вашими технологиями?».

Давайте напомню, как мы делимся технологиями с партнерами и разработчиками:

  • СППР. Конфигурацию СППР разрабатывает наша группа, в том числе, я. Мы сами им пользуемся и поставляем его наружу. Несколько слайдов назад я вам показывал механизм для согласования изменений в объектах метаданных. Мы сделали его для себя, но это абсолютно типовая функциональность, которую могут использовать все, кто имеет доступ к скачиванию последних релизов СППР.

  • Дымовые тесты. Мы их тоже выкладываем наружу – вы можете скачать наши тесты на сайте релизов в разделе ERP.

  • Фреймворк тестирования. Мы используем абсолютно типовой фреймворк тестирования Vanessa Automation. Там нет никаких кастомизаций, специальных сборок – все как есть. Тоже можно скачать с GitHub.

  • А тесты? Периодически нас просят: «Дайте ваши тесты!» И тут интересная ситуация. Мы вообще «за» и хотели бы ими делиться. Несколько раз проводили эксперименты – передавали партнерам тесты. Причем передавали не сразу все 2000 сценариев, а штук 200 для начала. И каждый раз это заканчивалось неудачно. По опыту эксплуатации мы поняли, что нам нужно не только тесты передать, но и всю обвязку, чтобы эти тесты могли запуститься: скрипты, инфраструктуру и специалистов, которые умеют этим пользоваться. И тут возникают основные проблемы. Надеюсь, мы их когда-нибудь решим, но пока ситуация такая.

 

 

Леонид: Причем у нас есть не только автотесты, еще и ручное тестирование осталось.

Анастасия: Да, мы не все доверяем роботам – что-то тестируем вручную. Прежде всего мы тестируем вручную наши техпроекты – большие фиче-бранчи.

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

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

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

 

 

Анастасия: Регрессионное тестирование также требует проверки вручную. На это мы выделяем 5 дней – чтобы проверить стыки и точно выпустить качественную конфигурацию.

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

 

 

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

Например, мы для каждого техпроекта стали добавлять задачу «Подтвердить качество реализации проекта у разработчиков и тестировщиков».

Все разработчики и тестировщики, которые участвуют в проекте, просто пофамильно отмечают: «Подтверждаю».

Казалось бы, пустячок, но люди не ставят эту пометку бездумно – прежде чем поставить, они могут еще раз залезть и проверить, все ли там правильно работает.

 

 

Анастасия: ERP и КА у нас могут использоваться в сервисе 1С:Фреш.

Когда релиз уже готов, все наши внутренние проверки сделаны, мы заливаем новый релиз на 30% областей 1С:Фреш и мониторим обращения от пользователей об ошибках.

Если в течение суток сообщений об ошибках нет, на следующую ночь мы заливаем обновление на оставшиеся 70% областей 1С:Фреш. И если за следующие сутки сообщений об ошибках не будет, мы выкладываем новую версию на сайт релизов.

Но если приходит ошибка, самые опытные сотрудники, включая руководителей разработки, собираются, обсуждают, в чем может быть проблема, как пропустили, и быстро-быстро делают патч. У нас рекорд исправления ошибки в 1С:Фреш – 2-3 часа.

 

 

Анастасия: Мы делаем тестирование нашего продукта не ради крутости или технологий – мы это делаем, прежде всего, для качества ERP.

  • Главный показатель качества для нас – это минимизация внешних ошибок. Потому что внешние ошибки – это первое, с чем сталкивается пользователь.

  • Дальше – массовость обращений на линию консультаций. Если по одной ошибке нам прислали обращение несколько пользователей, значит, это плохая ошибка.

  • Мы пробовали еще и другие методы оценки нашей конфигурации, но поняли, что самый подходящий показатель – это оценка, которую нам ставят партнеры на семинарах в «Космосе» весной и осенью. В 2024 году нам поставили оценку 4,5.

 

 

Анастасия: Я специально выписала все оценки, чтобы вы посмотрели наш рост:

  • Первые пять лет нам не удавалось получить даже 4 – это был период, когда мы все тестировали вручную. Хорошо, что хоть 3,7 получали.

  • Когда у нас стало развиваться автотестирование, мы получили четверку.

  • И теперь оценка конфигурации от партнеров выросла до 4.5.

Спасибо большое всем, кто видит наши старания и понимает, что качество действительно растет.

 

 

Анастасия: Это же и подтверждают и наши внутренние данные.

На слайде – динамика по внешним (пропущенным) ошибкам поквартально с 2021 года.

Вы видите, что сначала количество ошибок росло. Но в конце 2022 года мы достигли пика, поняли, что больше не хотим продолжать тенденцию роста, и предприняли ряд мер, чтобы улучшить качество ERP.

В 2023 году к нам пришло ошибок на 13% меньше по сравнению с 2022 годом. А если смотреть данные по 3 квартал 2024 года, то улучшение уже на 34%.

 

 

10 лет назад нам казалось нереальным иметь автоматические сборки и автотестирование.

Как вы думаете, что будет через 10 лет? Наверное, искусственный интеллект будет сам писать код и тестировать, а пользователю достаточно будет только подумать о декларации, чтобы она по воздуху прилетела в налоговую?

Поживем – увидим.

 

Вопросы и ответы

 

Можете ли вы поделиться ли Ansible-скриптами, которые разворачивают инфраструктуру?

Пока нет. На данный момент это наши внутренние репозитории.

Почему у вас докер EDT – отдельный?

Это вопрос инфраструктуры и эффективного использования ресурсов.

Если смотреть по машино-часам, которые уходят на подготовительную стадию и на тестирование, там соотношение: 1/6 – на подготовку и 5/6 – на само тестирование. И если все ноды делать одинаковыми, чтобы они работали и с EDT, и с тестами, получается неэффективно, потому что сборка cf на EDT требует больше оперативной памяти, чем один поток обычного тестирования ERP.

А второй момент – для EDT нужен репозиторий, те самые 20 гигабайт. Он их клонирует примерно час. И вы сразу получаете расход по диску 20 гигабайт. Плюс еще тестовая база ERP весит где-то пару гигабайт.

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

Вы говорите, что для тестирования используются компьютеры разработчиков. А как определить, что машина вообще находится в сети и на ней можно тестировать? Какой-то общекоммунальный Prometheus стучится в локальные машины разработчиков?

На каждый компьютер ставится служба Node Exporter – с ее помощью мы понимаем, что происходит с этой машиной, что у нее с ресурсами. Если машина почему-то сломалась, мы должны ее вывести из пула.

А кто в 1С пишет тесты?

Каждая команда решает сама. У нас есть команды разных размеров – и маленькие, и большие.

В некоторых командах есть выделенные тестировщики, и они однозначно пишут тесты. А дальше команда сама решает – подключать разработчиков или нет.

А есть команды, где нет тестировщиков. Например, в БСП вообще все тесты пишут.

Вы приводили пример, что что-то тестируете вручную, а что-то – автоматически. До какого процента покрытия вы дошли сейчас – сколько процентов бизнес-процессов тестируется автоматом, сколько вручную?

Общий подход – все критичное покрываем автотестами. Плюс все ошибки покрываем автотестами.

А процент покрытия именно по бизнес-процессам определить сложно. Предложите методику, мы посчитаем.

Мы думали, как это оценивать – команды рисовали модель в эксельке с функциями, она получилась огромная. ERP же огромная. Там если какая-нибудь функциональная опция переключается, то все по-другому работает.

Там реально много функций. Мы даже для небольшого блока расписывали – огромная экселька получилась. А потом ее нужно еще и актуализировать, ERP же меняется постоянно. И здесь возникает проблема – у этой истории очень большая стоимость поддержки. Мы не придумали, как это быстро делать.

А чтобы посчитать то, что вы хотите, сначала нужно получить такую модель.

Тестируете ли вы интеграции?

Если вы про универсальные обмены через EnterpriseData – да, конечно.

Сколько человек участвует в создании теста? Задействуете ли вы по бизнес-процессу аналитика или консультанта, чтобы он накидал какой-то тест-лист, передал его тестировщику, а он по нему уже фичу написал?

Когда мы тестируем техпроекты, у нас остается база и план сценария для ручного тестирования. И потом либо этот же тестировщик сам пишет тесты, либо он передает автотестировщику, который просто накидывает эти шаги.

Насколько я знаю, в Vanessa Automation для дымового теста нужно каждый раз формировать тест по новым метаданным. А у вас при добавлении нового объекта, нужно ли перегенерировать дымовой тест? Или он на лету подхватит новый объект?

Тесты, которые мы используем для ERP, автоматически подхватят все новые изменения.

Вы можете настроить исключения для объекта, если хотите. Но если вы его не исключите, то и манки тест будет в нем все кнопки нажимать, и дымовые тесты будут пытаться в нем печатные формы печатать, и так далее.

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

Там эмулируется много пользователей, несколько тысяч.

А как вы запускаете несколько тысяч пользователей в Ванессе?

Стенд нагрузочного тестирования у нас не на Ванессе, он ближе к Тест-центру, там Ванесса вообще не используется.

Как обстоят дела с модульными тестами для ERP? В докладе ничего при юнит-тесты не было.

Мы считаем, что это правильное направление, туда надо развиваться, но у нас этот процесс пока не поехал. Мы частично компенсируем это специфическими тестами, которые просто кодом что-то вызывают.

То есть сами тесты кодом у нас есть, но в чистом виде юнитов сейчас нет. А тема правильная. Приветствуем.

Я так понял, что изначально разработка ERP ведется на русском языке, а потом с помощью определенных инструментов вы переводите код и метаданные для редакции World Edition. Тестируете ли вы результат перевода?

ERP World Edition вырезается из ERP+, а она тестируется тестами в полном объеме. Потом она переводится, и тот же набор тестов запускается еще и на переведенной версии.

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

Мы переводим не сами – высылаем словарь для перевода в специальный отдел, который этим занимается, а нам обратно приходит переведенный словарь.

Я не знаю, кто конкретно там переводит – может быть, и искусственный интеллект. Но в отделе работают люди – они эксперты, им виднее, как правильно переводить.

Были ли планы отказаться от этой схемы и сразу начать разработку на английском языке?

Пока таких планов нет.

У меня вопрос по системе вырезки конечных версий из большой ERP+ через систему префиксов. Что за инструменты это делают? Они есть в доступе? Или это вообще часть СППР?

Про это даже есть подробная статья на Хабре.

Если вкратце, в конфигурации есть подсистемы: «Управление торговлей», «Комплексная автоматизация» и так далее. И вы включаете каждый объект в ту или иную подсистему.

А дальше через пакетную команду MergeCfg на вход подается XML, которая говорит: возьми конфигурацию и по этим правилам из нее что-то убери или добавь. И получается другая конфигурация. Эта пакетная команда – часть платформы.

А еще в коде расставлены теги, с помощью которых вырезаются куски кода – это отдельный механизм.

А в СППР просто заведено куча проектов и оттуда все управляется. Правила XML лежат в репозитории, а саму вырезку выполняют задания в пайплайне.

Можно ли использовать СППР для разработки расширений?

У нас нет такой задачи. Мы только патчи в СППР делаем. И вообще все отделы в «1С» делают патчи в СППР.

А отдельные расширения, как проект с родительской конфигурацией – наверное как-то можно. Вроде люди используют.

Вы показывали систему согласования изменений в объектах метаданных. Можно ли ее использовать для хранилищ? Или там в качестве исходников можно брать только EDT или файлы выгрузки из конфигуратора?

Этот механизм поддерживает оба формата – можно использовать и для хранилищ, и для формата EDT.

Вы сказали, что используете для тестирования типовую версию Vanessa Automation, которая доступна всем пользователям. А генератор дымовых тестов вы тоже из нее используете?

Так исторически сложилось, что дымовые тесты были написаны до того, как появился генератор в Vanesa Automation. Поэтому нет, конкретно этот генератор не используется.

Есть ли какие-то планы по доработке этого генератора? Потому что он сейчас фактически не поддерживает функциональность БСП – не использует подключаемые команды, ввод на основании через него нельзя протестировать, и там еще куча ограничений.

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

Как у вас обстоят дела с актуализацией тестов? Насколько много времени на это уходит? Что вы делаете для того, чтобы это время сократить?

У нас все ошибки при тестировании регистрируются в СППР. И там есть поле, где возникла ошибка – если ошибка возникла в тесте, она сразу исправляется. Ошибки в тестах бывает очень часто.

Мы постоянно актуализируем тесты – разработчики тестов где-то 30% своего времени тратят на актуализацию автотестов.

Были ли какие-то идеи как это автоматизировать, чтобы оно само актуализировалось?

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

Мы даже проводили анализ на ломкость тестов – в СППР же есть статистика, и можно проверить, какие тесты ломались чаще всего.

Дальше уже можно провести анализ – тест ломается потому, что функциональность постоянно развивается, либо его просто написали плохо, и он нестабилен.

Вы говорите, что тестирование у вас происходит в основном на Linux. Но разве можно потестировать на Linux и быть уверенным, что потом у пользователей на Windows все будет нормально? Не стоит ли еще дополнительно на Windows потом протестировать?

Мы тестируем на Linux, потому что в докере на Linux получается более эффективная нагрузка на железо.

Но как раз для того, чтобы предотвратить то, о чем вы говорите, у нас сбоку есть блок специальных машин, которые с небольшим отставанием по round-robin проверяют эти потоки еще и на Windows.

Мы не собираемся полностью уходить на Linux, потому что не хотим оторваться от реальности. Поэтому да, Windows-тестирование в определенном объеме у нас тоже есть, чтобы быть уверенным, что это работает.

У нас также есть и отдельное тестирование для файловых версий и клиент-серверного варианта на PostgreSQL и MS SQL. Со всем этим тоже приходится работать. Для этого есть отдельные стенды.

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

У нас более 50 эталонных баз для сценарных тестов. Причем каждая команда сама решает, сколько ей создать эталонных баз.

Тут проблема в том, что некоторые функциональные опции нельзя включить и выключить. Их нужно включить навсегда, а потом набить эталонные данные. И откатить это уже невозможно – такая функциональность. Поэтому приходится создавать для этого отдельные базы.

Конечно, мы стараемся минимизировать количество эталонных баз. У нас есть отдельные базы для закрытия месяца, есть две типовые базы для дымовых тестов.

Мы используем базы, где эталонные данные подготовлены заранее – обновляем их на новую версию ERP и тестируем.

А если кто-то создает новый объект метаданных и к нему нужно добавить какие-то данные, это происходит вручную?

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

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

Я у себя на проектах использую утилиту для измерения покрытия кода тестами Coverage41C. Она написана на Java, там используются библиотеки из EDT и так далее. Есть ли у фирмы «1С» планы по развитию метрики покрытия generic coverage?

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

Мы бы тоже хотели, чтобы в платформе было более изящное встроенное решение, но пока ничего, кроме уже упомянутого, в платформе нет.

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART.

 

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.166.17.

2160 руб.

20.01.2022    8546    30    0    

15

Тестирование QA DevOps и автоматизация разработки Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.17.168.

2400 руб.

04.07.2022    9049    40    1    

31

DevOps и автоматизация разработки Тестирование QA Программист Пользователь Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.30.108.

3000 руб.

05.08.2024    2001    17    1    

11

Тестирование QA Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Наверное, нет пользователя 1С, который не встречал такое сообщение, прерывающее работу системы. Такие ошибки - следствие недоработки программиста, который не смог предусмотреть возможное возникновение ошибочной ситуации при обращении к свойствам объекта. А как это сделать? Попытка ... Исключение - да, способ рабочий, но некрасивый и технически неэффективный. Рассмотрим, какие еще есть способы проверки существования свойства.

21.01.2025    1852    Sergey1CSpb    7    

4

Тестирование QA Системный администратор Программист Бесплатно (free)

Нагрузочное тестирование — трудоемкий, но обязательный этап крупного IT-проекта, который позволяет выявить дефекты, проверить производительность, стабильность и отказоустойчивость решения. Стоимость тестирования связана с количеством пользователей и сценариев: чем их больше, тем дороже. При этом часто нужны многократные проверки, а вычислительных ресурсов на это может не хватить. Как тогда провести испытания высоконагруженной системы и уложиться в бюджет? Рассказываем, как с помощью нового подхода смогли сэкономить и минимизировать ручные операции при испытании производительности систем на платформе 1С.

16.01.2025    914    1C_Community    9    

4

Тестирование QA Программист Бесплатно (free)

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

28.11.2024    3173    user1999010    3    

19

Облачные сервисы, хостинг Linux Тестирование QA Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Завершающая публикация цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием, отказоустойчивостью и прочая, прочая... В этой статье мы определяемся с быстродействием системы, проводим нагрузочное тестирование и отпускаем ее в свободное плавание (зачеркнуто) выпускаем ее в продуктовый контур, где, конечно же, придется отлавливать ошибки, мониторить состояние и т.п.

31.10.2024    1882    capitan    0    

0

Журнал регистрации Тестирование QA Программист Бесплатно (free)

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

21.10.2024    3947    leemuar    8    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Трактор 1265 31.01.25 10:14 Сейчас в теме
Увидел пункт "Отсечка дублей". Возник вопрос:
В ЕРП 7 (семь) обработок по печати этикеток. Предлагаю заменить их все одной универсальной. Примите ли вы мою разработку в состав ЕРП? Денег за неё не прошу. Только милосердия к другим разработчикам. Чтобы меньше приходилось им страдать.
shard; Serg O.; MaxCheet; Tarlich; +4 Ответить
2. support 4456 31.01.25 13:03 Сейчас в теме
(1) Они не разрабатывают, они тестируют. Предложения по развитию платформы можно писать на community@1c.ru
3. amd1986 31.01.25 13:27 Сейчас в теме
Сделали франкенштейна, а потом хвалитесь как преодолеваете трудности по его тестированию. Стыдно должно быть).
На мой взгляд. Конфигурация ERP концептуально устарела.
5. ivanov660 4703 01.02.25 00:41 Сейчас в теме
(3) Ну, у компании 1С всегда был только свой путь. Свое представление о том как правильно.
Радует, что хоть тестирование прикрутили.
8. support 4456 01.02.25 11:57 Сейчас в теме
(3) напиши свой путь, опубликуй здесь, посмотри на своих комментаторов
6. CheBurator 2725 01.02.25 02:39 Сейчас в теме
Как я не пытался понять как, например, будет тестироваться "моя" система, в которой порядка 200 настроечных параметров, сколько придется описать сценариев поведения при разной комбинации этих параметров и к этому еще при одной и той же комбинации параметров поведение системы может сильно различаться от в зависимости от массива исходных данных плюс к этому на куче шагов еще и в зависимости что пользователь потыкает на кнопках своего интерфейса и какие данные повводит - мой мозг этого не соображает и не понимает.
9. support 4456 01.02.25 11:59 Сейчас в теме
(6) ты ничего не понимаешь в тестировании функций
11. CheBurator 2725 01.02.25 13:03 Сейчас в теме
(9) спасибо за очевидность. Я про это и написал. А объяснить как это происходит так нигде толком и не почитать.
13. comptr 35 01.02.25 22:59 Сейчас в теме
(11) есть курсы по тест-дизайну, например вот тут: https://www.specialist.ru/course/tpo21
Нет смысла пытаться за раз покрыть тестами всю систему, это практически нереально и фактически бессмысленно.
Начинать надо с малого, например, покрыть тестами самые часто используемые варианты настроек, самые критичные части программы, части, которые ломаются чаще всего.
CheBurator; kuntashov; +2 Ответить
14. kuntashov 463 01.02.25 23:53 Сейчас в теме
(11) Один из постулатов тестирования про это - "исчерпывающее тестирование невозможно", и одной из задач тестировщика как раз является решение проблемы, которую подбрасывает комбинаторика - уменьшить количество своей работы: организационно, через расстановку приоритетов: что тестировать в первую очередь, что во вторую, а что вообще не тестировать и технически, как правильно в (13) написали, приемов тест-дизайна.

О тест-дизайне был отличный доклад Андрея Крапивина на IE 2023, назывался "Техники тест-дизайна", но, кажется, он еще не опубликован. Но в целом, по ключевому слову "тест-дизайн" можно много материалов найти. Из бумажных книг на русском для желающих погрузиться, можно посмотреть книгу Ольги Назиной "Тест-дизайн". Книга своеобразно написана (разговорным языком), много самоповторения, но читается легко и суть доносит.
andukin; comptr; +2 Ответить
16. CheBurator 2725 02.02.25 00:28 Сейчас в теме
(14) Про тестирование у нас совсем немного было в курсе по разработке трансляторов, про исчерпывающее тестирование там было сказано ;-)
kuntashov; +1 Ответить
44. RustIG 1836 17.02.25 15:35 Сейчас в теме
(6) накопление тестов (сценариев) идет поступательно и последовательно от простого к сложному.
чем больше в написании тестов участвует человек, тем больше будет тестов в ваше копилке.
тесты придется сопровождать и поддерживать при доработке основных механизмов и функционала вашей конфигурации.
также придется дописать в вашу конфигурацию ряд процедур и функций для использования ваших тестов.
у меня в статье есть упоминание и пример простейших автотестов - https://infostart.ru/1c/tools/2009449/

на основе вот этой разработки https://infostart.ru/1c/tools/2127221/ я написал тесты на Авторегистрацию объектов и всех связанных объектов для проверки и тестирования обменов (Альфа-Авто --- Управление торговлей 11) после обновления как АА, так и УТ 11. Пример еще не выложил на ИС - суть простая - обхожу все проведенные документы (по 20 шт каждого вида) - регистрирую их к обмену, далее бегу по полям документов, при нахождении ссылок регистрирую значение этого поля плюс еще 20 значений этого типа (справочников, документов). В общем идея проста - все связанные объекты регистрируются к обмену по одной кнопке, при этом каждого типа я регистрирую по 20 штук (это просто параметр, п о5 штук оказалось мало, 20 штук - вполне подошло).

собственно я с вами согласен, что в среде 1С мало простых примеров тестов и как их программировать - с моей точки зрения, это тоже программирование на имеющихся объектах - программное создание объектов, программное создание элементов форм, программное открытие документов, программное заполнение полей объектов, программное проведение и программное создание связанных документов на основе предыдущего программно-созданного документа.
Представляете, сколько надо написать "программно создаваемых и заполняемых и проводимых" объектов - сколько сценариев при этом потенциально рождается...
понимание сложного начинается с простых элементов - я думаю, вы все прекрасно понимаете про тесты и автотесты.
50. CheBurator 2725 17.02.25 19:50 Сейчас в теме
(44)
Представляете, сколько надо написать "программно создаваемых и заполняемых и проводимых" объектов - сколько сценариев при этом потенциально рождается...

а потом херак! поменяли концепцию или объекты в конфиге к удалению поставили, полетело овердофига тестов. И сидим переписываем заново все тесты...? чтобы они проходили...? или как?
51. RustIG 1836 17.02.25 22:18 Сейчас в теме
(50) ну да, заново часть тестов надо переписать. об этом я уже чуть выше написал.
в целом представьте есть справочник тестов, в каждом тесте есть табличная часть, в которой указываются проверяемые объекты метаданных. По такой логике легко выявить все тесты на "доработку".
Имеется справочник Структура конфигурации, при заливке новой структуры легко сравнить их и выявить измененные объекты метаданных...
и так далее
сейчас появилось несколько конфигураций:
1. Система проектирования прикладных решений - СППР - как раз в этой статье.
2. 1С-Тестировщик
3. 1С-Сценарное тестирование
4. Автоматизированная проверка конфигураций

Можно без них свои тесты начать писать, создав у себя в базе справочник "Тесты (Доп.алгоритмы)".
54. CheBurator 2725 18.02.25 13:12 Сейчас в теме
(51)
в целом представьте есть справочник тестов, в каждом тесте есть табличная часть, в которой указываются проверяемые объекты метаданных.

не представлю ;-) ибо рекурсивный коктейль. где тест на то что в справочнике тестов упомянутый все нужные обьекты метаданных...
7. muskul 01.02.25 05:23 Сейчас в теме
Много букв, есть ли ответ на вопрос как вы тестируете, вступление в силу законодательных новшество, например внедрение 5% ндс. опт проверяется и работает, а например розничные продажи ставятся без ндс. пример конечно не по ерп а к УНФ и куче тем от первых чисел января.
Или в УТ/ЕРП/КА в части новых требований заполнения строки 5а, где печатная форма заполняется по одному сценарию, а а ЭДО по другому и получаем разные результаты? как ваши хваленые тестирования это проходят?
у вас что во всей это системе нету простого живого тестировщика который по ВАЖНЫМ нововведениям про которые все знают и ждут зайдет в документ и нажмет пару кнопок и в живую посмотрит что все сделано и заполняется как нужно?
15. kuntashov 463 02.02.25 00:10 Сейчас в теме
(7)
Или в УТ/ЕРП/КА в части новых требований заполнения строки 5а, где печатная форма заполняется по одному сценарию, а а ЭДО по другому и получаем разные результаты? как ваши хваленые тестирования это проходят?


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

Заполнение отчетных налоговых форм - потенциально такой случай и с большой долей вероятности тут как раз зона ответственности ручных тестировщиков.

Большое количество ошибок в моменте в подобных ситуациях может быть связана со срочностью выпуска релизов, чтобы своевременно среагировать на изменения законодательства, и является следствием компромисса: либо не дать пользователям ничего, они не сдадут отчетность в срок, либо дать что-то, что работает в самых базовых кейсах, а там, где косяки, где-то пользователи докрутят руками, где-то патчи успеем выпустить.

Если что, это гипотеза, как на самом деле в 1С не знаю, но по личному опыту в реальной жизни так и происходит.
17. CheBurator 2725 02.02.25 00:38 Сейчас в теме
(15)
Большое количество ошибок в моменте в подобных ситуациях может быть связана со срочностью выпуска релизов, чтобы своевременно среагировать на изменения законодательства, и является следствием компромисса: либо не дать пользователям ничего, они не сдадут отчетность в срок, либо дать что-то, что работает в самых базовых кейсах, а там, где косяки, где-то пользователи докрутят руками, где-то патчи успеем выпустить.

назыавается "слепить костыль" ;-)
поэтому и надоело мне это все костыльное пограммирование.
ассемблер на ЕС ЭВМ вспоминаю только с теплотой. там если костыль по быстрому влепишь - там запросто еггог или 0С1 (неправильная команда) или 0С4 (ошибка защиты памяти)
45. RustIG 1836 17.02.25 15:42 Сейчас в теме
(7) резонный вопрос - нам внедренцам интересно об этом узнать.
но я так понимаю, 5% НДС это Бухгалтерия - разработка БП - это отдельная группа разработки,
УНФ стоит в сторонке - это другой отдел разработчиков.
Тесты в ЕРП - это отдельный отдел разработки.
Короче , все это разные и отдельные группы разработки.
А значит .... выводы делаем сами :)
10. support 4456 01.02.25 12:01 Сейчас в теме
(7) если многа букв, то не читай, это не для тебя
12. muskul 01.02.25 19:03 Сейчас в теме
(10) Прочитал, я прекрасно понимаю про что тут пишут, про техническую часть тестирования, собрать конфигурации, и т.д.
но вопрос все равно остается, как так тестируют что в релизах происходит то что я написал выше. Еще и хвастаются оценками. как по мне пару тройку лет назад качество релизов было лучше.
18. CheBurator 2725 02.02.25 00:41 Сейчас в теме
Вот опять же интересно: насколько на рынке труда востребована специализация тестировщика?
Насколько это востребовано на рынке 1С - тестировщик в экосфере 1С?
46. RustIG 1836 17.02.25 15:45 Сейчас в теме
(18) фирма 1с и ее разработчики стоят особняком - им требуются особые спецы, не те ,что внедряют типовые и отраслевые... даже вот просто посмотрите требования по вакансиям фирмы 1С - они программируют базовый уровень, которым пользуемся и допрограммируем мы - внедренцы... тестировщик в экосфере 1С - конечно востребован там, где вовсю разрабатываются собственные тиражные продукты.
19. CheBurator 2725 02.02.25 00:41 Сейчас в теме
Попутный вопрос: как в сфере 1С писать тесты, если не представляешь как в массе своей работают пользователи (например при оформлении сделок по торговле), если не владеешь предметной областью где применяется то, что собрался тестировать (сценарии на Gerkin)?
38. AntonSm 30 10.02.25 11:37 Сейчас в теме
(19)
как в сфере 1С писать тесты, если не представляешь как в массе своей работают пользователи


Я, честно говоря, не представляю, как писать конфигурацию, если не владеешь предметной областью.
ИМХО, знание предметной области необходимо, хотя бы самое минимальное в любом случае.
47. RustIG 1836 17.02.25 15:47 Сейчас в теме
(19) сначала идет предметное описание процесса - далее программная реализация тестов, но не наоборот.
то есть предметную область знать надо - в 1С есть методологи и аналитики, которые предметно описывают процесс.
20. CheBurator 2725 02.02.25 00:44 Сейчас в теме
Кто из крупных франчей применят в выпуске продукта тестирование на постоянной основе (тестирование всякого рода).? Тестирование, разработку через тестирование итд? Кто применяет тестирование в проектах внедрения, в конторах где ФОТ собственно и состоит из стоимости проектов?
29. andukin 05.02.25 08:09 Сейчас в теме
(20)
Тестирование, разработку через тестирование итд? Кто применяет тестирование в проектах внедрения, в конторах где ФОТ собственно и состоит из стоимости проектов?

Первый БИТ, тот офис (бранч) который занимается проектами внедрения с интенсивной разработкой. Его ДевОпс эффективнее описанного в статье как раз за счет того, что тестируют только то что нужно
21. CheBurator 2725 02.02.25 00:45 Сейчас в теме
А то у меня личное впечатление, что тестирование/щики - они да, есть. Но они как джедаи в далекой-далекой галактике... где-то далеко от нас, постигают дзен и выходят в мир только когда навсиает угроза колоссального трындеца...
22. CheBurator 2725 02.02.25 00:47 Сейчас в теме
Пробовал я как-то на своем личном небольшом проектике с нуля повести разработку через тестирование. Мощно, хорошо, качественно. Но времени это занимает просто охеренно сколько. Сроки проекта раза в три-четыре вырастают. Пришлось свернуться на обычный путь "тестирование в голове"... А так хорошо все начиналось...
25. support 4456 02.02.25 08:29 Сейчас в теме
(22) Автоматическое тестирование, как и все практики DevOps нужны на непрерывном производстве, когда час простоя стоят дороже, чем весь ФОТ ИТ отдела.
40. ivanov660 4703 11.02.25 16:32 Сейчас в теме
(25) Я бы сказал так, там где ошибки допущенные в коде привносят большой негативный экономический эффект для бизнеса. Например, начнете продавать айфоны по 10 копеек, сотнями. Или смешаете не те компоненты по рецептуре тоннами и все на свалку потом.
37. AntonSm 30 10.02.25 11:36 Сейчас в теме
(22) а тесты только на ванессе (сценарные) были?
Тесты кодом (модульные, юнит-тесты) были?
А то они для программиста проще, чем сценарные тесты.
23. CheBurator 2725 02.02.25 01:20 Сейчас в теме
Как вообще определить/понять что надо привлекать тестирование (всякого рода).?
Чем это определяется? количеством разработчиков продукта? Объемом кода и функциональности?
Итд?
.
Где та точка джи, перейдя которую - без тестов будет плохо?
26. support 4456 02.02.25 08:29 Сейчас в теме
36. AntonSm 30 10.02.25 11:33 Сейчас в теме
(23)
Как вообще определить/понять что надо привлекать тестирование (всякого рода).?


На мой взгляд, в этой статье в разделе "Кому стоит управлять качеством" есть ответ:
https://infostart.ru/1c/articles/1096770/#_xz8k62c69rif
24. CheBurator 2725 02.02.25 01:21 Сейчас в теме
Я наверное задаю тупые банальные вопросы, извините.
Я не со зла. Исключительно из-за бездуховности.
27. o.nikolaev 216 02.02.25 22:59 Сейчас в теме
Очень впечатляет объем проделанной работы. Учитывая то что действительно, все начиналось с "блокнотика". Уважение вызывает терпение Леонида и его приверженность - к качеству, тестированию, автоматизации тестирования. Четвертое измерение - время, когда долго, спокойно и последовательно чем-то занимаешься, то обнаруживаешь что забрался на такую гору, раньше даже ужасался ее высоте.
CheBurator; kuntashov; +2 Ответить
28. swimdog 775 03.02.25 23:04 Сейчас в теме
(27) Путь в тысячу ли начинается с первого шага. Лао-цзы
34. o.nikolaev 216 06.02.25 11:44 Сейчас в теме
(28) Ну раз уж у нас вечер китайской культуры :)
"Огромное состит из малого, а большое - из небольшого".
"Человек, который хочет передвинуть гору, в начале убирает мелкие камни вокруг нее".
30. andukin 05.02.25 08:17 Сейчас в теме
(27)
Учитывая то что действительно, все начиналось с "блокнотика".

в 1С "блокнотик" если и был, то более 20 лет назад.
автоматизированное тестирование в 1С с 2008 года как минимум.
продукт 1С:Сценарное тестирование на слуху лет 12. 1С рассказывал что и его использовал.
в ответах на вопросах упоминают: используют тесты, которые разработаны до внедрения Ванессы
33. o.nikolaev 216 06.02.25 11:42 Сейчас в теме
(30) Вам виднее конечно, чоуш.
31. andukin 05.02.25 08:20 Сейчас в теме
Авторам статьи вопрос с их позволения: какая роль в этом комплексе у продукта 1С:Сценарное тестирование?
https://v8.1c.ru/tekhnologii/tekhnologii-krupnykh-vnedreniy/korporativnyy-instrumentalnyy-paket/1c-stsenarnoe-testirovanie/

лейтмотив статьи - Ванесса. но показалось что 1С:Сценарное тестирование используется широко и интенсивно. показалось?
41. ivanov660 4703 11.02.25 16:34 Сейчас в теме
(31) Лично я не слышал, чтобы где-то эту конфигурацию использовали.
И вы правы, интересно было бы услышать.
32. andukin 05.02.25 09:07 Сейчас в теме
Важно, что эти тесты доступны на сайте релизов 1С в разделе ERP – все, кто имеет доступ к релизам нашей конфигурации, могут их скачать (ц)

есть ли инструкция по работе с этими тестами?
поняли, что запускать надо из командной строки, а не интерактивно.
для начала хотелось бы узнать параметры командной строки. спасибо
35. AntonSm 30 10.02.25 11:14 Сейчас в теме
MonkeyTest.epf можно где-то получить?
39. andukin 10.02.25 16:27 Сейчас в теме
42. muskul 12.02.25 03:48 Сейчас в теме
В общем ответа как получаются "детские" ошибки так и не получено, очень жаль
55. starik-2005 3157 24.02.25 14:40 Сейчас в теме
(42) Как же не получено? Написано же, что невозможно протестировать все. "Детские" - это очень разные. И если написать в запросе имя таблицы с ошибкой, то это сонары подсветят, а если имя ключа структуры, в которой передаются данные в процедуры/функции, с ошибкой написать, то никакие тесты такое не найдут скорее всего, если они не тестируют эту конкретную функцию, которая передает неправильный ключ. И отсюда никуда не деваться, т.к. 1С не умеет объекты - она умеет структуры с любыми валидными именами ключей, которые не подсвечиваются в помощнике.
56. muskul 25.02.25 02:06 Сейчас в теме
(55) Ага, все ждут изменение счет-фактур заполнения поля, но мы не можем проверить все ли правильно заполняется. при акте, при реализации и как это выглядит в эдо. ооооочень сложно.
или с этим ндс 5% где для одних документов работает а для других нет
57. starik-2005 3157 25.02.25 05:18 Сейчас в теме
(56) Ну те же 5% - это ж новое. Часть тестов написали, часть - нет. Завтра напишут - будет работать, а послезавтра 3% - и опять новые тесты писать, и что-то снова не успеют написать.
43. PerlAmutor 157 16.02.25 03:25 Сейчас в теме
Проводится ли тестирование ERP в режимах: Веб клиент, Толстый клиент УП, Толстый клиент ОП, в режимах работы УФ "В закладках" ?

Уже начали переписывать все тесты под интерфейс 1С:Элемент и платформу 8.5?
48. RustIG 1836 17.02.25 15:52 Сейчас в теме
в любом случае, несмотря на комментарии, спасибо за статью - было полезно.
Когда бежит один, то он никуда не торопится, когда марафон бегут 1000 человек, то уже через 5 минут понимаешь, что отстаешь далеко позади....
В программировании 1С участвуют более 1 млн человек...
49. CheBurator 2725 17.02.25 19:47 Сейчас в теме
(48)
В программировании 1С участвуют более 1 млн человек...

Ну ты загнул...
52. RustIG 1836 17.02.25 22:21 Сейчас в теме
(49) сколько организаций в России, в части из них штат 1сников, плюс фрилансеры, плюс интеграторы, плюс "бывшие", плюс "будущие", на ИС однажды озвучили что зарегистрировано более 600 тыс уникальных аккаунтов. Об этом когда рассказывали - очень давно...
1 млн думаю есть - моя оптимистичная оценка
53. RustIG 1836 17.02.25 22:34 Сейчас в теме
(49) бухгалтера и руководители - как постановщики задач - я их тоже посчитал, все пользователи 1С, которые ставят задачи - я их тоже посчитал...А программисты -интеграторы - которые свои учетные системы разрабатывают - у них есть модули 1С, есть в штате свои 1Сники и методологи... ладно, всех много, суть не в цифрах, а в том, что процессов много...
58. Дмитрий74Чел 239 03.03.25 13:46 Сейчас в теме
Шел 2025 год. У фирмы 1С всё ещё не было денег на дизайнера для презентаций.
59. kuntashov 463 03.03.25 17:21 Сейчас в теме
(58) Шаблон данной презентации - универсальный шаблон, созданный в общем стиле конференции, создавался профессиональными дизайнерами: фоны, лейаут, шрифты, стиль заголовков -- все предопределенное.

Докладчики только полезный смысл добавляют. Тут полезного контента очень много.

Картинки конечно можно было выровнять по золотому сечению, таблички в общем стиле дизайна сверстать, а не скриншотами добавить, но какую пользу это принесло? Разве что вашего комментария не было бы.
Оставьте свое сообщение