Генерация сценариев тестирования внешних печатных форм средствами Vanessa Automation

15.06.20

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

Предложен способ автоматической генерации сценариев для тестирования внешних печатных форм средствами Vanessa Automation

Скачать исходный код

Наименование Файл Версия Размер
Генерация сценариев тестирования внешних печатных форм средствами Vanessa Automation:
.cfe 15,95Kb
3
.cfe 15,95Kb 3 Скачать

Для поддержания работоспособности конфигурации необходимо проводить тестирование. В частности, это касается внешних печатных форм. 1С часто переименовывает названия методов в своих общих модулях, после чего внешняя печатная форма становится неработоспособной. Свежий пример: изменение наименования функции с ПолучитьНомерНаПечать() на НомерНаПечать() в общем модуле ПрефиксацияОбъектовКлиентСервер при обновлении ERP на 2.4.12.64. К счастью, нет необходимости вручную формировать все доработанные печатные формы, потому что есть механизмы автоматизации процесса тестирования. Например, Vanessa Automation, которая проводит тестирование по подготовленному скрипту. Но подготовка скрипта тоже отнимает время и силы, и к тому же всегда можно забыть включить в скрипт новую печатную форму. Чтобы автоматизировать создание скриптов и гарантировать, что в базе не появится внешней печатной формы, для которой не будут проводиться тесты, предлагается механизм автоматической генерации скриптов тестирования.

Процедуры генерации размещаются в общем модуле мт_ТестированиеКонфигурации_Служебный. Текст этого модуля:

 

 

#Область ГенераторСценариевТестирования_VanessaAutomation

Функция ТекстФайлаСценариевТестированияПечатныхФорм() Экспорт
	
	//Функция генерирует текст файла сценариев для тестирования средствами Vanessa Automation 
	//Сейчас реализовано для дополнительных печатных форм, планируется сделать для всех модифицированных в расширении печатных форм
	
	ТекстФайлаСценариев = Новый	ТекстовыйДокумент;
	
	ТекстФайлаСценариев.ДобавитьСтроку("#language: ru");
	ТекстФайлаСценариев.ДобавитьСтроку("#encoding: utf-8");
	ТекстФайлаСценариев.ДобавитьСтроку("#Сгенерирован обработкой СоздатьСценарииТестированияПечатныхФорм()");
	ТекстФайлаСценариев.ДобавитьСтроку("");
	ТекстФайлаСценариев.ДобавитьСтроку("Функционал: Проверка печатных форм из дополнительных отчетов и обработок");
	ТекстФайлаСценариев.ДобавитьСтроку("");
	ТекстФайлаСценариев.ДобавитьСтроку("Как Пользователь");
	ТекстФайлаСценариев.ДобавитьСтроку("Я хочу проверить отсутствие синтаксических ошибок в доработанных печатных формах");
	ТекстФайлаСценариев.ДобавитьСтроку("Чтобы ошибки не возникли при работе пользователей");
	ТекстФайлаСценариев.ДобавитьСтроку("");
	ТекстФайлаСценариев.ДобавитьСтроку("Контекст: ");
	ТекстФайлаСценариев.ДобавитьСтроку("	Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий");
	ТекстФайлаСценариев.ДобавитьСтроку("");
	
	СценарииТестирования = ПустаяТаблицаСценариевТестирования();
	
	Запрос = Новый Запрос();
	Запрос.Текст = "ВЫБРАТЬ
	               |	ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка
	               |ИЗ
	               |	Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки
	               |ГДЕ
	               |	ДополнительныеОтчетыИОбработки.Публикация <> ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена)
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	ДополнительныеОтчетыИОбработки.Наименование";
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		ХранилищеОбработки = Выборка.Ссылка.ХранилищеОбработки;
		ДвоичныеДанные = ХранилищеОбработки.Получить();
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
		ДвоичныеДанные.Записать(ИмяВременногоФайла);
		ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяВременногоФайла);
		ВнешняяОбработка.ДобавитьСценарииТестирования(СценарииТестирования);
		
	КонецЦикла;
	
	Для Каждого Сценарий Из СценарииТестирования Цикл
		
		ТекстФайлаСценариев.ДобавитьСтроку("");
		ТекстФайлаСценариев.ДобавитьСтроку("Сценарий: " + Сценарий.Наименование);
		ТекстФайлаСценариев.ДобавитьСтроку("");
		Если ЗначениеЗаполнено(Сценарий.Комментарий) Тогда
			ТекстФайлаСценариев.ДобавитьСтроку("	#" + Сценарий.Комментарий);
		КонецЕсли;
		ТекстФайлаСценариев.ДобавитьСтроку("	Когда я открываю навигационную ссылку """ + Сценарий.НавигационнаяСсылка + """");
		
		Для Каждого Команда Из Сценарий.Команды Цикл
			ТекстФайлаСценариев.ДобавитьСтроку("	И я нажимаю на кнопку '" + Команда + "'");
			ТекстФайлаСценариев.ДобавитьСтроку("	Тогда открылось окно '" + Сценарий.ЗаголовокОкнаПечатнойФормы + "'");
			ТекстФайлаСценариев.ДобавитьСтроку("	И Я закрываю окно '" + Сценарий.ЗаголовокОкнаПечатнойФормы + "'");
			ТекстФайлаСценариев.ДобавитьСтроку("	");
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат ТекстФайлаСценариев;
	
КонецФункции

Функция ПустаяТаблицаСценариевТестирования()
	
	ТаблицаСценариев = Новый ТаблицаЗначений;
	ТаблицаСценариев.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100)));
	ТаблицаСценариев.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100)));
	ТаблицаСценариев.Колонки.Добавить("НавигационнаяСсылка", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100)));
	ТаблицаСценариев.Колонки.Добавить("ЗаголовокОкнаПечатнойФормы", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100)));
	ТаблицаСценариев.Колонки.Добавить("Команды", Новый ОписаниеТипов("Массив"));
	
	возврат ТаблицаСценариев;
	
КонецФункции

Функция ПроверитьНаличиеСценариевТестирования(ВнешнийОбъект) Экспорт
	
	ТекстСообщенияОбОшибке = "Не указаны сценарии тестирования! См. описание в общем модуле ""мт_ТестированиеКонфигурации_Служебный""";
	
	СценарииТестирования = ПустаяТаблицаСценариевТестирования();
	Попытка
		ВнешнийОбъект.ДобавитьСценарииТестирования(СценарииТестирования);
		Если СценарииТестирования.Количество() = 0 Тогда
			ВызватьИсключение ТекстСообщенияОбОшибке;
		КонецЕсли;
	Исключение
		ВызватьИсключение ТекстСообщенияОбОшибке;
	КонецПопытки;

КонецФункции

#КонецОбласти

 

Данные для генерации скрипта должны быть размещены в процедуре ДобавитьСценарииТестирования() модуля объекта внешней печатной формы:

 

В этой процедуре указывается:
- наименование сценария,
- необязательный комментарий (я в нем указал номер и дату документа), 
- навигационная ссылка документа
- заголовок окна печатной формы (по этому заголовку при тестировании будет определяться, сформировалась печатная форма или нет)
- массив команд печатной формы (массив наименований пунктов меню в подменю "Печать").

Навигационную ссылку объекта информационной базы можно получить через функцию ПолучитьНавигационнуюСсылку. Я вынес вызов этой функции в общую команду мт_ПоказатьНавигационнуюСсылку, и привязал ее вызов к необходимым документам, после чего в форме этих документов появилась соответствующая кнопка:

 

Для генерации скрипта я сделал общую форму "мт_ГенераторСценариевТестирования_VanessaAutomation" с одним полем "Папка скриптов". Вот код этой формы:

 

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

 

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

В результате работы генератора сценариев получается примерно такой файл:

 

 

Vanessa тестирование

См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

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

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

2220 руб.

04.07.2022    6919    26    1    

24

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

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

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

1728 руб.

20.01.2022    6700    10    0    

9

Нагрузочное тестирование для определения производительности системы

Тестирование QA Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка с простым и понятным интерфейсом позволяет выполнить нагрузочное тестирование системы: появляется возможность понять, сколько документов записывается / проводится группой пользователей в текущей информационной системе и сколько будет проводиться / записываться в другой информационной системе. Таким образом, можно оценить потенциальный прирост производительности от перехода в другую систему по сравнению с текущей информационной системой (переход на новый сервер, переход от файловой базы к серверной и т.д.).

10 стартмани

08.04.2024    1200    3    user1527257    1    

4

Выполнение тестов и обработка их результатов в 1С: Тестировщик

Тестирование QA Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье мы рассмотрим имитацию действий пользователя 1С и протоколирование тестов в инструменте 1С: Тестировщик.

14.03.2024    1394    Koder_Line    1    

11

Создание и модификация тестов в 1С:Тестировщик

Тестирование QA Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

1С: Тестировщик позволяет создавать и модифицировать тесты для проверки функциональности программного обеспечения, гарантируя надежность и стабильность приложений. В данной статье будет рассмотрен процесс написания и модификации тестов в конфигурации системы 1С: Тестировщик, а также основные принципы и методики, которые помогут тестировщикам эффективно использовать этот инструмент для обеспечения качества программных продуктов.

23.01.2024    714    Koder_Line    1    

4

Настройка Allure для Gitlab (self-hosted)

Тестирование QA Абонемент ($m)

Заметка о том, как использовать Allure с self-hosted Gitlab, чтобы быстро и с минимальными усилиями получить удобные отчёты о результатах тестирования и навигацию внутри них.

1 стартмани

11.01.2024    2260    comptr    4    

25

Анализ документов: свертка базы, автотесты, динамика роста базы

Статистика базы данных Инструментарий разработчика Тестирование QA Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

Внешняя обработка "Анализ документов и регистров" - можно использовать для детального изучения документов базы, связанных регистров (накопления и сведений). Предварительный анализ документов обычно требуется перед проведением свертки остатков базы, перед обновлением типовых релизов сильно измененной конфигурации, перед переходом на новую программу.

3 стартмани

29.12.2023    1192    8    RustIG    5    

8

Быстрый старт в 1С: Тестировщик

Тестирование QA Платформа 1С v8.3 Бесплатно (free)

В данной статье мы рассмотрим начало работы, установку и подключение программы системы 1С: Тестировщик, рабочую область.

14.12.2023    2168    Koder_Line    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Pr-Mex 136 15.06.20 17:48 Сейчас в теме
Спасибо за статью!
+
2. artbear 1519 18.06.20 09:31 Сейчас в теме
(0) Интересное решение.
В Vanessa-ADD также будет работать.
+
3. artbear 1519 18.06.20 09:34 Сейчас в теме
(0) Давно размышляю над дымовым тестом печатных форм, без автогенерации.
Несколько лет назад даже в одном платном проекте сделал для компании-заказчика аналогичный дымовой тест на базе Ванесса-АДД, тест кодом, без использования фич.
+
4. AlexPC 19.06.20 09:14 Сейчас в теме
Для конфигураций на БСП можно обойтись без доработки ВПЧ на первый взгляд.
Данные можно получить из сведений:
Функция ЗаполнитьСценарийТестированияПоДаннымОбработки(СценарииТестирования, СведенияОВнешнейОбработке)
	
	Для Каждого мСтрока Из СведенияОВнешнейОбработке.Назначение Цикл
		
		Запрос = Новый Запрос;
		
		Если СтрНайти(мСтрока, "Документ.") > 0 Тогда
			Запрос.Текст = 
				"ВЫБРАТЬ ПЕРВЫЕ 1
				|	Документ.Ссылка КАК Ссылка,
				|	ПРЕДСТАВЛЕНИЕ(Документ.Ссылка) КАК Представление
				|ИЗ
				|	Документ.АвансовыйОтчет КАК Документ
				|
				|УПОРЯДОЧИТЬ ПО
				|	Документ.Дата УБЫВ";
			
			Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.АвансовыйОтчет", мСтрока);
		ИначеЕсли  СтрНайти(мСтрока, "Справочник.") > 0 Тогда
			Запрос.Текст = 
				"ВЫБРАТЬ ПЕРВЫЕ 1
				|	Справочник.Ссылка КАК Ссылка,
				|	ПРЕДСТАВЛЕНИЕ(Справочник.Ссылка) КАК Представление
				|ИЗ
				|	Справочник.Банки КАК Справочник
				|
				|УПОРЯДОЧИТЬ ПО
				|	Справочник.Код УБЫВ";
			
			Запрос.Текст = СтрЗаменить(Запрос.Текст, "Справочник.Банки", мСтрока);
		Иначе
			Продолжить;
		КонецЕсли;
		РезультатЗапроса = Запрос.Выполнить();
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		Если ВыборкаДетальныеЗаписи.Следующий() Тогда
			
			Сценарий = СценарииТестирования.Добавить();
			Сценарий.Наименование = "Формирование печатной формы """ + СведенияОВнешнейОбработке.Наименование + """ для объекта """ + мСтрока + """";
			Сценарий.Комментарий = ВыборкаДетальныеЗаписи.Представление;
			Сценарий.НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(ВыборкаДетальныеЗаписи.Ссылка);
			Сценарий.ЗаголовокОкнаПечатнойФормы = "Печать документа";
			
			мКоманды = Новый Массив;
			Для Каждого Команда Из СведенияОВнешнейОбработке.Команды Цикл
				мКоманды.Добавить(Команда.Представление);
			КонецЦикла;
			
			Сценарий.Команды = мКоманды;
	
		КонецЕсли;
		
	КонецЦикла;
	
КонецФункции
Показать


а проверку заголовка заменить на проверку имени формы:
	Для Каждого Сценарий Из СценарииТестирования Цикл
		
		ТекстФайлаСценариев.ДобавитьСтроку("");
		ТекстФайлаСценариев.ДобавитьСтроку("Сценарий: " + Сценарий.Наименование);
		ТекстФайлаСценариев.ДобавитьСтроку("");
		Если ЗначениеЗаполнено(Сценарий.Комментарий) Тогда
			ТекстФайлаСценариев.ДобавитьСтроку("	#" + Сценарий.Комментарий);
		КонецЕсли;
		ТекстФайлаСценариев.ДобавитьСтроку("	Когда я открываю навигационную ссылку """ + Сценарий.НавигационнаяСсылка + """");
		
		Для Каждого Команда Из Сценарий.Команды Цикл
			ТекстФайлаСценариев.ДобавитьСтроку("	И я нажимаю на кнопку '" + Команда + "'");
			//ТекстФайлаСценариев.ДобавитьСтроку("	Тогда открылось окно '" + Сценарий.ЗаголовокОкнаПечатнойФормы + "'");
			//ТекстФайлаСценариев.ДобавитьСтроку("	И Я закрываю окно '" + Сценарий.ЗаголовокОкнаПечатнойФормы + "'");
			ТекстФайлаСценариев.ДобавитьСтроку("	Тогда открылась форма с именем  'ОбщаяФорма.ПечатьДокументов'");
			ТекстФайлаСценариев.ДобавитьСтроку("	И Я закрываю текущее окно'");
			ТекстФайлаСценариев.ДобавитьСтроку("	");
		КонецЦикла;
		ТекстФайлаСценариев.ДобавитьСтроку("	И Я закрываю текущее окно'");
		
	КонецЦикла;
Показать


P.S. Понятно, что для красоты нужно докрутить дополнительные проверки - например признак проведения у документов или наличие кода у справочника + игнорирование групп.
+
5. ipoloskov 162 19.06.20 10:46 Сейчас в теме
(4) дело в том, что печатная форма в общем случае предназначена не для любого первого попавшегося документа. В моем случае есть ряд форм, которые требуют наличия серий в табличной части, определенного покупателя, определенной номенклатуры (у которой есть штрихкод). Поэтому я считаю правильным явно задавать ссылку на объект тестирования.

За подсказку проверки имени формы спасибо. Меня этот момент тоже смущал. Кроме того, кнопку печати тоже лучше искать по наименованию:
И я нажимаю на кнопку с именем 'ПодменюПечатьОбычное_АктОСписанииТоваров_ТОРГ16'

которая будет генерироваться следующим кодом
В процедуре ДобавитьСценарииТестирования:
	мКоманды = Новый Массив;
	Для Каждого Команда Из СведенияОВнешнейОбработке().Команды Цикл
		мКоманды.Добавить(Команда.Идентификатор);
	КонецЦикла;
	
	Сценарий.Команды = мКоманды;

В процедуре ТекстФайлаСценариевТестированияПечатныхФорм:
				ТекстФайлаСценариев.ДобавитьСтроку("	И я нажимаю на кнопку с именем 'ПодменюПечатьОбычное_" + Команда + "'");
+
Оставьте свое сообщение