Как использовать инструменты Vanessa для автоматизации тестирования в 1С на обычных формах (УПП)?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Автоматизация тестирования в конфигурациях на обычных формах (например, в 1С:Управление производственным предприятием 1.3) сопряжена с рядом технических сложностей, которые отсутствуют в современных решениях на управляемом приложении. Основная трудность заключается в том, что флагманский продукт Vanessa Automation (VA) базируется на механизме Тест-клиент, который был реализован фирмой «1С» исключительно для управляемого интерфейса. В данной статье мы разберем, как обойти эти ограничения и какие инструменты использовать для эффективного тестирования «старых» конфигураций.

Почему Vanessa Automation не подходит для UI-тестов в УПП?

Проанализируем технологический стек. Механизм Тест-клиент позволяет одной сессии 1С (Тест-менеджеру) управлять другой сессией (Тест-клиентом), обращаясь к элементам формы как к объектам. В обычном приложении (толстый клиент) такого механизма просто не существует. Если мы попытаемся запустить сценарий VA на обычных формах, система не сможет «увидеть» кнопки, поля ввода и табличные части, так как они отрисовываются операционной системой иначе, чем в веб-ориентированном управляемом интерфейсе.

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

Переход к Vanessa ADD (Automated Design and Development)

Рассмотрим основной инструмент для работы с обычными формами — Vanessa ADD. Это решение выросло из проекта xUnitFor1C и ориентировано на модульное (Unit) тестирование. В отличие от сценарного тестирования (BDD), ADD позволяет проверять работоспособность процедур и функций «изнутри» базы данных.

Для автоматизации УПП при помощи ADD выполним следующие шаги:

  1. Установка загрузчика: Используем внешнюю обработку-загрузчик тестов, совместимую с толстым клиентом.
  2. Создание тестовых обработок: Каждый тест в ADD — это экспортный метод во внешней обработке (.epf).
  3. Тестирование экспортных методов: Мы вызываем процедуры проведения документов, расчета себестоимости или заполнения реквизитов напрямую.

Разберем пример кода для проверки заполнения документа в УПП:


Процедура Тест_ПроверитьЗаполнениеДокумента() Экспорт
    
    // Подготовка данных
    ДокументОбъект = Документы.ЗаказПокупателя.СоздатьДокумент();
    ДокументОбъект.Дата = ТекущаяДата();
    
    // Вызов логики, которую нужно протестировать
    Обработки.ЗаполнениеДокументов.ЗаполнитьПоШаблону(ДокументОбъект);
    
    // Проверка результата (Assertion)
    ЮнитТестирование.ПроверитьЗначение(ДокументОбъект.Контрагент.Пустая(), Ложь, "Контрагент должен быть заполнен");

КонецПроцедуры

Использование SikuliX для автоматизации интерфейса

Если перед нами стоит задача проверить именно визуальное поведение обычных форм (например, открытие нужного окна при нажатии кнопки), мы можем интегрировать SikuliX в наш процесс тестирования. SikuliX — это библиотека, которая использует алгоритмы распознавания изображений для поиска элементов на экране.

Выясним, как это работает в связке с Vanessa:

  1. В сценарии Vanessa Automation подключается библиотека Sikuli.
  2. Вместо обращения к объекту КнопкаВыполнить, мы передаем инструменту эталонную картинку этой кнопки.
  3. Инструмент ищет совпадение пикселей на экране и имитирует клик мыши по найденным координатам.

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

Архитектурный подход к тестированию УПП

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

  1. Уровень Unit-тестов (90% всех тестов): Используем Vanessa ADD. Проверяем движения регистров, расчетные механизмы в общих модулях, алгоритмы распределения затрат. Это быстро, надежно и не требует запуска графического интерфейса.
  2. Уровень интеграционных тестов: Проверяем цепочки документов (например, от Заказа до Реализации) через программное создание объектов.
  3. Уровень Smoke-тестов (5% тестов): Используем SikuliX или AutoIt для проверки того, что система в принципе запускается и основные журналы открываются без критических ошибок.

Использование Windows UI Automation

Существует еще один продвинутый способ взаимодействия с обычными формами — использование UI Automation API от Microsoft. Поскольку обычные формы 1С являются стандартными окнами Windows, их элементы (кнопки, текстовые поля) имеют свои идентификаторы в иерархии операционной системы.

Для этого можно написать небольшую внешнюю компоненту на .NET или использовать готовые скрипты на Python (библиотека pywinauto), которые будут находить окна 1С и взаимодействовать с ними. Это работает быстрее, чем поиск по картинкам (SikuliX), и позволяет считывать текст из полей обычных форм.

Рассмотрим пример логики взаимодействия через внешнюю систему:

  1. Запускаем сессию 1С (Толстый клиент).
  2. Скрипт находит окно с заголовком, содержащим "1С:Предприятие - Управление производственным предприятием".
  3. Скрипт ищет внутри окна элемент с типом Button и текстом "Провести".
  4. Посылает системное сообщение WM_LBUTTONDOWN для имитации нажатия.

Резюме

Подводя итог, можно сказать: если вы планируете внедрять автоматизацию тестирования в УПП, забудьте про классическую Vanessa Automation в контексте записи действий пользователя. Направьте усилия на освоение Vanessa ADD и написание модульных тестов. Это обеспечит стабильность вашей конфигурации и позволит выявлять ошибки в сложной бизнес-логике производства гораздо быстрее, чем ручное тестирование или нестабильные UI-скрипты.

← На главную