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

0. pparshin 260 02.05.20 11:42 Сейчас в теме
Используем Автоматизированное тестирование на практике. Простой код для обновления и запуска внешних отчетов и обработок в нескольких ИБ. Создаем рабочее решение с нуля.

Перейти к публикации

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

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

Бонус:

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

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


Используется клиент и менеджер тестирования. То есть ИБ может быть и одна!!!
18. pparshin 260 06.05.20 21:49 Сейчас в теме
(9) awk, спасибо еще раз за бонус. Исправил в тексте статьи.
19. awk 718 06.05.20 21:53 Сейчас в теме
(18) Да, не за что... Я плюс поставил. Статья не "Привет мир". Это не значит что она плохая...
11. JohnyDeath 298 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 260 06.05.20 10:53 Сейчас в теме
(11) Да, Тестер самый дружелюбный из всех подобных продуктов.
У Ванесс порог вхождения значительно выше.
Чтобы пользоваться или каким-либо инструментом или создавать свой инструмент, надо понимать, как он устроен.
Для этого и служит данная публикации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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


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