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

09.10.23

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

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

Скачать файл

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

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

Описанное решение может оказаться полезным в случаях, когда на этапе автоматического тестирования (процесса 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

См. также

DevOps для 1С DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

2500 руб.

20.06.2023    22681    21    4    

321

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Программист Стажер Платформа 1С v8.3 Платные (руб)

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    12085    104    4    

134

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

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

2160 руб.

05.08.2024    1360    15    1    

8

DevOps и автоматизация разработки Логистика, склад и ТМЦ Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Подсистема «Управление сборкой GLI» предназначена для динамического формирования сборочных линий Gitlab и отслеживания процесса доработок систем на базе1С:Предприятия Позволяет упростить выпуск новых релизов системы, подготовить описание доработок системы. Интегрируется с GitLab API по событиям Push, Merge-request, Pipeline. Уведомляет пользователей о результатах сборки/тестирования сборочных конвейеров через СВ, либо при её недоступности или отсутствию по E-Mail. Поможет при отправке исправлений ошибок в общую базу тестирования, сформирует запросы на слияние в ветку версии только по протестированному и подтверждённому функционалу. Подсистема рассчитана исключительно на клиент - серверную архитектуру тестовых ИБ. Поддерживаемая версии СППР 2.0.4.15, платформа не ниже 8.3.17.1549, 2.0.7.3 / не ниже 8.3.21.1664, начиная с релиза 1.0.4.30 требуется платформа не ниже 8.3.23 рекомендуемый релиз 8.3.23.1997

7000 руб.

26.08.2022    12679    10    10    

35

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

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

2400 руб.

04.07.2022    8472    38    1    

29

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

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

1800 руб.

20.01.2022    7844    19    0    

13

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

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

28.11.2024    1629    user1999010    2    

15

Облачные сервисы, хостинг Linux Тестирование QA Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

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

31.10.2024    1397    capitan    0    

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