Разработка автоматизированного тестирования на основании настольного приложения при помощи платформы 1С: Предприятие 8.3 (версия 01.12)

23.11.22

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

В данной статье я подробно разберу процесс создания автоматизированного тестирования для приложения на базе 1С: Предприятие 8.3.

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

Возможно, где-то буду описывать крайне подробно, как может показаться опытным программистам, но делаю я это в первую очередь для себя и для того, чтобы это можно было повторить даже совсем начинающим программистам.
 

Шаг 1. 

Создаём новую информационную базу. Я её назвал "МенеджерТестирования" для понятности. Также немаловажно указать понятный путь.

Шаг 2. 

Переходим в конфигурацию. Далее во вкладку Сервис -> Параметры -> Запуск 1С: Предприятия -> Дополнительные -> Запускать как менеджер тестирования.

Шаг 3.

Теперь необходимо создать новую обработку (в панели объектов конфигурации, слева). Я назвал её "ЗапускТестов".

Внутри неё создаём новую форму (обработки).

В этой форме в окне реквизитов создаём два новых реквизита: Платформа и ПутьКБазе. Перетаскиваем их на форму.

В завершении, каждому из добавленных реквизитов в свойствах переходим в пункт Использование -> Кнопка выбора -> "Да".

Далее, не выходя из формы, добавляем новую команду - "ТестовыйСценарий". Перетаскиваем её на форму.

Теперь вернёмся к нашим полям путей. В свойствах поля "Платформа" переходим в События -> Начало выбора и теперь жмём на лупу и создаём новую процедуру на клиенте.

Открывается модуль, внутри которого должен лежать следующий код:

&НаКлиенте
Процедура ПлатформаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	  СтандартнаяОбработка = Ложь;
	  Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	  Диалог.Заголовок = "Выберите файл базы 1С";
	  Диалог.ПредварительныйПросмотр = Ложь;
	  Диалог.МножественныйВыбор = Ложь;
	  Диалог.ПроверятьСуществованиеФайла = Истина;
	  Диалог.Каталог = "c:\";
	  Если Диалог.Выбрать() Тогда
		  Платформа = Диалог.ПолноеИмяФайла;
	  КонецЕсли;
КонецПроцедуры

 

Теперь пропишем процедуру для пути к базе. Переходим в свойства поля "ПутьКБазе" -> События -> НачалоВыбора -> Создаём процедуру на клиенте.

Туда мы пропишем следующий код:

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

Чтобы у нас всё заработало, необходимо перейти в свойства всей конфигурации и в пункте "Совместимость" найти поле "Режим использования синхронных вызовов..." -> ставим Использовать.

 


Примерно так будет выглядеть окно

 

Проверяем! Указываем необходимые пути и если ошибок не возникает - идём дальше.
 

Шаг 4.

Теперь пропишем сценарий для кнопки.

Выбираем команду -> Свойства -> Действие -> На клиенте

Внутри пропишем следующий код:

&НаКлиенте
Процедура ТестовыйСценарий(Команда)
	ЗапуститьСистему("""Платформа"" ENTERPRISE /F " + ПутьКБазе + " /TESTCLIENT");
	ТестируемоеПриложение = Новый ТестируемоеПриложение();
	МаксИтераций = 10;
	Для Счетчик = 1 По МаксИтераций Цикл
		Попытка
			ТестируемоеПриложение.УстановитьСоединение();
			Прервать;
		Исключение
			Если Счетчик = МаксИтераций Тогда
				Сообщить(ОписаниеОшибки());
			КонецЕсли;
		КонецПопытки;
	КонецЦикла;
КонецПроцедуры

 

Шаг 5.

Переходим в конфигурацию основного, тестируемого приложения. Запускаем специальную отладку: Сервис -> "Запустить для записи журнала действий пользователя".

Запустится программа, в верхнем левом углу которой появятся необходимые нам дополнительные кнопки.

 

 

Для записи действий нажимаем кнопку "Начать".

После нажатия, совершаем тестируемое действие (например, заносим новые данные в Номенклатуру).

Важно! Если происходит запись данных через форму элемента, то там необходимо переключаться на новые поля не при помощи курсора, а клавиши Tab.

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

 

Шаг 6.

Возвращаемся в менеджер тестирования.

Жмём ПКМ по Обработкам -> Вставить внешнюю обработку -> В диалоговом окне выбираем файл "ULogToScript". Я буду работать с этой наработкой.

Запускаем менеджер тестирования. Далее переключаемся на вкладку "Преобразование журнала действий пользователя".

Мы попадаем на новое для нас окно преобразования. Здесь нужно поставить две галочки, а также вставить ранее сохранённый нами журнал действий пользователя (который на английском). Жмём на красивую кнопку "Преобразовать".

Должно выглядеть так:

 


Преобразование журнала действий пользователя

 

В окне сценарий появился необходимый преобразованный код. Копируем его или сохраняем в файл и идём дальше.

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

ГлавноеОкноФормы = ТестируемоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"));
КомандныйИнтерфейсГлавногоОкна = ГлавноеОкноФормы.ПолучитьКомандныйИнтерфейс();

И после процедуры, в которой мы это прописали, вставляем целиком весь преобразованный русскоязычный журнал действий.
Чтобы обратиться к нему, после тех двух строчек, что написаны выше, необходимо вызвать процедуру журнала, передав в параметр наше тестируемое приложение.

По итогу, модуль формы ЗапускТестов должен хранить в себе примерно такой код:

&НаКлиенте
Процедура ПлатформаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	  СтандартнаяОбработка = Ложь;
	  Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	  Диалог.Заголовок = "Выберите файл базы 1С";
	  Диалог.ПредварительныйПросмотр = Ложь;
	  Диалог.МножественныйВыбор = Ложь;
	  Диалог.ПроверятьСуществованиеФайла = Истина;
	  Диалог.Каталог = "c:\";
	  Если Диалог.Выбрать() Тогда
		  Платформа = Диалог.ПолноеИмяФайла;
	  КонецЕсли;
КонецПроцедуры

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

&НаКлиенте
Процедура ТестовыйСценарий(Команда)
	ЗапуститьСистему("""Платформа"" ENTERPRISE /F " + ПутьКБазе + " /TESTCLIENT");
	ТестовоеПриложение = Новый ТестируемоеПриложение();
	МаксИтераций = 10;
	Для Счетчик = 1 По МаксИтераций Цикл
		Попытка
			ТестовоеПриложение.УстановитьСоединение();
			Прервать;
		Исключение
			Если Счетчик = МаксИтераций Тогда
				Сообщить(ОписаниеОшибки());
			КонецЕсли;
		КонецПопытки;
	КонецЦикла;  
	
	// Вставляем тесты
	ГлавноеОкноФормы = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"));
	КомандныйИнтерфейсГлавногоОкна = ГлавноеОкноФормы.ПолучитьКомандныйИнтерфейс(); 
	
	ТестовыйСценарий_22_11_2022(ТестовоеПриложение);
	
КонецПроцедуры       

&НаКлиенте
Процедура ТестовыйСценарий_22_11_2022(ТестовоеПриложение)

	ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаНоменклатураНажать(ТестовоеПриложение);
	ОкноПриложенияНоменклатураКнопкаСоздатьНажать(ТестовоеПриложение);
	ОкноПриложенияНоменклатураСозданиеПолеНаименованиеПерейтиКСледующемуЭлементу(ТестовоеПриложение);
	ОкноПриложенияНоменклатураСозданиеКнопкаЗаписатьИЗакрытьНажать(ТестовоеПриложение);

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

&НаКлиенте
Процедура ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаНоменклатураНажать(ТестовоеПриложение)
	
	ОкноПриложенияОсновное = Неопределено;
	КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты();
	Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл
		Если ТестируемоеОкно.Основное Тогда
			ОкноПриложенияОсновное = ТестируемоеОкно;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	ОкноПриложенияОсновноеCommandInterface = ОкноПриложенияОсновное.ПолучитьКомандныйИнтерфейс();
	ГруппаКомандногоИнтерфейсаПанельФункцийТекущегоРаздела = ОкноПриложенияОсновноеCommandInterface.НайтиОбъект(Тип("ТестируемаяГруппаКомандногоИнтерфейса"), "Панель функций текущего раздела");
	КнопкаКомандногоИнтерфейсаНоменклатура = ГруппаКомандногоИнтерфейсаПанельФункцийТекущегоРаздела.НайтиОбъект(Тип("ТестируемаяКнопкаКомандногоИнтерфейса"), "Номенклатура");
	КнопкаКомандногоИнтерфейсаНоменклатура.Нажать();

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

&НаКлиенте
Процедура ОкноПриложенияНоменклатураКнопкаСоздатьНажать(ТестовоеПриложение)

	ОкноПриложенияНоменклатура = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "Номенклатура", , 30);
	ОкноПриложенияНоменклатураФормаНоменклатура = ОкноПриложенияНоменклатура.НайтиОбъект(Тип("ТестируемаяФорма"), "Номенклатура");
	ГруппаКоманднаяПанель = ОкноПриложенияНоменклатураФормаНоменклатура.НайтиОбъект(Тип("ТестируемаяГруппаФормы"), "Командная панель");
	КнопкаСоздать = ГруппаКоманднаяПанель.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Создать");
	КнопкаСоздать.Нажать();

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

&НаКлиенте
Процедура ОкноПриложенияНоменклатураСозданиеПолеНаименованиеПерейтиКСледующемуЭлементу(ТестовоеПриложение)

	ОкноПриложенияНоменклатураСоздание = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "Номенклатура (создание)", , 30);
	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание = ОкноПриложенияНоменклатураСоздание.НайтиОбъект(Тип("ТестируемаяФорма"), "Номенклатура (создание)");
	ПолеНаименование = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Наименование");
	ПолеНаименование.ВвестиТекст("Номенклатура3");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

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

&НаКлиенте
Процедура ОкноПриложенияНоменклатураСозданиеКнопкаЗаписатьИЗакрытьНажать(ТестовоеПриложение)

	ОкноПриложенияНоменклатураСоздание = ТестовоеПриложение.НайтиОбъект(Тип("ТестируемоеОкноКлиентскогоПриложения"), "Номенклатура (создание) *", , 30);
	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание = ОкноПриложенияНоменклатураСоздание.НайтиОбъект(Тип("ТестируемаяФорма"), "Номенклатура (создание) *");
	ПолеЕдиницаИзмерения = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Единица измерения");
	ПолеЕдиницаИзмерения.ОткрытьВыпадающийСписок();

	ПолеЕдиницаИзмерения.ОжидатьФормированияВыпадающегоСписка();

	ПолеЕдиницаИзмерения.ВыполнитьВыборИзСпискаВыбора("шт");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеДлинаМ = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Длина, м");
	ПолеДлинаМ.ВвестиТекст("1,00");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеКоличество = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Количество");
	ПолеКоличество.ВвестиТекст("1");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеТипНоменклатуры = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Тип номенклатуры");
	ПолеТипНоменклатуры.ОткрытьВыпадающийСписок();

	ПолеТипНоменклатуры.ОжидатьФормированияВыпадающегоСписка();

	ПолеТипНоменклатуры.ВыполнитьВыборИзСпискаВыбора("Материалы");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеТипМатериалаФурнитуры = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Тип материала/фурнитуры");
	ПолеТипМатериалаФурнитуры.ВвестиТекст("Новый тип");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеЦена = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Цена");
	ПолеЦена.ВвестиТекст("366,00");

	ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.ПерейтиКСледующемуЭлементу();

	ПолеКачество = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемоеПолеФормы"), "Качество");
	ПолеКачество.ОткрытьВыпадающийСписок();

	ПолеКачество.ОжидатьФормированияВыпадающегоСписка();

	ПолеКачество.ВыполнитьВыборИзСпискаВыбора("Средняя");

	ГруппаКоманднаяПанель = ОкноПриложенияНоменклатураСозданиеФормаНоменклатураСоздание.НайтиОбъект(Тип("ТестируемаяГруппаФормы"), "Командная панель");
	КнопкаЗаписатьИЗакрыть = ГруппаКоманднаяПанель.НайтиОбъект(Тип("ТестируемаяКнопкаФормы"), "Записать и закрыть");
	КнопкаЗаписатьИЗакрыть.Нажать();

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

Обратите внимание! Из-за возникновения неполадок этот листинг немного отличается от предыдущих тем, что ТестируемоеПриложение заменено на ТестовоеПриложение.

 

Проверяем модуль на наличие возможных синтаксических ошибок и запускаем наш менеджер тестирования.

Выбираем необходимые пути и выполняем тестовый сценарий.

Если всё правильно, то можно успеть заметить ускоренный автоматический процесс заполнения данных. После завершения можем увидеть в нашем справочнике/документе новые данные.

Тестирование прошло успешно!

Конфигурация тестирование автоматизация автоматическое

См. также

Автотесты для типовых конфигураций 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    6973    26    1    

24

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

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

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

10 стартмани

08.04.2024    1261    3    user1527257    1    

4

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

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

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

14.03.2024    1433    Koder_Line    1    

11

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

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

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

23.01.2024    731    Koder_Line    1    

4

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

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

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

1 стартмани

11.01.2024    2366    comptr    4    

25

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

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

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

3 стартмани

29.12.2023    1215    8    RustIG    5    

8

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

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

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

14.12.2023    2223    Koder_Line    0    

6

YAxUnit или модульное тестирование в 1С

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

Почему-то, когда говорят о тестировании в 1С, в основном подразумевают пользовательское или сценарное тестирование. А модульное или юнит-тестирование незаслуженно обходят стороной. Расскажем об инструменте модульного тестирования, позволяющем писать тесты в формате текучих выражений и выполнять их в конфигураторе, EDT и на CI, а также о плагине для EDT, облегчающем написание и выполнение тестов.

16.11.2023    4046    theshadowco    7    

48