Обработка для подготовки файла настройки дымовых тестов измененных объектов конфигурации

09.10.23

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

В статье приведен пример обработки, которая на основании измененных файлов git-репозитория готовит специальный файл настройки xUnitParams.json для последующего выполнения дымовых тестов (xUnitFor1C/add) только для измененных объектов конфигурации

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Подготовка файла настройки дымовых тестов
.epf 9,16Kb ver:1.03
6 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Настройки/профили запуска обработки тестирования в консольном режиме подробно описаны в документации к библиотеке Vanessa-ADD. Предметом нашего внимания является специальный файл настройки xUnitParams.json, используемый совместно с ключом "--xddConfig": 

vrunner xunit $addRoot/tests/smoke --settings tools\vrunner.json --xddConfig ./tools/JSON/xUnitParams.json

Для подготовки специального файла настройки в ручном режиме можно воспользоваться обработкой УправлениеДымовымиТестами.epf из состава библиотеки Vanessa-ADD:

 

Чтобы сформировать такой файл настройки в автоматическом режиме, для начала нужно получить информацию из git по измененным объектам конфигурации. Для этого мы используем файл-выборку sonar_files, подготовленный в рамках CI для системы статического анализа кода SonarQube:

src/Documents/АвансовыйОтчет/ManagerModule.bsl
src/Documents/ПеремещениеТоваров/ManagerModule.bsl

Чтобы провести выборочные дымовые тесты только для доработанных в конфигурации объектов (к примеру - открытие формы списка, формы нового и формы существующего документа) необходимо удалить два наших документа из состава исключаемых для тестирования объектов в файле xUnitParams.json. Это нужно сделать в списках веток интересующих нас операций открытия форм ("Списки", "Новые" и "Существующие").

Файл настройки xUnitParams.json без доработанных объектов должен выглядеть примерно так:


Для автоматического формирования файла настройки xUnitParams.json была написана обработка, которая используется при пакетном запуске 1С и применима для любой конфигурации. Обработка получает параметром полный путь к исходному файлу (sonar_files) в формате:
1cv8.exe /execute "<путь к обработке>\icl_СозданиеФайлаНастроекДымовыхТестов(безBOM)"/C"<путь к файлу>\sonar_files" .
Обработка содержит в себе форму, которая открывается при запуске 1С, текстовый макет, в котором находится содержимое файла xUnitParams, и строки, которые автоматически заменяются на названия коллекций метаданных:


При открытии форма получает макет xUnitParams, собирает метаданные и заменяет строки, обозначенные символом &, на собранные коллекции метаданных.

Содержимое макета xUnitParams:

{
"smoke": {
"Справочники": {
"Списки": [
&СправочникиИсключения
],
"Новые": [
&СправочникиИсключения
],
"Существующие": [
&СправочникиИсключения
]
},
"Обработки": [
&ОбработкиИсключения
],
"ОткрываемФормыНаКлиентеТестирования": true,
"Документы": {
"Списки": [
&ДокументыИсключения
],
"Новые": [
&ДокументыИсключения
],
"Существующие": [
&ДокументыИсключения
]
},
"Используется": true,
"Отчеты": [
&ОтчетыИсключения
],
"БизнесПроцессы": [
&БизнесПроцессыИсключения
]
},
"МодальныеОкна": {
"ШаблонПомощника": {
"Поля": [
"*Закрыть *?"
],
"Заголовки": [
"* Шаблон *"
],
"Кнопка": 0
}
},
"МакетыСКД": {
"Используется": false,
"ИсключенияОбщихМакетов": [],
"ИсключенияПоИмениМетаданных": []
},
"CommandInterface": {
"Используется": false,
"Документы": [],
"Разделы": [],
"СтрогийПорядокВыполнения": true,
"Обработки": [],
"Справочники": [],
"Отчеты": [],
"ОбщиеКоманды": [
"Удалить*",
"ЗагрузитьДанныеИзФайла",
"СверткаИнформационнойБазы",
"УдалениеПомеченныхОбъектов"
],
"БизнесПроцессы": []
},
"ФормированиеПечатныхФорм": {
"Используется": false,
"ИсключенияПоОбъекту": [],
"КоличествоДокументов": 2,
"ИсключенияПоИдентификатору": [
"Комплект*"
]
},
"ПроведениеДокументов": {
"Используется": true,
"КоличествоДокументов": 2,
"Исключения": [
&ДокументыИсключенияПроведения
]
}
}

   

Код модуля формы содержит методы:

 

При открытии окна считываем файл sonar_files (ЧтениеТекста), далее готовим данные считыванием макета, собираем метаданные для списков исключений, записываем результирующие данные в файл json:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если Не ЗначениеЗаполнено(ПараметрЗапуска) Тогда
		ЗавершитьРаботуСистемы(Ложь);
	КонецЕсли;
	
	Файл = Новый Файл(ПараметрЗапуска);
	Если Не Файл.Существует() Тогда
		ЗавершитьРаботуСистемы(Ложь);
	КонецЕсли;
	
	ПутьКФайлу = Файл.Путь;
	
	// чтение шаблона
	ЧтениеТекста = Новый ЧтениеТекста(Файл.ПолноеИмя, КодировкаТекста.UTF8);
	Настройки = ЧтениеТекста.Прочитать();
	ЧтениеТекста.Закрыть();
	
	// путь к файлу настроек
	ИмяФайла = Файл.Путь + "xUnitParams.json";
	
	// чтение файла шаблона
	ВременнаяПапка = Файл.Путь + Формат(ТекущаяДата(), "ДФ=yyyyMMddhhmmss");
	СоздатьКаталог(ВременнаяПапка);
	ИмяФайлаТмп = ВременнаяПапка + "\xUnitParams.json.tmp";

	// получаем данные файла настроек
	Данные = ПолучитьДанные(Настройки);
	
	ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаТмп, КодировкаТекста.UTF8, , Ложь);
	ЗаписьТекста.Записать(Данные);
	ЗаписьТекста.Закрыть();
	
	// преобразование кодировки
	МассивФайлов = Новый Массив;
	УбитьBOM(ИмяФайлаТмп, ИмяФайла, ВременнаяПапка, МассивФайлов);
	УдалитьФайлы(ВременнаяПапка);
	
	// безусловное завершение работы системы, т.к. запуск обработки происходит из командной строки 1С
	ЗавершитьРаботуСистемы(Ложь);
	
КонецПроцедуры

 

Код функции ПолучитьДанные:

&НаСервере
Функция ПолучитьДанные(Настройки)
	
	ТекстМакета = РеквизитФормыВЗначение("Объект").ПолучитьМакет("xUnitParams").ПолучитьТекст();
	
	СправочникиИсключения = ПолучитьСправочникиИсключения(Настройки);
	ДокументыИсключения = ПолучитьДокументыИсключения(Настройки);
	ОбработкиИсключения = ПолучитьОбработкиИсключения(Настройки);
	ОтчетыИсключения = ПолучитьОтчетыИсключения(Настройки);
	БизнесПроцессыИсключения = ПолучитьБизнесПроцессыИсключения(Настройки);
	ДокументыИсключенияПроведения = ДокументыИсключения;
	
	ТекстМакета = СтрЗаменить(ТекстМакета, "&ДокументыИсключенияПроведения", ДокументыИсключенияПроведения);
	ТекстМакета = СтрЗаменить(ТекстМакета, "&СправочникиИсключения", СправочникиИсключения);
	ТекстМакета = СтрЗаменить(ТекстМакета, "&ДокументыИсключения", ДокументыИсключения);
	ТекстМакета = СтрЗаменить(ТекстМакета, "&ОбработкиИсключения", ОбработкиИсключения);
	ТекстМакета = СтрЗаменить(ТекстМакета, "&ОтчетыИсключения", ОтчетыИсключения);
	ТекстМакета = СтрЗаменить(ТекстМакета, "&БизнесПроцессыИсключения", БизнесПроцессыИсключения);
	
	Возврат ТекстМакета;
	
КонецФункции

 

Функции получения списков объектов для исключений будут идентичны:

- список справочников:


&НаСервереБезКонтекста
Функция ПолучитьСправочникиИсключения(Настройки)
	
	Результат = "";
	Для Каждого Описание Из Метаданные.Справочники Цикл
		СтрокаПоиска = "Catalogs/" + Описание.Имя + "/";
		Если СтрНайти(Настройки, СтрокаПоиска) > 0 Тогда
			Продолжить;
		КонецЕсли;
		Результат = Результат + ?(ПустаяСтрока(Результат), "", "," + Символы.ПС) + """" + Описание.Имя + """";
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

- список документов:


&НаСервереБезКонтекста
Функция ПолучитьДокументыИсключения(Настройки)
	
	Результат = "";
	Для Каждого Описание Из Метаданные.Документы Цикл
		СтрокаПоиска = "Documents/" + Описание.Имя + "/";
		Если СтрНайти(Настройки, СтрокаПоиска) > 0 Тогда
			Продолжить;
		КонецЕсли;
		Результат = Результат + ?(ПустаяСтрока(Результат), "", "," + Символы.ПС) + """" + Описание.Имя + """";
		
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

- список обработок:


&НаСервереБезКонтекста
Функция ПолучитьОбработкиИсключения(Настройки)
	
	Результат = "";
	Для Каждого Описание Из Метаданные.Обработки Цикл
		СтрокаПоиска = "DataProcessors/" + Описание.Имя + "/";
		Если СтрНайти(Настройки, СтрокаПоиска) > 0 Тогда
			Продолжить;
		КонецЕсли;
		Результат = Результат + ?(ПустаяСтрока(Результат), "", "," + Символы.ПС) + """" + Описание.Имя + """";
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

- список отчетов:


&НаСервереБезКонтекста
Функция ПолучитьОтчетыИсключения(Настройки)
	
	Результат = "";
	Для Каждого Описание Из Метаданные.Отчеты Цикл
		СтрокаПоиска = "Reports/" + Описание.Имя  + "/";
		Если СтрНайти(Настройки, СтрокаПоиска) > 0 Тогда
			Продолжить;
		КонецЕсли;
		Результат = Результат + ?(ПустаяСтрока(Результат), "", "," + Символы.ПС) + """" + Описание.Имя + """";
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

- список бизнес-процессов:


&НаСервереБезКонтекста
Функция ПолучитьБизнесПроцессыИсключения(Настройки)
	
	Результат = "";
	Для Каждого Описание Из Метаданные.БизнесПроцессы Цикл
		СтрокаПоиска = "BusinessProcesses/" + Описание.Имя  + "/";
		Если СтрНайти(Настройки, СтрокаПоиска) > 0 Тогда
			Продолжить;
		КонецЕсли;                	
		Результат = Результат + ?(ПустаяСтрока(Результат), "", "," + Символы.ПС) + """" + Описание.Имя + """";
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

На процедуре УбитьBOM остановимся подробнее. Чтобы файл настройки xUnitParams.json был корректно обработан Jenkins и Vanessa-Runner, его потребовалось сформировать в кодировке UTF-8 без лидирующих меток порядка байтов (BOM-символы из стандарта Юникод). Для этого была использована доработанная обработка из статьи Андрея Чибидина :


// //infostart.ru/1c/articles/137454/
&НаКлиенте
Процедура УбитьBOM(Знач ИсходныйФайл, РезультирующийФайл, ВременнаяПапка, МассивФайлов = Неопределено)
    Если МассивФайлов = Неопределено Тогда
        МассивФайлов = Новый Массив;
    КонецЕсли;
    Бин = Новый ДвоичныеДанные(ИсходныйФайл);
    Размер = Бин.Размер();
    НовыйРазмер = Макс(Окр(Размер/2,0),3);
    Массив = РазделитьФайл(ИсходныйФайл,НовыйРазмер);
    Если Массив.Количество() = 2 Тогда
        МассивФайлов.Вставить(0,Массив[1]);
    КонецЕсли;
    Если НовыйРазмер = 3 Тогда
        ОбъединитьФайлы(МассивФайлов, РезультирующийФайл);
        УдалитьФайлы(ВременнаяПапка);
    Иначе
        УбитьBOM(Массив[0], РезультирующийФайл, ВременнаяПапка, МассивФайлов);
    КонецЕсли;
КонецПроцедуры

Далее помещаем полученный файл настройки в каталог инструмента vanessa-runner, при последующем запуске в Jenkins сценария дымового тестирования будут отработаны выбранные нами операции только для измененных в git-репозитории объектов.

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

обработка разработка автоматизация тестирование дымовые тесты smoke xUnitParams CI DevOps

См. также

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

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

2160 руб.

20.01.2022    9542    36    0    

18

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

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

3240 руб.

05.08.2024    2763    18    1    

12

DevOps и автоматизация разработки EDT Программист Бесплатно (free)

Цель статьи – показать, что DevOps можно внедрять в проектах любого масштаба, даже с ограниченными ресурсами. Автор делится личным опытом: рассказывает, как начиналось внедрение, какие ресурсы потребовались, какие задачи удалось решить и как организован текущий рабочий процесс. Вы узнаете, как DevOps-практики помогают участникам разработки и чем DevOps-инженеры полезны для всех, кто участвует в создании решений. В статье подробно разбираются преимущества, которые дал переход на EDT, его влияние на процессы сборки, а также анализируется опыт внедрения Kubernetes – что это уже принесло и что принесет в будущем.

11.07.2025    472    ptica    0    

3

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

В мире 1С импортозамещение используемых программных продуктов в первую очередь касается миграции СУБД с MSSQL на Postgres. Одна из основных проблем перехода — более «слабый» оптимизатор запросов Postgres по сравнению с MSSQL, когда запросы на MSSQL выполнялись значительно быстрее, чем на Postgres. Автор статьи разработал инструмент, который позволяет без значительных затрат выявить эти «проблемные» запросы. Основная идея подхода: конвертация на Postgres запросов, снятых при использовании MSSQL, и сравнение времени выполнения на MSSQL и на Postgres.

10.07.2025    840    berserg    4    

6

DevOps и автоматизация разработки Программист Россия Бесплатно (free)

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

02.07.2025    4385    lapinio    0    

24

DevOps и автоматизация разработки Обновление 1С Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Абонемент ($m)

Продолжаем делиться опытом ICL SOFT – в этой статье рассказываем о сложном обновлении сильно доработанной конфигурации "1С:ERP Управление холдингом с версии 3.1.8.15" до актуальной версии редакции 3.2. Публикации о сложных обновлениях, которые можно найти в открытых источниках, содержат мало подробной информации об использованных инструментах и решениях. Часто в них отсутствует информация о том, что находится под капотом этих решений. Будем рады, если наша статья окажется полезной

1 стартмани

01.07.2025    1103    vladimir_iclsoft    1    

18

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

Процесс тестирования в команде автора эволюционировал от ручных проверок до полноценной автоматизации с использованием современных инструментов и контейнеризации. Начав с Vanessa-ADD в качестве основного решения, команда постепенно расширила стек, включив в него Vanessa-Automation для UI-тестирования, YAxUnit для модульных проверок, Coverage41C для анализа покрытия кода, а также Gitlab CI, Allure и SonarQube для мониторинга качества и непрерывной интеграции. Статья объясняет, почему в качестве стартового инструмента была выбрана Vanessa-ADD и как удалось организовать запуск дымовых и сценарных тестов в CI-контуре на Windows-сервере. Рассмотрен вопрос анализа покрытия кода тестами: зачем потребовался подсчет и какими сложности сопровождали настройку Coverage41C в клиент-серверной архитектуре. Также автор рассказывает про переход на Docker (рассматривался готовый образ, но в итоге был создан собственный) и смену инфраструктуры с Windows и PowerShell на Linux и Bash.

27.06.2025    1798    TaGolovkina    3    

21

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

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

20.06.2025    3756    kuntashov    5    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. amiralnar 9 01.04.24 12:03 Сейчас в теме
Очень интересно. А без сонар это как можно попробовать применить?
Оставьте свое сообщение