Автоматизация тестирования в конфигурациях на обычных формах (например, в 1С:Управление производственным предприятием 1.3) сопряжена с рядом технических сложностей, которые отсутствуют в современных решениях на управляемом приложении. Основная трудность заключается в том, что флагманский продукт Vanessa Automation (VA) базируется на механизме Тест-клиент, который был реализован фирмой «1С» исключительно для управляемого интерфейса. В данной статье мы разберем, как обойти эти ограничения и какие инструменты использовать для эффективного тестирования «старых» конфигураций.
Проанализируем технологический стек. Механизм Тест-клиент позволяет одной сессии 1С (Тест-менеджеру) управлять другой сессией (Тест-клиентом), обращаясь к элементам формы как к объектам. В обычном приложении (толстый клиент) такого механизма просто не существует. Если мы попытаемся запустить сценарий VA на обычных формах, система не сможет «увидеть» кнопки, поля ввода и табличные части, так как они отрисовываются операционной системой иначе, чем в веб-ориентированном управляемом интерфейсе.
Следовательно, для работы с УПП и другими решениями на обычных формах нам необходимо сменить подход: вместо имитации кликов пользователя мы перейдем к тестированию программного кода и бизнес-логики, либо будем использовать специализированные внешние библиотеки.
Рассмотрим основной инструмент для работы с обычными формами — Vanessa ADD. Это решение выросло из проекта xUnitFor1C и ориентировано на модульное (Unit) тестирование. В отличие от сценарного тестирования (BDD), ADD позволяет проверять работоспособность процедур и функций «изнутри» базы данных.
Для автоматизации УПП при помощи ADD выполним следующие шаги:
.epf).Разберем пример кода для проверки заполнения документа в УПП:
Процедура Тест_ПроверитьЗаполнениеДокумента() Экспорт
// Подготовка данных
ДокументОбъект = Документы.ЗаказПокупателя.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДата();
// Вызов логики, которую нужно протестировать
Обработки.ЗаполнениеДокументов.ЗаполнитьПоШаблону(ДокументОбъект);
// Проверка результата (Assertion)
ЮнитТестирование.ПроверитьЗначение(ДокументОбъект.Контрагент.Пустая(), Ложь, "Контрагент должен быть заполнен");
КонецПроцедуры
Если перед нами стоит задача проверить именно визуальное поведение обычных форм (например, открытие нужного окна при нажатии кнопки), мы можем интегрировать SikuliX в наш процесс тестирования. SikuliX — это библиотека, которая использует алгоритмы распознавания изображений для поиска элементов на экране.
Выясним, как это работает в связке с Vanessa:
Vanessa Automation подключается библиотека Sikuli.КнопкаВыполнить, мы передаем инструменту эталонную картинку этой кнопки.Важный нюанс: Этот метод менее стабилен, так как зависит от разрешения экрана, цветовой схемы Windows и шрифтов, однако это единственный способ «прокликать» обычную форму автоматически.
Проанализируем наиболее эффективную стратегию автоматизации для крупных систем на обычных формах. Опытные специалисты рекомендуют разделять тесты на уровни:
Vanessa ADD. Проверяем движения регистров, расчетные механизмы в общих модулях, алгоритмы распределения затрат. Это быстро, надежно и не требует запуска графического интерфейса.SikuliX или AutoIt для проверки того, что система в принципе запускается и основные журналы открываются без критических ошибок.Существует еще один продвинутый способ взаимодействия с обычными формами — использование UI Automation API от Microsoft. Поскольку обычные формы 1С являются стандартными окнами Windows, их элементы (кнопки, текстовые поля) имеют свои идентификаторы в иерархии операционной системы.
Для этого можно написать небольшую внешнюю компоненту на .NET или использовать готовые скрипты на Python (библиотека pywinauto), которые будут находить окна 1С и взаимодействовать с ними. Это работает быстрее, чем поиск по картинкам (SikuliX), и позволяет считывать текст из полей обычных форм.
Рассмотрим пример логики взаимодействия через внешнюю систему:
Button и текстом "Провести".WM_LBUTTONDOWN для имитации нажатия.Подводя итог, можно сказать: если вы планируете внедрять автоматизацию тестирования в УПП, забудьте про классическую Vanessa Automation в контексте записи действий пользователя. Направьте усилия на освоение Vanessa ADD и написание модульных тестов. Это обеспечит стабильность вашей конфигурации и позволит выявлять ошибки в сложной бизнес-логике производства гораздо быстрее, чем ручное тестирование или нестабильные UI-скрипты.