Разработка и сценарное тестирование с Vanessa-ADD. Собственные шаги и библиотеки. Экспортные сценарии

24.02.19

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

Расширяем возможности фреймворка.

 

Создаём новые шаги

Генерация обработок, реализующих шаги

Вывод текста модуля, вместо генерации внешней обработки

Произвольное расположение и наименование реализующих шаги обработок по отношению к исходному файлу сценария

Избегаем дублирования шагов

Доступность шагов из других сценариев в том же каталоге

Добавляем собственные шаги в форму выбора известных шагов (библиотечных шагов)

Таблица как параметр шага

 

Создаём собственные библиотеки шагов

Что такое библиотека шагов?

Указание путей к своим библиотекам

Где лучше располагать свои библиотеки?

Преобразуем новые шаги в простейшую библиотеку

 

Экспортные сценарии

Создаём и используем первые шаги, реализованные через экспортные сценарии

Игнорирование секции “Контекст” экспортного сценария при исполнении реализуемых им шагов

Исключаем экспортные сценарии из исполняемых с помощью тегов

Размещаем экспортный сценарий в собственной библиотеке шагов

Добавляем шаги, реализуемые экспортными сценариями в форму выбора известных шагов (библиотечных шагов)

Как передать таблицу в качестве параметра шага, реализуемого экспортным сценарием?

 

Практические примеры

Асинхронный шаг удаления файла с контролем успешности операции

Типовой шаг ожидания закрытия окна как образец асинхронного шага

Реализуем наш шаг удаления файла

Исполнение произвольного кода на сервере 1С

Экспортный сценарий: открытие формы последнего проведенного документа в тест-клиенте

 

 

Данная публикация, в отличе от трёх предыдущих, предназначена в первую очередь для разработчиков. Для практического применения информации, приведенной здесь, потребуются навыки программирования и реализации принципов переиспользования кода. Для аналитиков и QA-инженеров важной может оказаться информация о том, что возможности Vanessa-ADD с легкостью могут быть расширены под потребности проекта силами программистов и  совсем не обязательно оставаться в рамках стандартных возможностей фреймворка. При этом возможность обновления фреймворка не теряется.


По информации от разработчиков параллельного проекта Vanessa-Automation https://github.com/Pr-Mex/vanessa-automation  почти вся информация, приведённая здесь, является базовой (унаследованной от https://github.com/silverbulleters/vanessa-behavior) и справедлива также для этого проекта.


 

На примерах из прошлой публикации можно было увидеть, что далеко не всегда шаги встроенной в Vanessa-ADD библиотеки позволяют эффективно решать возникающие задачи, а для некоторых нужных операций во встроенной библиотеке ещё нет шагов. Часть связанных с этим ограничений можно обойти за счет шага выполнения произвольного кода на языке платформы 1С. Но есть и более эффективные пути для решения этой проблемы:

1)  Создание собственных шагов и их реализация в автоматически генерируемых внешних обработках

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

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

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

 

Сначала мы углубимся в рассмотрение механизмов Vanessa-ADD на простейших примерах, без стремления сразу увидеть прикладную пользу. Информация будет носить “академический” характер. Это позволит сосредоточиться на сути механизмов, а не на объемных листингах кода 1С или фича-файлов. А в конце публикации будут приведены практические примеры, которые позволят  увидеть прикладную пользу и потенциал рассмотренных механизмов.  Чтобы не копировать текст и не перепечатывать его со скриншотов можно воспользоваться репозиторием https://github.com/VladimirLitvinenko84/DevelopingAndTestingWithVanessa.

 

 

 

Создаём новые шаги

 

 

Генерация обработок, реализующих шаги

 

В публикации, посвященной обзору интерфейса Vanessa-ADD мы видели, как ведет себя обработка bddRunner, встречая в сценарии шаг, которого нет во встроенной библиотеке шагов:

 

 

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

 

Однако это не просто сигнал об ошибке. Это также сигнал о том, что при желании мы можем автоматически создать реализацию этого нового шага в виде внешней обработки и её экспортного метода. После чего Vanessa-ADD уже сможет получить всю необходимую для его исполнения информацию. При этом сигнатура метода становится известна ещё до создания внешней обработки. Параметры шага определяются как числовые литералы или слова, заключенные в двойные или одинарные кавычки. Они же становятся параметрами реализующего шаг метода. А имя этого метода складывается из текста шага после удаления из него первого ключевого слова Gherkin и всех параметров.

То есть записав шаг в виде

И  Это новый шаг с параметром "Парам 1", и параметром 'Парам 2' и параметром 15

мы получим сигнатуру соответствующего ему метода

ЭтоНовыйШагСПараметромИПараметромИПараметром(Парам01, Парам02, Парам03)

 

И если мы действительно хотим создать новый шаг, то сделать это можно нажав на кнопку “Создать и обновить шаблоны обработок” на вкладке “Генератор EPF

 

Если флаги-настройки выставлены по умолчанию, то её нажатие приводит к созданию подкаталога step_definitions в том же каталоге, в котором находится файл со сценарием. В этом каталоге автоматически создаётся внешняя обработка с основной управляемой формой (за это отвечает флаг “Генерировать управляемую форму”).

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

 

Сгенерировав внешнюю обработку и перезагрузив сценарий мы увидим, что Vanessa-ADD обнаружила обработку, которая реализует этот шаг :

 

В данном примере примере у нас было два неизвестных шага. Теперь в созданной внешней обработке находятся описания и реализации этих шагов, которые использует Vanessa-ADD при их загрузке и исполнении. Откроем эту обработку, а в ней основную управляемую форму:

 

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

 

 

Далее модуль формы содержит методы, реализующие новые шаги - содержащие их исполняемый код:

 

 

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

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

Vanessa ADD Automation Driven Development Behavior BDD Сценарное тестирование

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

HighLoad оптимизация Тестирование QA Программист 1С 8.3 Бесплатно (free)

Шесть внешних отчётов на боевой базе крупной сети переписали за неделю. По секундомеру ускорились четыре, в акт пошли три: у одного отчёта минус тринадцать процентов оказались выбросом нагрузки прода, а не эффектом кода. Поймал это чередующийся замер до/после в одном окне, обычные три прогона с метрикой "минимум" показывали ускорение уверенно. Дальше в тексте: почему построчная сверка выхода ломается ровно на тех правках, ради которых её заводят; из чего собирается повторяемый слепок результата и почему главную работу в нём делает нормализация, а хеш только сигнализация; где слепок не берётся вовсе и его заменяет по-колоночная сверка; чем проверять пересчёт итогов, чистку данных и операции с кластером. Отдельно - гипотеза, которую замер отклонил, и честный счёт, во что вся эта дисциплина обходится.

вчера в 13:00    220    nedomolkov.ivan    0    

0

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

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

17.08.2026    348    user2181343    0    

1

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

Написать тест на 1С несложно. Дорого стоит привести базу в состояние, где прогон вообще стартует: семь шагов, каждый ломает запуск молча — без ошибки, без записи в журнале. И эту цену платит заново каждый новый человек на проекте. Разбираю молчаливый отказ окружения как класс проблем, показываю, почему его не закрывают ни документация, ни скрипт развёртывания, и предлагаю решение — фиксацию состояния в артефакте с машинно-проверяемым критерием приёмки. Подход проверен на сквозной задаче (первая задача экзамена «1С:Специалист по платформе» с юнит- и функциональными тестами), а затем перенесён на пул тестовых баз с типовыми конфигурациями. Отдельно — каталог симптомов и их настоящих причин, который пригодится независимо от инструментария.

13.08.2026    695    chagbig    1    

0

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

Разбираем, как в крупных компаниях регуляторные требования, постмортемы и внутренние ограничения постепенно превращаются в многоуровневую систему инструкций, в которой разработчику все сложнее понять, что и когда нужно проверить. Показываем opensource-сервис внешних проверок для GitLab, который автоматизирует часть этой бюрократии и сводит результат к понятному сигналу: зеленое – все в порядке, красное – нужно обратить внимание на конкретное требование. Объясняем, как такие проверки помогают «сдвинуть влево» контроль задач и снизить риск отказа во внедрении задачи в последний момент перед релизом. А заодно смотрим, может ли связка Autumn + «Вино» + немного разработческого энтузиазма превратить обязательные инструкции в инструмент, который команда сама захочет развивать.

12.08.2026    627    Golovanoff    2    

3

Поиск данных Тестирование QA Программист 1С 8.3 1С 8.5 Бесплатно (free)

Как мы пришли к Юнит-тестированию и почему стоит его использовать. Использование универсальных тестов для проверки работы IS MagicInput в вашей конфигурации.

16.07.2026    1922    Evg-Lylyk    2    

5

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

Tantor Postgres 18 - масштабный релиз СУБД, за которым стоят месяцы тестирования, сотни часов нагрузочных прогонов и десятки исправлений, о которых пользователь никогда не узнает просто потому, что они были найдены и устранены до выхода версии. Александр Симонов, руководитель направления развития 1С в "Тантор Лабс", рассказывает, как устроен процесс тестирования изнутри - почему одного эталонного прогона недостаточно, что делать, когда ванильный PostgreSQL 18 ломает собственные оптимизации, и как Tantor Postgres приближается к той планке, которую MS SQL Server держал годами.

07.07.2026    1354    Tantor    2    

6

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

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

29.06.2026    2970    alexandr_yang    6    

12

Тестирование QA Программист 1С:Предприятие 8 Бесплатно (free)

Как мы пришли к использованию Ванессы для автоматизации действий пользователей? Сначала я увидел в интернете лекцию Олега Филиппова про RPA. И когда встал вопрос про автоматизацию небольших процессов, то эта лекция у меня прекрасно соединилась с опытом тестирования программ с помощью Vanessa Automation. Минимум усилий, минимум ручного кода и высокая скорость внедрения. И самое главное, не надо менять программу. А если программа изменится, то алгоритм быстро поправить и дополнить.

19.06.2026    2106    swimdog    3    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ids79 8850 07.02.19 13:48 Сейчас в теме
Спасибо за очередную статью!
Все ни как руки не доходят прочитать.
Но обязательно изучу.
2. Vladimir Litvinenko 2944 07.02.19 14:27 Сейчас в теме
(1) Читать наверное имеет смысл только первую теоретическую часть https://infostart.ru/public/969637, чтобы понять, нужна ли эта тема сейчас на Ваших проектах и оправданы ли затраты ресурсов на разработку и адаптацию сценариев. Остальные части стараюсь делать больше практическими. Здесь можно просто оглавление прочитать, чтобы понять о чём речь )) И возвращаться уже как к инструкциям при практическом использовании.
3. artbear 1589 07.02.19 14:52 Сейчас в теме
(0) Молодец, Жжешь (с) :)
4. Pr-Mex 187 07.02.19 16:32 Сейчас в теме
Спасибо за статью!
5. caponid 07.02.19 16:43 Сейчас в теме
Спасибо за статью.
Тема большая, интересная и подходить к ней надо вдумчиво.
эх, и что же впереди никаких длинных праздников нет.... не забыть бы до майских.

Надо перед майскими еще одну статью выпустить))) что бы по подписке выскочила напоминанием.
А у инфостата напоминалки какие нить есть?
6. Vladimir Litvinenko 2944 07.02.19 17:31 Сейчас в теме
(5)
А у инфостата напоминалки какие нить есть?

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



Через механизм подписок я, например, всегда узнаю о выходе новых публикаций от Марии Темчиной, Дмитрия Иванова, Андрея Овсянкина. Это так пользуюсь случаем, чтобы прорекламировать авторов хороших публикаций, может быть и Вы подпишитесь ;)

Для публикаций из раздела "Разработки" ещё полезна функция подписки на связанный топик форума. Всегда можно узнать, что вышло обновление обработки и загрузить новую версию.
7. maxx 1002 09.02.19 10:43 Сейчас в теме
Спасибо за статью! Изучаем, присматриваемся.

Скажите вот такие шаги сценария кнопко нажималки можно добавить?

- и я ввожу в поле дата договора начало текущего года
- и я указываю в документе дату начало текущего месяца или конкретную дату
8. Vladimir Litvinenko 2944 09.02.19 18:21 Сейчас в теме
(7)
И в поле с именем "Дата" я ввожу значение выражения "Строка(НачалоГода(ТекущаяДата()))"

Явное приведение к строке обязательно:

Andrei_Zoteev; vikad; +2 Ответить
9. maxx 1002 09.02.19 19:18 Сейчас в теме
(8)Крутяк, понял, спасибо.

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

В голову приходят сценарии разные, но везде результаты шагов верхних должны передаваться/ запоминаться для следующих шагов.
binx; Xershi; +2 Ответить
10. Vladimir Litvinenko 2944 09.02.19 19:39 Сейчас в теме
(9) Передача данных между сценариями с программной точки зрения равносильна передаче значений между двумя управляемыми формами (если шаги реализованы в разных обработках).

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

Но чтобы не усложнять поддержку сценариев и не повышать уровень вхождения новых сотрудников в их разработку, лучше наверное использовать именно структуру Контекст. Это типовой механизм Vanessa-ADD и Vanessa-Automation и есть много шагов встроенной библиотеки для работы с ними.
11. maxx 1002 09.02.19 19:45 Сейчас в теме
(10)да , Контекст я понял, но просто не было примеров как пользоваться таким контекстом в тест-клиенте, ну например шаг:

Я открываю отчёт и устанавливаю отбор по контрагенту 'Контекст.КонтрагентСозданныйНаПервомШагу'
12. Vladimir Litvinenko 2944 09.02.19 20:03 Сейчас в теме
(11)
Такой пример как раз был. Это последний пример из прошлой публикации https://infostart.ru/public/984854 , когда поля структуры "Контекст" использовались, чтобы установить отбор по документу в форме списка регистра накопления на основе его даты и номера. Дата и номер были при этом сохранены в структуре "Контекст". Отбор по контрагенту на основе его наименования будет совершенно аналогичен.

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

    Тогда в регистре “Расчеты с клиентами” появляется три записи с регистратором равным проведенному заказу клиента


            Дано Я открываю основную форму регистра накопления "РасчетыСКлиентами"
            Тогда открылось окно 'Расчеты с клиентами'

            И я нажимаю на кнопку 'Настроить список...'
            Тогда открылось окно 'Настройка списка'           

            И я перехожу к закладке "Отбор"

            И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Доступн­ыеПоляТаблица" я перехожу к строке:
                | 'Доступные поля' |
                | 'Регистратор'    |

            И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Доступн­ыеПоляТаблица" я выбираю текущую строку

            И в таблице "КомпоновщикНастроекПользовательскиеНастройкиЭлемент0Отбор" я нажимаю кнопку выбора у реквизита "Значение"
            Тогда открылось окно 'Выбор типа данных'

            И В форме "Выбор типа данных" в таблице "" я перехожу к строке:
                | ''              |
                | 'Заказ клиента' |

            И в таблице "" я выбираю текущую строку
            Тогда открылось окно 'Заказы клиентов'

            И в таблице "Список" я перехожу к строке:
                | 'Дата'                | 'Номер'            |
                | '$ДатаДокумента$'     | '$НомерДокумента$' |

            Тогда в таблице "Список" я выбираю текущую строку
Показать


Эта публикация не является самостоятельной. Она является частью цикла публикаций. В первой из них больше теории, в других больше практических примеров. В одной публикации всех деталей работы со сценарным тестированием осветить не получится физически. Да и читать никто не будет такие объемы информации. Цикл публикаций разбит по темам и практических примеров больше в прошлой части.
13. Pr-Mex 187 11.02.19 08:45 Сейчас в теме
(8)
Уже существуют готовые шаги для ввода частоиспользуемых дат:
И в поле "Заголовок поля" я ввожу текущую дату
И в поле "Заголовок поля" я ввожу текущую дату и текущее время
И в поле "Заголовок поля" я ввожу начало текущего месяца
И в поле "Заголовок поля" я ввожу конец текущего месяца
Andrei_Zoteev; Vladimir Litvinenko; +2 Ответить
14. user1357153 11.02.20 14:16 Сейчас в теме
Добрый день.
При попытке сформировать файл EPF выдается ошибка (см. скрин). Как это исправить?
Прикрепленные файлы:
15. HostHost 293 31.05.20 20:41 Сейчас в теме
Добрый день! Мне кажется, что в тексте ошибка: Генератор ERF, наверное все-таки EPF, а не ERF, Расширение ERF-это внешний отчет. Очень полезная статья. Спасибо большое!
16. Xershi 1564 11.06.20 20:52 Сейчас в теме
Я вижу у вас много псевдо-кода. Чтобы выполнять операции.
А как вы пишите видео инструкции? Я так понимаю если сценарий автоматически отработает, то и видео запишется.
Пытаюсь более менее сложный сценарий реализовать, но пока не получается сделать.
17. Xershi 1564 20.08.21 15:12 Сейчас в теме
Писал сложный сценарий.
Исполнение произвольного кода на сервере 1С
У вас я так понимаю был сделан допил типовой обработки, чтобы там можно было вычленить параметр и затем его заполнить и он вернулся на клиент. Отразите это в статье т.к. в ванессе автомейшн такого нету по крайне
18. user1708962 13.12.22 15:25 Сейчас в теме
Как задолбал стиль изложения 1с - много слов и ничего не понятно. Автор а нельзя ли по человечески объяснять. У вас объяснения сородни: вот это алфавит, а посмотрели? а теперь перейдем к особенностям устройства ядерного двигателя. Вот не пойму как построить простейший тест хочу взять 2 переменные сложить и проверить что бы сумма была больше 5 и... ничего. куча ошибок, шаги не работают, генератор епф генерит черти что, вручную параметры не пишутся.... Ну почему нельзя начать с простых, очень простых тестов. зачем сразу лезть в дебры . которые по сути нафиг не нужны. Ведь если освоить простые вещи, то тогда можно переходить и к более сложным. А так у вас справка 1с получается - много терминов и бесполезная к применении на практике.
Для отправки сообщения требуется регистрация/авторизация