YAxUnit: Новые возможности для эффективного тестирования в 1С

26.01.26

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

За последний год YAxUnit заметно вырос: обновилась документация, запуск тестов в EDT стал практически мгновенным, появился редактор для режима 1С:Предприятие, инструменты для подготовки тестовых данных и подключение к ИИ через MCP-сервер для проверки и улучшения кода. Расскажем о том, какие свежие возможности YAxUnit позволяют сделать модульное и интеграционное тестирование в 1С быстрым, эффективным и комфортным.

Меня зовут Алексей Корякин. Я ведущий разработчик компании BIA Technologies и по совместительству автор YAxUnit.

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


Улучшение документации YAxUnit



Начнем с основы любого качественного продукта – с документации.

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

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

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

 


В результате документация стала заметно лучше:

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

  • Добавлено большое количество разнообразных примеров.

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

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

 

 

 

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

Почему мы вообще уделяем документации так много внимания?

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

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


Долгий запуск тестов: решение в YAxUnit

 

 

Все, кто когда-либо пробовал писать тесты больших конфигураций, сталкивались с проблемой долгого запуска 1С:Предприятия. Пока поднимется платформа и загрузится конфигурация, проходит довольно много времени.

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

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

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

 

 

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

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

 

 

Теперь о том, как это устроено технически.

После того как мы написали тесты и нажали кнопку «Запустить», поднимается 1С:Предприятие, прогоняются тесты, и по результатам прямо в EDT формируется отчет.

При этом сеанс 1С не закрывается – он продолжает ждать команд от EDT. Эти команды доставляются в него через транспорт на базе WebSocket, поддержка которого появилась в платформе 8.3.27. Понятно, что не у всех используется последняя версия 1С – у многих платформа старее. Для таких случаев была разработана внешняя компонента, реализующая поддержку WebSocket. Огромное спасибо Дмитрию Любаневичу, который оперативно откликнулся, реализовал компоненту и помог с устранением проблем. Это позволило поддержать взаимодействие через WebSocket для всех платформ, начиная с версии 8.3.10.

Если по отчету видно, что сам тест работает неправильно, мы можем внести в него исправления и опять нажать кнопку «Запустить». Причем здесь уже не нужно стартовать 1С заново – запущенный сеанс просто получает из EDT команду запуска обновленного тестового модуля с различными параметрами. После из текста тестового модуля формируется внешняя обработка и запускается на стороне 1С, а результат возвращается по вебсокету в EDT.

Все это упрощает запуск тестов и позволяет быстро получать их результаты.

 

 

Но есть некоторый ряд ограничений.

  • Через WebSocket передается только тестовый модуль – изменения в других модулях не учитываются.

  • Если вы написали тест и нашли ошибку в коде конфигурации, вам все-таки потребуется перезапуск после ее исправления.

  • Внутри тестового модуля нельзя поставить точки останова, потому что его код запускается как внешняя обработка, а не общий модуль. Зато можно поставить точки останова в проверяемом коде, но нужно помнить, что при его изменении вам все-таки придется обновиться.

 

 

В результате внедрения для тестовых методов транспорта через WebSocket мы получили следующие преимущества:

  • Моментальный запуск тестов.

  • Время на разработку и отладку наших тестов существенно сокращается.

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

Правда есть пара минусов, о которых мы уже поговорили:

  • Этот подход применим только для тестов.

  • И мы теряем возможность использовать в тесте точки останова.


Сложности разработки тестов в конфигураторе: решение – редактор тестов YAxUnit в предприятии

 

 

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

  • В конфигураторе мы не можем дополнить тестовыми методами контекстную подсказку.

  • В частности, конфигуратор не подсказывает по текучим выражениям (Fluent), которые являются фишкой YAxUnit и помогают писать более лаконичные тесты. Отсутствие подсказки сильно усложняет работу, потому что разработчику, чтобы вспомнить доступные варианты, приходится либо постоянно обращаться к документации, либо «проваливаться» в код движка, тратя на это дополнительное время.

  • В конфигураторе нет команд запуска для теста.

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

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

 

 

Решение этой проблемы простое: не пишите тесты в конфигураторе. Пишите их в предприятии.

 

 

Для решения этой проблемы мы разработали специальный редактор тестов, который запускается из режима 1С:Предприятие как обработка с полем HTML-документа, куда внедрен Monaco Editor – облегченная веб-версия Visual Studio Code, знакомого многим разработчикам.

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

 

 

В первую очередь, в него встроены полноценные контекстные подсказки по API YAxUnit:

  • Есть информация по методам.

  • Есть поддержка текучих выражений.

  • Есть подсказки по платформе – методы, типы, конструкторы, перегрузки.

  • Разве что, к сожалению, пока нет подсказки по конфигурации.

 

 

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

 

 

И, конечно, предусмотрен удобный запуск тестов.

  • Над каждым тестовым методом отображается команда «Run test», которая позволяет запустить тест.

  • После выполнения теста слева в панели выводится иконка со статусом теста (успешный он или проваленный) и при наведении на нее отображается некоторая сводная информация.

На слайде видно, что серверный метод Вычитание() при использовании параметров «5, 2, 2» упал – возникла ошибка в утверждении проверки равенства Равно(). Проверка не отработала.

 

 

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

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

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

 

 

Немного технических подробностей о том, как это все устроено.

  • Как я уже говорил, в качестве основы используется Monaco Editor, который предоставляет базовую функциональность по редактированию текста и ряд продвинутых возможностей. Мне особенно нравится режим мультикурсора – если вы еще не пробовали, рекомендую.

  • Для анализа кода используется генерация AST-дерева – это некоторое иерархическое объектное представление кода. Именно это представление по факту является базой для всей основной функциональности редактора.

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

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

  • Плюс в редактор встроено описание YAxUnit и его API, а также описание платформы.

Все это вместе позволяет выдавать хорошие подсказки по коду.

Например, на слайде мы видим код с тремя выражениями:

  • В первой строке создается таблица значений и присваивается в переменную «Таблица»

  • Во второй строке в эту таблицу добавляется новая колонка и результат записывается в переменную. При этом редактор знает, что метод «Добавить» у таблицы возвращает результат с типом «КолонкаТаблицыЗначений».

  • И в третьей строке, когда редактор видит нашу переменную, он уже знает, что у нее тип – «КолонкаТаблицыЗначений». И знает, какие у колонки могут быть свойства и методы – таким образом может дать релевантные подсказки.

 

 

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

  • Быстро писать тесты для YAxUnit.

  • Быстро их запускать.

  • Получать быстрый фидбэк и быстрые отчеты.

  • И сократить время на разработку и тестирование.


Подготовка тестовых данных

 

 

Следующая важная тема – это тестовые данные.

  • Одна из фундаментальных проблем в 1С заключается в том, что бизнес-логика практически всегда тесно сплетена с данными.

  • Более того, даже сам код хранится в базе данных.

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

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

 

 

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

  • редактор макетов с тестовыми данными;

  • генератор кода;

  • помощник создания тестовых данных.

Кратко расскажу о каждом из них.

 

 

Первый инструмент – редактор макетов. Он позволяет преобразовать данные:

  • Из формата табличного документа в таблицу Markdown.

  • И обратно – из Markdown в табличный документ,

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

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

 

 

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

 

 

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

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

 

 

Для более сложных сценариев есть два дополнительных инструмента:

  • помощник создания тестовых данных;

  • и генератор кода.

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

 

 

Эти помощники дают нам следующие возможности:

  • Генерацию скриптов для создания объектов на основании существующих данных.

  • Поддержку различных видов объектов – можно создавать документы, справочники, бизнес-процессы и так далее.

  • Формирование движений документов – для проверки либо для создания необходимого тестового контекста.

  • Все сценарии формируются с использованием конструкций YAxUnit.

  • Также есть возможность генерировать макеты.

Благодаря этим инструментам:

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

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

  • Это позволяет нам готовить реалистичные наборы данных для сложных сценариев.

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

 

 

На сквозном примере покажу, как эти помощники помогают нам писать тесты.

Для тестирования возьмем базу с конфигурацией «Управление парком аттракционов», где нам необходимо проверить, как в документе «Реализация билетов» формируются его проводки.

Мы открываем редактор и создаем нужные методы.

 

 

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

Заходим в проводки и из меню вызываем команду «Вывести список».

 

 

Дальше закидываем это все дело в редактор макета и преобразуем в формат маркдауна.

 

 

Результат переносим в тест – добавляем документ «Поступление товаров» и загружаем в его движения данные из макета. Входящие остатки готовы.

 

 

Далее подготавливаем сам документ реализации.

Открываем генератор кода, добавляем туда документ и нажимаем кнопку «Сформировать код».

 

 

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

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

 

 

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

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


Искусственный интеллект


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

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

 

 

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

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

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

 

 

Чтобы подобный подход стал возможен и для тестов в 1С, был разработан MCP:Test runner.

Думаю, многие уже знакомы с понятием MCP – по сути, это протокол, расширяющий возможности искусственного интеллекта. MCP:Test runner добавляет для нейронок следующие возможности:

  • Позволяет им запускать тест.

  • Но прежде, чем запустить тесты, их сначала необходимо собрать – собрать конфигурацию, обновить информационную базу, загрузить туда расширение с тестами и дополнительные расширения. Все это на себя берет MCP:Test runner.

  • Он позволяет работать с исходниками в формате конфигуратора и в формате EDT.

  • Чтобы все это работало быстро мы выполнили ряд оптимизаций – в частности, загружаются только те проекты (конфигурации или расширения), которые были изменены. А для загрузки и конвертации исходников используется 1C:EDT CLI, запущенная в интерактивном режиме, что позволяет сократить время конвертации, не поднимая каждый раз EDT.

Что это нам в итоге дает?

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

  • При сборке и выполнении теста формируется логика, которая позволяет проверить, что проект корректно собирается, и все UUID-ы правильные.

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

 

 

Покажу, как это все у нас устроено.

Нам нужна IDE с поддержкой ИИ (я использую Cursor), куда можно подключить этот MCP.

В этой IDE мы открываем проект, где необходимо проверить работу тестового модуля, открываем окно чата и пишем: «Запусти такие-то тесты».

 

 

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

  • Мы видим, сколько у нас тестов всего, сколько из них выполнены успешно, а сколько – провалились.

  • Видим время выполнения каждого теста.

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

 

 

При этом нейросеть может не только сформировать рекомендации, но и исправить.

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

 

 

Также дополнительно можно попросить ее проанализировать сам тестовый модуль – какие в нем есть проблемы. Здесь она тоже выявила ряд критических ошибок:

  • Есть странная проверка, что результат равен результату.

  • И есть неполное покрытие тестом.

 

 

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

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

 

 

В основном нейронка все делает хорошо, но это не значит, что ее не нужно контролировать.

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

Поэтому будьте внимательны, бывают такие сюрпризы.

 

 

Что мы получаем в итоге:

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

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

Пишите тесты, используйте YAxUnit.


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


Могут ли нейронки сами писать тесты для YAxUnit? Или для этого обязательно нужны MCP?

Чтобы научить нейронку писать тесты для YAxUnit, есть три возможности:

  • Можно в качестве MCP использовать context7.com – это MCP, который предоставляет информацию о различных библиотеках и работает онлайн, через интернет. Там добавлен YAxUnit, его можно подключить.

  • Если вы используете Cursor или что-то подобное, вы можете просто подключить документацию по написанию тестов в проект.

  • Либо можно написать для нейросети правила и добавить их в контекст – например, скормить ей файл с описанием.

На простые методы модульные тесты они пишут без проблем, интеграционные (для проверки связи между компонентами) – тоже смогут. Но если у вас большие сложные сценарии, им будет нужна помощь. Если им эту помощь дать – без проблем.

MCP работает с исходниками в формате EDT или в формате конфигуратора? И где производится сама настройка MCP – где мы указываем базу и т.д.?

Пример настройки MCP можно посмотреть в репозитории MCP:Test runner. Там используется YML-файл, где описаны пути к исходникам конфигурации, в каком они формате, пути к тестам, как запускать эти тесты, путь к базе, на которой должно запускаться тестирование, параметры авторизации и так далее. Перед подключением MCP-сервера путь к этому YML-файлу прописывается в переменной окружения.

Планируется ли развитие дымовых тестов? Сейчас мы используем для этого Vanessa ADD, но, может, уже стоит все тестирование перенести в YAxUnit?

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

Заинтересовал редактор тестов. Он входит в состав расширения для YAxUnit? Можно ли забрать из репозитория на GitHub шаблоны для Monaco Editor?

Можно забрать не только шаблоны, но и весь редактор целиком, если нужно.

 

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

3660 руб.

05.08.2024    4989    35    1    

18

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

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

3050 руб.

04.07.2022    12282    45    1    

37

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

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

29.01.2026    288    AdepTcs    0    

2

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

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

27.01.2026    330    vladimir_iclsoft    0    

6

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

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

20.01.2026    2486    TaGolovkina    12    

23

Инструментарий разработчика Тестирование QA Программист 1С 8.3 Абонемент ($m)

Очень часто программисты производят отладку программы при разработке, и каждый раз приходится настраивать среду после запуска, потом опять изменения и опять запуск, и все заново. Это тратит очень много времени. Хочу представить сообществу свой способ формирования среды отладки. Да, многие скажут, можно использовать Vanessa, но и тут не все так просто, там отдельный язык, его надо изучить, запуск усложняется тем, что нужен менеджер тестирования, и клиент тестирования и т.д. А я предлагаю совершенно иной подход, упрощенный, который можно использовать с любой БД.

10 стартмани

29.12.2025    714    0    user1884101    0    

5

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

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

12.11.2025    4762    arcius_7012    14    

27

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

Во время прошедшей в начале октября конференции INFOSTART TECH EVENT 2025 Инфостарт Лаборатория и Инфостарт Обучение проводили тестирование всех желающих на знание фреймворка Vanessa Automation. Хочу поделиться результатами этого мероприятия и подробно разобрать пятерку вопросов, которые оказались самыми сложными для участников сертификации.

05.11.2025    2405    kuntashov    7    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. krasnoshchekovpavel 224 26.01.26 21:16 Сейчас в теме
YAxUnit технологически - супер, куча наворотов и реально крутых штук. Но есть минусы - тесты должны находиться в отдельном модуле. Соответственно внутри этого модуля нет доступа к не экспортным методам конфигурации. А модульное тестирование не должно ограничиваться только программным интерфейсом. И решение этому есть - размещение тестов в расширении модуля, внутри которого находиться тестируемый код. Но такой возможности нет или я не нашел в документации - и это очень печально. Так же этот "fluent interface" во многих кейсах тестирования вообще не нужен, а его аналогов нет. Предлагается в любом случае использовать что-то типо ЮТест.ОжидаетЧто(А).Равно(Б). А особенность в том, что сравнение в ЮТест происходит не как сравнение двух переменных А = Б, а как сравнение значений. И допустим мне нужно протестить, что А = Б не по значению, а по как бы указателю на переменную -> Это невозможно. Приходиться писать конструкции вида ЮТест.ОжидаетЧто(А=Б).Равно(Истина). И тогда исчезает автогенерация текста ошибки тестирования...и приходиться добавлять сообщение вручную - ЮТест.ОжидаетЧто(А=Б, "Ожидается что А равно Б").Равно(Б). И все это превращается в ад с точки зрения удобства использования.

Какую-бы архитектуру хотелось видеть - пусть остаются все эти фичи и ЮТест.ОжидаетЧто(А)...текучий интерфейс и т.д.. Но дайте возможность использовать стандартный сценарий модульного тестирования который принят во множестве других языков программирования - разработчик самостоятельно проверяет значения на соответствие и в случае чего вызывает исключение. Или используются короткие методы по типу ом.ОжидатьРавенство(А, Б) без всяких неочевидных механизмов. Если првоерка на равенство, то на реальное равенство как если бы сравнивали переменные. Если мы хотим сравнить переменные по их значению (структуры, массивы и т.д.) то мы вызовем ом.Ожидать(ом.ЗначенияРавны(А, Б)).

Имхо - текучий интерфейс это что-то слишком сложное (Не в плане восприятия, обучения и т.д., а в плане легкости использования) для модульных тестов. Это не претензия, а боль при реальном использовании. Если эту проблему можно решить (возможно, я просто плохо знаю документацию) - буду рад вашей помощи.
2. dhurricane 26.01.26 22:35 Сейчас в теме
(1)
Но такой возможности нет или я не нашел в документации - и это очень печально.

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

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

Думаю, если зарегистрируете пожелание к проекту в виде issue на github о том, чтобы можно было самому бросать исключения в теле теста, и оно движком интерпретировалось как падение теста, а не как сломанный тест, то автор вполне может отозваться. Есть сомнения лишь в отношении дублирования методов (Равно и ОжидатьРавенство).

А особенность в том, что сравнение в ЮТест происходит не как сравнение двух переменных А = Б, а как сравнение значений.

Так это же наоборот фича :) Думаю, такой сценарий как раз самый популярный, нежели сравнение по ссылке, а не по значению.
charushkin; sergiz; krasnoshchekovpavel; +3 Ответить
3. alexandr_yang 27.01.26 10:00 Сейчас в теме
(1)

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


Такой метод есть - ЮТест.Упал()
charushkin; sergiz; Жолтокнижниг; dhurricane; +4 Ответить
12. dhurricane 27.01.26 17:16 Сейчас в теме
(3) О, спасибо. Проглядел. :)
7. Жолтокнижниг 307 27.01.26 13:10 Сейчас в теме
(1)
Соответственно внутри этого модуля нет доступа к не экспортным методам конфигурации

И это правильно, есть такое понятие "Хрупкие тесты" - тесты которые постоянно разваливаются и их приходится чинить. Тестирование приватных методов, для которых не нужно соблюдать контракты как раз относится к этой категории. Не нужно их тестировать, при рефакторинге такие тесты начнут сыпаться с большой долей вероятности.
Да иногда бывает нужно/проще протестировать приватное, но это больше исключение, чем правило. И тут есть способ обойти это ограничение с помощью заимствований и расширений. Так же и в других ЯП, приватное не тестируют, единственный способ это рефлексия.

Так же этот "fluent interface" во многих кейсах тестирования вообще не нужен, а его аналогов нет

Из моего опыта, простых сравнений где флюент был бы излишним немного, но можно запостить issue

А особенность в том, что сравнение в ЮТест происходит не как сравнение двух переменных А = Б, а как сравнение значений. И допустим мне нужно протестить, что А = Б не по значению, а по как бы указателю на переменную -> Это невозможно

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

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

А можно пример такого, без использования assert?

Имхо - текучий интерфейс это что-то слишком сложное

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

ЮТесть.ОжидаетЧто(Строка).Содержит(Подстрока) // проверит вхождение подстроки
ЮТесть.ОжидаетЧто(Массив).Содержит(Значение) // проверит наличие элемента в массиве.
10. krasnoshchekovpavel 224 27.01.26 15:14 Сейчас в теме
(7)

А можно пример такого, без использования assert?

https://cs.opensource.google/go/go/+/master:src/net/url/url_test.go ищите по словам errorf и fatal

Тут же найдете например TestResolvePath - тест в котором тестируется приватный метод resolvePath к слову о том что "в других языках так же"

(7)
И это правильно

Да, такое понятие есть, но решать эту проблему следует архитекторам и разработчикам - они сами решат, что им нужно тестировать, а что нет. И не давать такой возможности под аргументом опеки над пользователями библиотеки считаю некорректно.
11. Жолтокнижниг 307 27.01.26 15:23 Сейчас в теме
(10) По примеру, окей, но как по мне уместнее было бы использовать какой нибудь assertNull(err, message).

По второму пункту, отчасти согласен. Но это не коммерческий продукт и я в первую очередь решаю задачи критичные мне и моей компании, мы не тестируем массово приватный методы. А реализация другого подхода потребует больших изменений в логике движка.
А ещё это опенсурс продукт, в котором вы можете реализовать необходимый функционал.
4. starik-2005 3211 27.01.26 12:37 Сейчас в теме
Ну осталось по результатам тестов патчи автогенерить. МСР тестов, МСР гита, МСР бизнес-модели, МСР на oData для доступа к данным. Прям вот "раз словечко, два словечко - пенсня получается".
5. gybson 27.01.26 12:41 Сейчас в теме
Осталось совсем немного чтобы ИИ добавить в редактор кода, более логично будет, чем через курсор крюк делать
6. Жолтокнижниг 307 27.01.26 12:52 Сейчас в теме
(5) С редактором как будто больше проблем, копирование кода туда сюда. Я пока больше нацелен на работу в vscode. Скоро появится для него расширение.
charushkin; alexandr_yang; +2 Ответить
8. gybson 27.01.26 13:22 Сейчас в теме
(6) зато можно гонять итерации через ИИ довольно быстро без пересборки файлов, конфигурации и т.п.
9. Жолтокнижниг 307 27.01.26 13:25 Сейчас в теме
(8) Увы при изменении тестируемого кода все равно придется пересобирать.

И подключение ИИ к редактору сложнее чем реализовать запуск тестов yaxunit через web socket из vscode/cursor/etc
13. charushkin 110 28.01.26 14:18 Сейчас в теме
(6) ооо, вот прям бомба! Очень круто было бы иметь возможность прогонять и отлаживать тесты из vs code
14. muskul 29.01.26 02:40 Сейчас в теме
А есть что то простое что может просто по всем доступным документам пройтись создать и провести под конкретным пользователем?
15. Жолтокнижниг 307 29.01.26 08:11 Сейчас в теме
(14) дымовые тесты Ванессы не предлагать? В yaxunit они тоже есть, но там нет создания и проведения документов, может быть в будущем появится
16. muskul 29.01.26 08:32 Сейчас в теме
(15)
дымовые тесты Ванессы не предлагать?

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