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

Публикация № 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 977 04.05.20 22:09 Сейчас в теме
Насколько понимаю это аналог конфигурации с итс для решения узкой задачи?
2. pparshin 245 04.05.20 22:41 Сейчас в теме
Какая конфигурация имеется ввиду и какая узкая задача?
3. JohnyDeath 297 04.05.20 23:00 Сейчас в теме
Не нашел ни одного рабочего примера Автоматизированного тестирования 1С.

А вы что именно смотрели? Навскидку имеется 4 продукта (бесплатных и с открытым исходным кодом) по этой тематике.
4. pparshin 245 04.05.20 23:12 Сейчас в теме
(3) Приведите пример, пожалуйста.
5. kwazi 394 04.05.20 23:17 Сейчас в теме
6. pparshin 245 04.05.20 23:31 Сейчас в теме
(5) Это инструменты тестирования.
Понятно, что на тему автоматизированного тестирования есть много чего. Различные фреймворки, еще и с вариантами.
Я упоминал о "рабочем примере", т.е. то, что можно посмотреть и запустить.
Так сказать для понимания основ.
Можно считать, что данная публикация - "Hello, World" в области тестирования.
7. awk 714 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 245 05.05.20 22:45 Сейчас в теме
(7)
1.Имелся ввиду именно пример использования инструментария 1С, который называется "Автоматизированное тестирование". Комментарий был в контексте публикации.
2.Также была поставлена задача, чтобы пример был содержательным (полезным). И тут просто и коротко не получилось.
3.Да, еще для содержательности пример должен работать с реальной конфигурацией, например УТ 11.4
9. awk 714 06.05.20 07:57 Сейчас в теме
(8)
1. "Автоматизированное тестирование" - это полуфабрикат. Давать его нельзя, ни программисту, ни консультанту, т.к. результат очевиден. Первый забьет на него, при первой срочно-важной задаче, второй просто покрутит пальцем у виска. Это не означает что инструмент плох, это значит что он не для них.
2. Пока я вижу, что пример только может отталкивать от тестирования. Ибо на 1 кнопку 578 строк кода. Вы серьезно? Реальный сценарий Vanessa-behavior - это 30 строк псевдокода максимум.

Бонус:

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

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


Используется клиент и менеджер тестирования. То есть ИБ может быть и одна!!!
18. pparshin 245 06.05.20 21:49 Сейчас в теме
(9) awk, спасибо еще раз за бонус. Исправил в тексте статьи.
19. awk 714 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 245 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 245 06.05.20 11:51 Сейчас в теме
(14) Вот за это спасибо. Признаю ошибку. Искал порт в методах, а он в конструкторе.
У меня не было необходимости держать одновременно 2 открытых приложения.
16. pparshin 245 06.05.20 12:06 Сейчас в теме
(11)
Коммандос
- Это всего-навсего метод ВыполнитьКоманду используется в примере
17. pparshin 245 06.05.20 14:21 Сейчас в теме
(11)
3. Добавляем в Тестер тестируемое приложение, где указывается порт, на котором будет запущен тест-клиент.
4. Запускаем тестируемую базу в режиме тест-клиента (/TESTCLIENT). Или пользуемся встроенными методами-сценариями для запуска нужных баз ("Тестер.Запустить")
5. В тестере создаем новый сценарий, нажимаем "микрофон" и записываем свои действия. Например вот что записалось автоматом микрофончиком, когда я переходил в доп обработки и оттуда открыл доп отчет с именем "Интерактивная ОСВ"


У меня развернут Тестер.
Поясните эти 3 пункта. Какие кнопки нажимать.
10. pparshin 245 06.05.20 09:45 Сейчас в теме
За бонус спасибо.
1.Автоматизированное тестирование 1С можно вполне использовать.
Ничего страшного нет. Много строк кода не написаны, а сгенерированы
2.Различные фреймворки - по определению являются полуфабрикатами.
3.Для использования Ванесс надо изучить-ознакомиться с Геркином, каким-бы простым он не был
4.Любой фреймворк надо развернуть/установить.
20. sapervodichka 3878 08.05.20 09:36 Сейчас в теме
(10) тут можно глянуть групповую проверку доработок, типа открыть, сформировать, записать https://infostart.ru/public/1056811/
21. pparshin 245 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    33092    48    22    

Файл тестов для xUnitFor1C: тестирование проведения документов

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

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    910    0    q_i    7    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    5353    19    user1404129    18    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

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

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

14.05.2020    3847    43    CyberCerber    29    

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

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

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

06.04.2020    5558    0    Evg-Lylyk    0    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    21012    295    cprit    94