Шпаргалка. Автоматическое тестирование внешних отчетов и обработок в нескольких информационных базах

Публикация № 1231390

Разработка - Инструментарий разработчика - Прочие инструменты разработчика

бесплатно free автоматическое автоматизированное тестирование обработки отчеты конфигурация testmanager testclient

Используем Автоматизированное тестирование на практике. Простой код для обновления и запуска внешних отчетов и обработок в нескольких ИБ. Создаем рабочее решение с нуля.
Проверено на
  1. Платформа 8.3.16.1224
  2. Файловые демонстрационные конфигурации
  3. УТ 11.4.11.88, КА 2.4.11.88, ERP 2.4.6.188, УТ 11.2.2.94

Обновление отчетов и обработок должно работать на конфигурациях с БП 3.0.
Запуск обработки надо настраивать для конкретной задачи.

Введение

Не нашел ни одного рабочего примера Автоматизированного тестирования 1С.
Такого, чтобы взять и запустить. Попадаются либо фрагменты кода с объяснениями, либо конфигурации которые надо изучать.Решил поделиться рабочим примером, который сам использую. Для реального использования надо только настроить под себя: прописать пути, имена и т.п..

Автоматизированное или автоматическое?

Технология (инструментарий) 1С называется “Автоматизированное тестирование”, а в названии статьи используется слово “Автоматическое” в смысле без участия человека. Более точное название статьи было бы “Автоматическое тестирование … с помощью Автоматизированного тестирования 1С”

Автоматизированное тестирование 1C

Автоматизированное тестирование (АТ 1С) - инструмент 1С для имитации интерактивных действий пользователя. В АТ 1С всегда участвуют два клиентских приложения. Одно приложение выполняет роль менеджера тестирования, второе приложение выполняет роль клиента тестирования.

Сам процесс такой: Менеджер запускает клиента и подключается к нему (примерно как по Com-соединению). Для управления клиентом используется набор объектов. Этот набор недоступен при стандартном запуске.

Предыстория

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

На первый взгляд, просто в запуске обработки нет никакого тестирования.

Но обработка сделанная в УТ 11.4 может не пройти проверку синтаксиса  в УТ 11.2. Например, из-за использования различных версий БСП В УТ 11.4 и УТ 11.2.

Создание ИБ - менеджера тестирования

Конфигурация состоит из единственного модуля - модуля приложения. Также надо установить одно свойство конфигурации и режим запуска ИБ.

Итак,

  1. Создаем пустую информационную базу, назовем к примеру ТестМенеджер
  2. В свойствах конфигурации устанавливаем режим использования модальности
  3. Берем код под спойлером и копируем его в Модуль приложения
  4. Устанавливаем флаг
    Сервис => Параметры => Запуск 1С:Предприятия  => Дополнительно  => Автоматизированное тестирование => Запускать как менеджер тестирования
    .

ИБ ТестМенеджер готова. Остается настроить параметры тестирования (пути к файлам, имена и т.п) для своих нужд.

 
 Текст модуля приложения
Запуск конфигурации

При запуске получаем окно для выбора теста:

Состав теста

Тест состоит из 3 шагов:

  • Шаг 1.Обновление отчета или обработки в справочнике Дополнительные отчеты и обработки
  • Шаг 2.Запуск отчета или обработки
    Вызывается процедура ЗапускОбработки(). Код процедуры создается вручную с учетом конкретного отчета или обработки.
    Шаг можно отключить
  •  Шаг 3.Закрытие приложения после теста
    Шаг можно отключить
Настройка параметров теста

Параметры тестов задаются в функции ПолучитьМассивВсехТестов(). 

Каждый тест представлен структурой со следующими ключами:

  • ПредставлениеВСпискеВопроса
    • Наименование теста
    • “УТ 11.4”
  • Файл1СПредприятие
    • Путь к исполняемому файлу 1С
    • "C:\Program Files (x86)\1cv8\8.3.16.1224\bin\1cv8.exe"
  • КаталогИнформационнойБазы
    • Путь к папке ИБ
    • "D:\1SBases\Демо УТ 11.4"
  • Пользователь
    • Пользователь ИБ
    • “Администратор (ОрловАВ)";
  • Пароль
    • Пароль пользователя ИБ
  • НаименованиеОтчетаОбработки
    • Наименование отчета или обработки как в справочнике Дополнительные отчеты и обработки
    • “Печать договоров по шаблонам”. Может содержать знаки подстановки "*" и "?"
  • ФайлОтчетаОбработки
    • Путь к файлу обработки
    • "D:\ПечатьДоговоровПоШаблонам\20200430 ПечатьДоговоровПоШаблонам_УТ_КА_ERP.epf");
  • ЗапускОбработки
    • Флаг запуска Процедуры ЗапускОбработки (флаг шага 2 теста)
    • Ложь
  • СсылкаНаОбъектНазначения
    • Навигационная ссылка на объект, из формы которого запускается отчет или обработки
    • "e1cib/data/Справочник.ДоговорыКонтрагентов?ref=af8f0015e9b8c48d11e0e504cc1e1aca"
      Как получить ссылку:
  • НаименованиеОбъектаНазначения
    • Заголовок объекта назначения Может содержать знаки подстановки "*" и "?"
    • "Договор продажи - ТД-890 от 01.04.2015"
  • ЗакрыватьПриложениеПослеТеста
    • Флаг  закрытия приложения (флаг шага 3 теста)
    • Ложь
  • ПаузаДляЗакрытииПриложенмя
    • Задает таймаут после закрытия в секундах.
      Не нашел способа определить, что закрытие приложения завершилось. Сделано просто паузой. Без паузы возникают сбои
    • 20
  • ЗаписьЖурналаДействийПользователя
    • Приложение запускается с ключом /UILOGRECORDER
    • Истина
      Получим кнопки в окне приложения:
Инструменты для создания кода Автоматизированного тестирования 1С

Нам понадобятся два инструмента.
Первый инструмент - создание журнала действий пользователя уже есть в платформе.
Второй инструмент - обработку для создания кода надо скачать с ИТС.

  1. Создаем журнал действий пользователя. Для этого открываем конфигуратор клиента тестирования (например УТ 11.4) и запускаем:

    в запущенном приложении увидим кнопки для записи журнала:

    Запишем нужный фрагмент действий и получим XML текст, который надо где-то сохранить.
  2. Теперь нам надо скачать с ИТС обработку UILogToScript для преобразования журнала действий (XML текст) в код программы 1С. К сожалению, обработка UILogToScript отрабатывает не все ситуации. Например диалог открытия файла не поддерживается, обработка выдает ошибку. Но это не критично, потому что можно поискать решение в Интернете или сделать самому по аналогии.
    Надо сказать, что при небольшом опыте работы можно обходиться без обработки UILogToScript.
Поддержка совместимости

Поддержка совместимости - непростая задача.

  •  Пример 1. Рассмотрим форму дополнительной обработки в В УТ 11.2 2.94 (БСП 2.1.2.86
    :
    А вот форма дополнительной обработки в УТ11.4.11.88 (БСП 3.0.3.223):

    Видим, что заголовок нужной нам кнопки другой, А ведь в клиенте тестирования поиск объектов (элементов интерфейса) идет именно по заголовкам. В коде, который приведен в данной статье сделано просто: Если кнопка “Обновить из файла” не найдена, ищется кнопка “Загрузить из файла”
  •  Пример 2. Предупреждения безопасности при загрузке файла внешней обработки. В Платформе 8.3.16 выдается вопрос подтверждения, нажимаешь Продолжить и все.
  • В каких-то версиях платформы был вопрос подтверждения, а затем надо было повторно нажать кнопку “Обновить из файла”.
  •  Пример 3. Закрытие окна тестируемого приложения. Здесь тоже диалог закрытия зависит от версии платформы

Резюме: Универсальный тест для различных версий платформ и конфигураций сделать невозможно, но под свои задачи вполне доступно реализовать.

Диалоги безопасности

При написании кода теста пришлось учитывать вариативность предупреждений безопасности.
Вот описание действий пользователя для загрузки файла обработки в УТ 11.2. Конфигурация использует БСП 2.3

  •  Вариант 1. Файл загружается впервые
    • Нажатие кнопки Загрузить из файла
      • Диалог Выбор файла
        • Окно диалога:: Предупреждение безопасности
          • Нажатие кнопки Да
        • Окно диалога:: Это предупреждение ..., загрузите еще раз.
          • Нажатие кнопки Ок
    • Нажатие кнопки Загрузить из файла (Второй раз!!)
      • Диалог Выбор файла
  •  Вариант 2. Файл загружается повторно
    • Нажатие кнопки Загрузить из файла
      • Диалог Выбор файла
  • Нажатие кнопки Записать и закрыть
    • Окно диалога:: Необходимо перезакрыть окна
      • Нажатие кнопки Ок
Немного итогов

Создание автоматического теста с помощью Автоматизированного тестирования 1С задача трудоемкая, Но результат оправдывает себя.

Тестируемая обработка

Печать договоров по шаблонам

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1001 04.05.20 22:09 Сейчас в теме
Насколько понимаю это аналог конфигурации с итс для решения узкой задачи?
2. pparshin 253 04.05.20 22:41 Сейчас в теме
Какая конфигурация имеется ввиду и какая узкая задача?
3. JohnyDeath 297 04.05.20 23:00 Сейчас в теме
Не нашел ни одного рабочего примера Автоматизированного тестирования 1С.

А вы что именно смотрели? Навскидку имеется 4 продукта (бесплатных и с открытым исходным кодом) по этой тематике.
4. pparshin 253 04.05.20 23:12 Сейчас в теме
(3) Приведите пример, пожалуйста.
5. kwazi 398 04.05.20 23:17 Сейчас в теме
6. pparshin 253 04.05.20 23:31 Сейчас в теме
(5) Это инструменты тестирования.
Понятно, что на тему автоматизированного тестирования есть много чего. Различные фреймворки, еще и с вариантами.
Я упоминал о "рабочем примере", т.е. то, что можно посмотреть и запустить.
Так сказать для понимания основ.
Можно считать, что данная публикация - "Hello, World" в области тестирования.
7. awk 716 05.05.20 21:56 Сейчас в теме
(6)
Для Hello world - как то сложновато, не находите? Как пример на ассемблере:
.model flat, stdcall
.data
message db 'Hello World',13,10,0
.code
.start:
      mov ah, 09h
      mov edx, offset message
      int 21h
end start
Показать


В остальных языках проще...

Hello world в тестировании на 1С - это:

Функция СообщитьПриветствие()
    Сообщить("Привет мир!");
КонецФункции


Функция Тест()
   Попытка
        СообщитьПриветствие();
        Сообщить("Привет мир! - Добро.");
   Исключение
        Сообщить("Привет мир! - Потуга.");
   КонецПопытки
КонецФункции
Показать
8. pparshin 253 05.05.20 22:45 Сейчас в теме
(7)
1.Имелся ввиду именно пример использования инструментария 1С, который называется "Автоматизированное тестирование". Комментарий был в контексте публикации.
2.Также была поставлена задача, чтобы пример был содержательным (полезным). И тут просто и коротко не получилось.
3.Да, еще для содержательности пример должен работать с реальной конфигурацией, например УТ 11.4
9. awk 716 06.05.20 07:57 Сейчас в теме
(8)
1. "Автоматизированное тестирование" - это полуфабрикат. Давать его нельзя, ни программисту, ни консультанту, т.к. результат очевиден. Первый забьет на него, при первой срочно-важной задаче, второй просто покрутит пальцем у виска. Это не означает что инструмент плох, это значит что он не для них.
2. Пока я вижу, что пример только может отталкивать от тестирования. Ибо на 1 кнопку 578 строк кода. Вы серьезно? Реальный сценарий Vanessa-behavior - это 30 строк псевдокода максимум.

Бонус:

В статье ошибочная посылка:

Автоматизированное тестирование (АТ 1С) - инструмент 1С для имитации интерактивных действий пользователя. В АТ 1С всегда участвуют две ИБ: одна база выполняет роль менеджера тестирования, вторая база выполняет роль клиента тестирования.


Используется клиент и менеджер тестирования. То есть ИБ может быть и одна!!!
18. pparshin 253 06.05.20 21:49 Сейчас в теме
(9) awk, спасибо еще раз за бонус. Исправил в тексте статьи.
19. awk 716 06.05.20 21:53 Сейчас в теме
(18) Да, не за что... Я плюс поставил. Статья не "Привет мир". Это не значит что она плохая...
11. JohnyDeath 297 06.05.20 10:18 Сейчас в теме
(4) Если я правильно понял задачу, которая заключается в "открыть и сформировать дополнительный отчет в базе после её обновления", то приведу пример как это делалось бы в Тестере http://test1c.com/ (он мне наиболее мил из всех текущих инструментов тестирования 1С)
1. Качаем и разворачиваем последний dt https://github.com/grumagargler/tester и называем эту базу "Тестер"
2. Запускаем Тестер в режиме менеджера тестирования. Если не сделали этого сразу, то Тестер вам подскажет в виде гиперссылки на начальном экране.
3. Добавляем в Тестер тестируемое приложение, где указывается порт, на котором будет запущен тест-клиент.
4. Запускаем тестируемую базу в режиме тест-клиента (/TESTCLIENT). Или пользуемся встроенными методами-сценариями для запуска нужных баз ("Тестер.Запустить")
5. В тестере создаем новый сценарий, нажимаем "микрофон" и записываем свои действия. Например вот что записалось автоматом микрофончиком, когда я переходил в доп обработки и оттуда открыл доп отчет с именем "Интерактивная ОСВ"
Подключить ();
ЗакрытьВсе();

Меню ( "Панель разделов / Администрирование" );
Меню ( "Меню функций / Настройки программы / Печатные формы, отчеты и обработки" );

Здесь ( "Печатные формы, отчеты и обработки" );
Нажать ( "!ОткрытьДополнительныеОтчетыИОбработки" );

Здесь ( "Дополнительные отчеты и обработки" );
Нажать ( "!ФормаНайти" );

Здесь ( "Найти" );
Установить ( "!Pattern", "Интерактивная ОСВ" );
Нажать ( "!Find" );

Здесь ( "Дополнительные отчеты и обработки" );
Список = Получить ( "!Список" );
Список.Выбрать ();

Здесь ( "Интерактивная ОСВ (Дополнительный отчет)" );
Нажать ( "!ВыполнитьКоманду" );

Здесь ( "Интерактивная ОСВ: * г." );
Нажать ( "!GenerateReport" );
Показать


Собственно всё.
Если есть ссылка на конкретный вариант отчета или обработку, то можно сразу открывать с помощью "Коммандоса" и не бродить по разделам и меню:
Коммандос ( "e1cib/command/Справочник.Номенклатура.Создать" );


Как тестировать сразу несколько приложений описано здесь: http://test1c.com/faqtesting/#_15
Суть такая: для каждого приложения выделяем свой порт в клиенте тестирования и указываем его в Тестере
12. pparshin 253 06.05.20 10:53 Сейчас в теме
(11) Да, Тестер самый дружелюбный из всех подобных продуктов.
У Ванесс порог вхождения значительно выше.
Чтобы пользоваться или каким-либо инструментом или создавать свой инструмент, надо понимать, как он устроен.
Для этого и служит данная публикации.

Что касается "Как тестировать несколько приложений" - рекомендация неверная.
Дело в том, что порт мы можем указать только в ком. строке запуска клиента тестирования.
А в методах объектов автоматизированного тестирования (например у объекта ТестируемоеПриложение) порт не используется.
13. JohnyDeath 297 06.05.20 11:28 Сейчас в теме
(12)
Что касается "Как тестировать несколько приложений" - рекомендация неверная.

Что именно не верно? Там по ссылке даже готовый пример есть запуска и тестирования двух разных конфигураций. Вот оно:
// Порты запуска приложений
портЕРП = 1538;
портБух = 1539;

// Мы хотим, чтобы Тестер фотографировал ошибки каждого приложения
// даже если их окна будут перекрывать друг друга. Маска поиска задается
// регулярным выражением. Поиск производится по заголовку главного окна
скриншотыЕРП = "Демонстрационная база / 1С:ERP.+";
скриншотыБух = "Демонстрационная база / Абдулов.+";

// ********************
// Запуск ERP
// ********************

п = Вызвать ( "Тестер.Запустить.Параметры" );
п.База = "ERP Управление предприятием 2 (демо)";
п.Пользователь = "Администратор (ОрловАВ)";
п.Порт = портЕРП;
п.Параметры = "/LRU"; // Язык интерфейса
п.Ждать = 45;
Вызвать ( "Тестер.Запустить", п );

// ********************
// Запуск Бухгалтерии
// ********************

п.База = "Бухгалтерия предприятия КОРП (демо)";
п.Пользователь = "Абдулов (директор)";
п.Порт = портБух; // Другой порт
Вызвать ( "Тестер.Запустить", п );

// ***********************************
// Работаем с запущенными приложениями
// ***********************************

// Системный параметр, задает маску поиска приложения по его заголовку
ScreenshotsLocator = скриншотыЕРП;

// Закроем окна в ЕРП
Подключить ( , портЕРП );
ЗакрытьВсё ();
Отключить ();

// Закроем окна в Бухгалтерии
ScreenshotsLocator = скриншотыБух;
Подключить ( , портБух );
ЗакрытьВсё ();
Отключить ();

// Откроем в ЕРП справочник номенклатура
ScreenshotsLocator = скриншотыЕрп;
Подключить ( , портЕРП );
Коммандос ( "e1cib/list/Справочник.Номенклатура" );

// Делаем что-то еще
// .....

// Закрываем приложения

Подключить ( , портЕРП );
Отключить ( истина ); // Параметр истина - приложение будет закрыто

Подключить ( , портБух );
Отключить ( истина );
Показать


Тут надо только вставить ваш код, который будет открывать нужные вам обработки. Запуск, подключение и отключение уже сделаны
14. JohnyDeath 297 06.05.20 11:33 Сейчас в теме
(12)
А в методах объектов автоматизированного тестирования (например у объекта ТестируемоеПриложение) порт не используется.


Из встроенной справки:

ТестируемоеПриложение (TestedApplication)
По умолчанию
Синтаксис:
Новый ТестируемоеПриложение(<ИмяКомпьютера>, <Порт>, <ИдентификаторКлиента>)
Параметры:
<ИмяКомпьютера> (необязательный)
Тип: Строка.
Имя или IP-адрес компьютера на котором запущено тестируемое приложение. Например: TEST1 или 165.15.27.11.
Значение по умолчанию: 127.0.0.1.
<Порт> (необязательный)
Тип: Число.
Номер порта TCP/IP, который нужно использовать для передачи данных. По умолчанию используется порт 1538.
15. pparshin 253 06.05.20 11:51 Сейчас в теме
(14) Вот за это спасибо. Признаю ошибку. Искал порт в методах, а он в конструкторе.
У меня не было необходимости держать одновременно 2 открытых приложения.
16. pparshin 253 06.05.20 12:06 Сейчас в теме
(11)
Коммандос
- Это всего-навсего метод ВыполнитьКоманду используется в примере
17. pparshin 253 06.05.20 14:21 Сейчас в теме
(11)
3. Добавляем в Тестер тестируемое приложение, где указывается порт, на котором будет запущен тест-клиент.
4. Запускаем тестируемую базу в режиме тест-клиента (/TESTCLIENT). Или пользуемся встроенными методами-сценариями для запуска нужных баз ("Тестер.Запустить")
5. В тестере создаем новый сценарий, нажимаем "микрофон" и записываем свои действия. Например вот что записалось автоматом микрофончиком, когда я переходил в доп обработки и оттуда открыл доп отчет с именем "Интерактивная ОСВ"


У меня развернут Тестер.
Поясните эти 3 пункта. Какие кнопки нажимать.
10. pparshin 253 06.05.20 09:45 Сейчас в теме
За бонус спасибо.
1.Автоматизированное тестирование 1С можно вполне использовать.
Ничего страшного нет. Много строк кода не написаны, а сгенерированы
2.Различные фреймворки - по определению являются полуфабрикатами.
3.Для использования Ванесс надо изучить-ознакомиться с Геркином, каким-бы простым он не был
4.Любой фреймворк надо развернуть/установить.
20. sapervodichka 3586 08.05.20 09:36 Сейчас в теме
(10) тут можно глянуть групповую проверку доработок, типа открыть, сформировать, записать https://infostart.ru/public/1056811/
21. pparshin 253 08.05.20 10:11 Сейчас в теме
(20) Да, я помню эту публикацию.
У меня была задача разобраться, что такое Автоматизированное тестирование.
Лучший способ - написать код. Поставил доп. условия для кода:
1.Использовать нативные инструменты 1С
2.Код должен быть хоть немного полезным.
В результате получившийся код реально использую для тестирования обработки, которую продвигаю на ИС.
Тест самой обработки в публикацию не включен.
sapervodichka; +1 Ответить
Оставьте свое сообщение

См. также

Печать договоров по шаблонам для УТ 11, КА 2, ERP 2 Промо

Печатные формы документов Документооборот и делопроизводство Документооборот и делопроизводство v8 ERP2 УТ11 КА2 Россия УУ Платные (руб)

Обработка реализует функционал работы с шаблонами договоров, используемый в 1С:Бухгалтерия предприятия 3.0. Предназначена для конфигураций - 1С:Управление торговлей 11.2 (11.2.2.94 и старше), 11.3, 11.4; - 1С:Комплексная автоматизация КА 2; - 1С:ERP Управление предприятием 2;

2900 руб.

19.09.2018    35200    56    25    

Редактор HTML

Инструментарий разработчика Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Инструмент из состава набора "Универсальные инструменты 1С" для быстрой адаптации html страниц для корректного отображения в Поле HTML документа

03.08.2020    630    cprit    3    

Консоль кода и зачем она нужна

Прочие инструменты разработчика v8 Бесплатно (free)

Когда использовать, обзор консолей кода: плюсы - минусы.

27.07.2020    3407    Evg-Lylyk    45    

Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    6252    Evg-Lylyk    0