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

14.03.14

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

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

Автоматизированное тестирование - процесс, представляющий собой имитацию интерактивных действий пользователя и проверку результатов этих действий, официальная информация на сайте 1С: http://v8.1c.ru/overview/Term_000000816.htm

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

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

 

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

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

После получения XML текста с информацией о действиях пользователя на его основании можно создавать обработку управления клиентским приложением, сотрудники фирмы "1С" пошли нам на встречу, и уже реализовали обработку преобразующую XML в программный код (ссылка на обработку с сайта ИТС: http://its.1c.ru/db/metod81#content:5014:1 ).

В работе с обработкой сложностей не должно возникнуть, рекомендую установить флаг для генерирования кода подключения к клиенту и установить значение переключателя "Преобразовывать" в "Текст". Далее копируем XML текст в поле "Журнал действий пользователя", выполняем команду "Преобразовать" и в текстовом поле "Сценарий" появится программный код для запуска тестирования, который в дальнейшем нам понадобится. Ниже рассмотрю основную процедуру выполняющую подключение к клиенту и запуск теста, в моем случае процедура называется "ТестовыйСценарий_06_03_2014".

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

   
//Создание объекта "ТестовоеПриложение" при помощи которого будет выполняться
    //подключение к клиенту тестирования.
    //Параметры:
    //  ИмяКомпьютера - Имя или IP адрес компьютера на отором запущено приложение клиента тестирования.
    //  Порт - Порт по которому будет выполняться подключение к клиенту тестирования. По умолчанию 1538,
    //          если необходимо на одном компьютере запускать несколько клиентов, их нужно разнести по разным портам.
    //  ИдентификаторКлиента - Идентификатор веб-клиента.

   
ТестовоеПриложение = Новый ТестируемоеПриложение();

   
//Далее выполняется попытка подключения к клиенту тестирования.
   
ВремяОкончанияОжидания = ТекущаяДата() + 60;
   
Подключен = Ложь;
   
ОписаниеОшибкиСоединения = "";
    Пока Не
ТекущаяДата() >= ВремяОкончанияОжидания Цикл
        Попытка
           
ТестовоеПриложение.УстановитьСоединение();
           
Подключен = Истина;
            Прервать;
        Исключение
           
ОписаниеОшибкиСоединения = ОписаниеОшибки();
        КонецПопытки;
    КонецЦикла;

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

   
//Если подключение к клиенту тестирования прошло успешно, запускаются управляющие процедуры
    //имитирующие пользовательские действия.
   
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать(ТестовоеПриложение);
   
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать(ТестовоеПриложение);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать(ТестовоеПриложение);
   
ОкноПриложенияНоменклатураТаблицаСписокВыбрать(ТестовоеПриложение);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать(ТестовоеПриложение);

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

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

&НаКлиенте
Процедура ЗапуститьСценарий(Команда)
   
ТестовыйСценарий_06_03_2014();
КонецПроцедуры

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

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

Для выполнения тестового сценария, необходимо как минимум два клиентских приложения, запущенных в режиме менеджера тестирования и в режиме клиента тестирования соответственно. Есть два варианта запуска приложений:

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

2. Автоматически запускать менеджера и клиентов тестирования используя ключи "/TESTMANAGER" и "/TESTCLIENT" соответственно. Ниже приведен пример программного кода 1С для файлового варианта (необходимо изменить версию платформы, путь до информационной базы и если запускается более одного клиента тестирования указать порт).

ЗапуститьСистему("C:\Program Files (x86)\1cv8\\bin\1cv8.exe ENTERPRISE /F /N Администратор /TESTMANAGER");
ЗапуститьСистему("C:\Program Files (x86)\1cv8\\bin\1cv8.exe ENTERPRISE /F /N Администратор /TESTCLIENT [-TPort]");

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

Ниже, привожу пример простого программного кода по работе с двумя клиентами тестирования:

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

   
ТестовоеПриложение1 = Новый ТестируемоеПриложение();//Порт по умолчанию 1538
   
ТестовоеПриложение2 = Новый ТестируемоеПриложение(,1539);

   
ВремяОкончанияОжидания = ТекущаяДата() + 60;
   
Подключен = Ложь;
   
ОписаниеОшибкиСоединения = "";

   
//Подключение к первому клиенту тестирования
   
Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл
        Попытка
           
ТестовоеПриложение1.УстановитьСоединение();
           
Подключен = Истина;
            Прервать;
        Исключение
           
ОписаниеОшибкиСоединения = ОписаниеОшибки();
        КонецПопытки;
    КонецЦикла;

   
ВремяОкончанияОжидания = ТекущаяДата() + 60;

   
//Подключение ко второму клиенту тестирования
   
Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл
        Попытка
           
ТестовоеПриложение2.УстановитьСоединение();
           
Подключен = Истина;
            Прервать;
        Исключение
           
ОписаниеОшибкиСоединения = ОписаниеОшибки();
        КонецПопытки;
    КонецЦикла;

    Если Не
Подключен Тогда
       
ТестовоеПриложение1 = Неопределено;
       
ТестовоеПриложение2 = Неопределено;
       
Сообщить("Не смогли установить соединение! " + Символы.ПС + ОписаниеОшибкиСоединения);
        Возврат;
    КонецЕсли;

   
//Для каждого клиента скопируем процедуры тестирования.
   
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать1(ТестовоеПриложение1);
   
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать2(ТестовоеПриложение2);
   
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать1(ТестовоеПриложение1);
   
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать2(ТестовоеПриложение2);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать1(ТестовоеПриложение1);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать2(ТестовоеПриложение2);
   
ОкноПриложенияНоменклатураТаблицаСписокВыбрать1(ТестовоеПриложение1);
   
ОкноПриложенияНоменклатураТаблицаСписокВыбрать2(ТестовоеПриложение2);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать1(ТестовоеПриложение1);
   
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать2(ТестовоеПриложение2);

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

В результате выполнения данной процедуры менеджер тестирования подключается ко всем инициализированным клиентам тестирования и параллельно запускает на них выполнение теста.

Я вижу следующие варианты использования данного механизма:

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

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

&НаКлиенте
Перем ТестовоеПриложение;

&НаКлиенте
Процедура Запустить(Команда)

   
ТестовоеПриложение = Новый ТестируемоеПриложение();

   
ВремяОкончанияОжидания = ТекущаяДата() + 60;
   
Подключен = Ложь;
   
ОписаниеОшибкиСоединения = "";

    Пока Не
ТекущаяДата() >= ВремяОкончанияОжидания Цикл
        Попытка
           
ТестовоеПриложение.УстановитьСоединение();
           
Подключен = Истина;
            Прервать;
        Исключение
           
ОписаниеОшибкиСоединения = ОписаниеОшибки();
        КонецПопытки;
    КонецЦикла;

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

   
ТестовоеПриложение.НачатьЗаписьЖурналаДействийПользователя();

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

&НаКлиенте
Процедура Остановить(Команда)
   
Сообщить(ТестовоеПриложение.ЗавершитьЗаписьЖурналаДействийПользователя());
КонецПроцедуры

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

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

3. Для разрешения проблем ожиданий на блокировках или дедлоков. Можно создать несколько тестов, которые явно приведут к проблеме производительности для дальнейшего расследования.

4. Проведение нагрузочного тестирования. Фирма 1С позиционирует функционал как механизм сценарного тестирования, но по большому счету не запрещает запускать большое количество клиентов тестирования. В обработчики можно вставить генераторы случайных чисел для разнородности вводимой информации. На момент написания статьи, мне не известны примеры подобного нагрузочного тестирования, при получении новой информации я обновлю публикацию.

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

Все комментарии и дополнения по тексту статьи я с радостью жду в комментариях!

 

 

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

См. также

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

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

2160 руб.

05.08.2024    1277    12    1    

7

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

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

2400 руб.

04.07.2022    8368    38    1    

29

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

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

1800 руб.

20.01.2022    7783    19    0    

13

Облачные сервисы, хостинг Linux Тестирование QA Сервера Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Завершающая публикация цикла "В облако на работу:.. Рецепты от Капитана", в ходе которых был собран полнофункциональный рабочий контур 1С в сети на отечественной Ред ОС. С веб-серверами, доменной авторизацией, архивированием, отказоустойчивостью и прочая, прочая... В этой статье мы определяемся с быстродействием системы, проводим нагрузочное тестирование и отпускаем ее в свободное плавание (зачеркнуто) выпускаем ее в продуктовый контур, где, конечно же, придется отлавливать ошибки, мониторить состояние и т.п.

31.10.2024    1308    capitan    0    

0

Журнал регистрации Тестирование QA Программист Бесплатно (free)

Поговорим про логирование в приложениях на базе 1С, рассмотрим проблемы, которые возникают при сборе информации из этих систем, и обсудим практический опыт применения внутренних и внешних инструментов для анализа логов.

21.10.2024    2780    leemuar    8    

22

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

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

30.08.2024    1292    Scorpion4eg    6    

7

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

Иногда возникают ситуации, когда надо развернуть тестовую базу клиента / свою на серверах Windows или Linux. Тестовые базы могут понадобиться в разных ситуациях: у клиента ошибка, на нашей базе она не воспроизводится, реализуем новый функционал и хотелось бы протестировать на Linux и т.д. А теперь представим, что это все на потоке. Что тестовых баз 1С не одна, а 20-30. И получаем проблему, что непонятно, занята она сейчас кем-то или нет. Предлагаю вариант решения этой проблемы.

28.06.2024    1511    Diversus    12    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. speshuric 1338 06.03.14 16:51 Сейчас в теме
Шаг далеко вперёд по сравнению со сценарным тестированием из ЦУПа
2. M.Shalimov 202 06.03.14 17:11 Сейчас в теме
(1) speshuric, по информации с "Экспертского" тренинга проходившего на прошлой неделе, в скором времени ЗАО "1С" выпустит обновленное сценарное тестирование входящее в ЦУП предоставляющее больше возможностей. Не исключено, что данный механизм будет в нем задействован.
3. speshuric 1338 06.03.14 17:46 Сейчас в теме
(2) Спасибо, я в курсе. 1С в общем-то сразу позиционировала этот механизм, как замену костылям из сценарного тестирования. И я даже с полгода назад смотрел, как там и что реализовано, но на тот момент была куча нереализованных моментов, если я правильно помню. Вам спасибо за краткий how-to с которого можно начать большинству разработчиков.
POWone; cleaner_it; +2 Ответить
4. StaticUnsafe 07.03.14 10:30 Сейчас в теме
Радует что платформа развивается.
6. M.Shalimov 202 07.03.14 12:55 Сейчас в теме
(5) headMade, КИП - отдельное решение, описанный в статье механизм - механизм платформы 8.3. Кроме платформы и тестируемой базы больше ничего не нужно.
7. pumbaE 07.03.14 13:17 Сейчас в теме
А интерпретация результатов тестирования где?
Информация о том что из 230 тестов упало 2 теста, о том что согласно последнему тестированию у нас появилось две регрессии, о том что программист Иванов поместил в хранилище такое, что поломало другие тесты...

Насколько вижу в users, появилось "1С: Сценарное тестирование 8 3.0.1.35 28.02.14", кто уже щупал подскажите, как CI можно применять? Как происходить связь с хранилищем, настройки полного запуска тестов или минимального набора поддерживаются? Запуск без модификации конфигурации возможнет, экспорт результатов тестов в junit?


user1721775; POWone; CratosX; kuzyara; Tkal61; Bukaska; Alever; KAPACEB.AA; JohnyDeath; awa; lustin; artbear; marsohod; speshuric; +14 Ответить
8. M.Shalimov 202 07.03.14 14:17 Сейчас в теме
(7) pumbaE, В данной статье я описал только процесс настройки тестирования и предложил варианты его использования. Интерпретация результатов (как и новое сценарное тестирование) выходит за рамки данной статьи, но в ближайшее время я буду продолжать решать задачи тестирования в которых пощупаю на практике новое сценарное тестирование и напишу отдельную статью, если конечно меня никто не опередит:)
11. pumbaE 07.03.14 15:35 Сейчас в теме
(8)
пощупаю на практике новое сценарное тестирование и напишу отдельную статью
буду только рад увидеть обзор "нового" сценарного тестирования.

Может тогда обратите внимание:
1. Как там производиться тестирование web интерфейса интересно.
2. Насколько связаны сценарное тестирование с разработкой/хранилищем и другими различными системами баг-трекинга(возможно ли автоматом запускать сценарное тестирование, при каждом помещении в хранилище, возможно ли информировать разработчиков о провалившихся тестах, с diff изменений, которые привели к поломке тестовых сценариев).
3. Связано ли с "Автоматизированная проверка конфигураций", есть ли единая точка, где можно увидеть пульс проекта (результаты тестов, результаты проверки конфигурации, результаты нагрузочного тестирования, code-review исходного кода конфигурации).

p.s.: имхо, 1С надо растить культуру тестирования(автоматического).

Прикрепленные файлы:
alest; gradi; vlad.frost; wunderland; artbear; +5 Ответить
13. M.Shalimov 202 07.03.14 16:04 Сейчас в теме
14. artbear 1563 07.03.14 17:00 Сейчас в теме
(11) На все вопросы ИМХО ответ один - нету ничего подобного :) :(
15. M.Shalimov 202 07.03.14 18:15 Сейчас в теме
(14) artbear, по работе с хранилищем, вполне вероятно, ничего не добавили (все таки это платформа, а не конфигурация) а вот в целом механизмы тестирования будет интересно рассмотреть.
27. lustin 02.04.14 03:00 Сейчас в теме
(11) pumbaE, докладываю предварительно и коротко перед сном ;-)

1. не найдено, web клиент не держит открыто порта для проброса вызовов тестов.
2. все через специализированную конфигурацию написанную на самом 1С. Наблюдаются попытки состыковать это с СППР.
3. code-review в специализированной конфигурации не нашел - даже такой сущности или ее аналога. Не говоря уже об остальных.

тестирование проводил на чужой площадке с временным доступом по TeamViewer - у людей у кого ЦУП куплен.

Так что результаты не окончательные и финального понимания не возникло. Особенно не удалось понять как методически закладывается любимая тема Артура при создании и затем очистке тестовых данных.
9. artbear 1563 07.03.14 15:05 Сейчас в теме
(0)
но на момент написания статьи я рекомендую использовать его в ознакомительных целях, т.к. механизм довольно новый и возможно, еще не до конца отлажен разработчиками.

Механизм уже не очень новый и для целей тестирования вполне можно использовать.
Но к нему все равно есть вопросы. Не все удобно и просто :(
В открытом доступе нет примеров подобных сценариев для типовых конфигураций (я вообще не слышал о таких тестах).
В конце 2012 или начале 2013 г. общался на партнерской конференции 1С и разработчики сценарного тестирования в кулуарах сообщили мне, что им неизвестно о подобных автоматических тестах для типовых конфигураций 1С.
Для тестового фреймворка https://github.com/xUnitFor1C/xUnitFor1C уже есть готовые шаблоны для написания и автоматического выполнения сценарных тестов 8.3 и получения результатов тестирования.
Этот фреймворк уже используется в т.н. "ночных" сборках и прогоне автоматических тестов.
Например, у нашей системы на базе УТ 11 у нас свыше 500 автоматических юнит-тестов и сценарных тестов. автосборка и прогон тестов выполняется несколько раз в сутки.
Flashill; Danil.Potapov; vlad.frost; Alever; JohnyDeath; ivanov660; speshuric; M.Shalimov; lustin; +9 Ответить
10. lustin 07.03.14 15:28 Сейчас в теме
(9) artbear, Уже 500 ? Молодцы мужики. Я тут всем говорю что около 200.
12. pumbaE 07.03.14 15:46 Сейчас в теме
(10) lustin, ну так не за один же день накапливаются у меня в среднем в месяц плюс 20-50 тестов добавляется, ну а сколько переписывается уже устал считать :)
16. KillHunter 8 09.03.14 19:44 Сейчас в теме
Я так понимаю все изменения связаны с использованием веб-интерфейса, хотя по большому счету он для основной массы просто навсего не нужен!
17. M.Shalimov 202 10.03.14 23:49 Сейчас в теме
(16) KillHunter, Не веб интерфейса а управляемого приложения ( в т.ч. веб морда). УУ нужно всем, многие типовые уже управляемы и в скором времени управляемыми станут все. Переход с УПП на ERP20 только вопрос времени, вспомните зарю 7.7.
20. Сисой 88 13.03.14 14:24 Сейчас в теме
(17) Вы за всех так уверенно не говорите.
Большинство крупных контор, поверивших в 8-ку и вложивших миллионы долларов в КИС на ее базе, кроют 1С матом за полную несовместимость новых и старых типовых.
Вот объясните мне, почему компания должна потратить еще полмиллиона долларов, если НИКАКИХ преимуществ при этом она не получит (все задачи УЖЕ решены), а багов и глюков будет немеряно.
Используемые продукты: БП, ЗУП, УПП, Консолидация.
При этом не переходить на УФ нельзя - регламентированный учет требует обновлений.

Ах да, можно еще даунгрейд на 7.7 сделать. Лицензии остались.
21. M.Shalimov 202 13.03.14 18:25 Сейчас в теме
(20) Сисой, Я не утверждаю, что нужно срочно всем выкладывать миллионы и переходить на новую систему. Есть ряд организаций, которые работают на 7.7 и их все устраивает. Но, прогресс не стоит на месте и информационные системы развиваются, так же развивается и бизнес у которого появляются новые требования к ИС и зачастую эти требования уже реализованы в новых версиях типовых.
Как Вы думаете 1С выходит на рынок среднего и крупного бизнеса? Одного желания тут мало, бизнес развивается и будучи небольшим предприятием автоматизировавшим свой учет на 1С бизнес вырастает и хочет продолжать использовать привычный ему софт, отсюда и основные требования к производительности и параллельности.
В фирме 1С тоже не дураки работают, которые ради нескольких сотен тысяч с клиента заставят всех переходить на ERP 2.0, все понимают что множество организаций работают под УПП и не могут быстро перейти на новую систему (а это в любом случае не быстро). Нуралиев не дурак и снимать с поддержки УПП вряд ли будут.
22. pumbaE 13.03.14 18:38 Сейчас в теме
(21) ну вот не верю, я что имея доступ к исходникам "очень" трудно было сделать тестирование и для толстых форм, а так скорей политическое решение тестирование только для управляемых.
23. M.Shalimov 202 13.03.14 22:22 Сейчас в теме
(22) pumbaE, Этот вопрос лучше задать в фирму "1С", рассуждения о том что можно было бы им сделать выходят за рамки данной статьи.
24. speshuric 1338 19.03.14 10:59 Сейчас в теме
(22) А с другой стороны, да, у них исходники есть, но отношение к тестированию мягко говоря "не TDDшное". Я всё время ворчу на 1С-ную арифметику, потому что она не имеет заявленных четких границ, из-за этого сложно предсказать результат зачастую. Причем не только для прикладного программиста, но и для разработчика платформы. Почему это плохо? Нет четкой границы, нет и не будет граничных тестов. Вот, например, ЧислоПрописью:
Сообщить(ЧислоПрописью(-1000000000000000, ""));
выводится "-Одна тысяча 00". а для
Сообщить(ЧислоПрописью(-1000000000001000, ""));
выводится "-Одна тысяча одна тысяча 00". Причем для больших положительных чисел проверку не забыли - исключение вываливается. На самом деле аналогичная ситуация почти везде в платформе - и работа с большими (2+ ГБ) объектами, и в системных полях ввода, да много где. Ошибки такие, конечно, исправляются (по мере нахождения), но системного "прочесывания" даже базовых объектов в общем-то нет. Причем, даже баг-репорты даже прекрасно оформленные в 1С слать через v8 дело достаточно неблагодарное (а вот через партнерский доступ проще) - фиг пробьёшь первую линию.

Так что пусть хотя бы в управляемых делают. Авось постепенно пройдут per aspera ad astra.
TheOldGuard; vlad.frost; CratosX; +3 Ответить
18. pumbaE 11.03.14 15:00 Сейчас в теме
( в т.ч. веб морда)
хм, не видел возможности реального тестирования веб-морды... Так что бы с firefox или chromium запустить, разве что selenium, но пока правил конвертации еще никто не делал http://www.screencast.com/t/RMoppLTOMz
19. M.Shalimov 202 11.03.14 15:48 Сейчас в теме
(18) pumbaE, Не использовал, но в описанном методе есть возможность запуска теста через веб.
25. worker1c 115 19.03.14 14:56 Сейчас в теме
Менеджер подключается к клиенту, при запуске сценария, сгенерированного обработкой из 1С ошибка:
{Форма.Форма.Форма(81)}: Значение не является значением объектного типа (Нажать)
	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаКлиенты.Нажать();

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

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

Платформа 8.3.4.408. Кто-нубудь сталкивался? Проверено на разных серверах, базах.
26. M.Shalimov 202 19.03.14 15:12 Сейчас в теме
(25) worker1c, Судя по коду система не находит кнопки "Клиенты" в подсистеме "Продажи".

при создании сценария нужно сделать идеальную ситуацию, когда у Вас не открываются доп окна, например с информацией, и записывать сценарий сразу после запуска системы с рабочего стола.
Попробуйте переформировать код обработки.
28. pumbaE 24.04.14 20:05 Сейчас в теме
Подкорректировал обработку UILogToScript.epf , с возможностью сразу формировать внешнюю обработку, имхо удобней получилось, чему 1С, не надо копировать, вставить и т.д.

M.Shalimov; +1 Ответить
29. M.Shalimov 202 25.04.14 11:09 Сейчас в теме
(28) pumbaE, Можете выложить ее, а я у себя в публикации добавлю ссылку.
З.ы. в 1С планировали это сделать:)
30. pumbaE 25.04.14 15:15 Сейчас в теме
(29) там v8unpack используется. Думаете 1С может пользоваться не "православным" инструментом?
https://github.com/xUnitFor1C/xUnitFor1C/tree/feature/104-UILogToScriptUnitTest/%D0%93%D0%A3%D0%98_%D0%A2%D0%B5%D1%81%­D1%82%D1%8B_8_3
TheOldGuard; stas_ganiev; M.Shalimov; +3 Ответить
31. M.Shalimov 202 25.04.14 15:46 Сейчас в теме
(30) pumbaE, Я просто доношу информацию из уст представителей фирмы "1С":)
47. TheOldGuard 12 18.02.22 14:28 Сейчас в теме
(30) Ого, какая удобная штукенция)
32. abryazgin 2 25.09.15 11:09 Сейчас в теме
Я так понимаю, что методом автоматизированного тестирования мы не сможем выполнить нагрузочное тестирование при параллельной работе нескольких клиентов.

У нас один менеджер управляет действиями на нескольких клиентах, но делает это последовательно.

Могу ли я как-то запустить тест, чтобы последовательность процедур выполнялась одновременно на клиенте 1 и клиенте 2?
Через фоновые задания не параллелится, так как это клиентские действия...
33. pumbaE 25.09.15 12:41 Сейчас в теме
(32) abryazgin, это не предназначено для нагрузочного тестирования, для нагрузочного пользуйтесь тест центром.
34. abryazgin 2 25.09.15 21:58 Сейчас в теме
(33) pumbaE, вы имеете ввиду это http://v8.1c.ru/expert/tc/tc_overview.htm?

Кстати. В процессе экспериментов обнаружено, что записываются не все действия пользователя.
Например [1] переход по произвольной ссылке (Ctrl+F11) сохраняет только открытие окна поиска и нажатие кнопки поиск, ввод текста или его вставка из буфера не фиксируется.
Например [2] нажатие на кнопку добавить договор в поле выбора договора в документе тоже не фиксируется при записи сценария.
Смотрел на платформе 8.3.5.1460 (что было под рукой).
35. M.Shalimov 202 26.09.15 09:39 Сейчас в теме
(34) abryazgin, С тест-центром все верно. Именно его нужно использовать для нагрузочного тестирования. Рассмотренный вариант подходит для функционального.
По косякам, лучше попробуйте платформу 8.3.6 свежего релиза, рассматриваемая Вами уже довольно устарела.
36. Boson 29.01.16 12:24 Сейчас в теме
Добрый день, может кто-нибудь знает возможно ли настроить Конфу Сценарного Тестирования на работу с тонким клиентом через web соединение по протоколу HTTP?
37. tormozit 7229 07.07.16 17:10 Сейчас в теме
Хочу новую статью или обновления этой.
TheOldGuard; user1647001; Gisborn; add063; dj_serega; +5 Ответить
38. gavril 44 21.11.16 15:07 Сейчас в теме
Возможно ли запустить в принципе с ключем /TESTCLIENT и в толстом клиенте?.
Куда будет писать журнал?

Так ничего не получилось из вышеперечисленного.
39. st4rk 12.12.16 11:16 Сейчас в теме
Для обычных форм есть решение?
40. DimaP 64 23.01.17 15:45 Сейчас в теме
Кто-нибудь на практике использует автоматизированное тестирование от 1С?
Какие результаты?
С какими проблемами столкнулись?
41. Cyberhawk 135 28.09.18 13:04 Сейчас в теме
Внешняя обработка UILogToScript, что лежит на ИТС, не умеет преобразовывать интерактивные действия по выбору значений из выпадающих меню (метод управляемой формы "ПоказатьВыборИзМеню").

В типовых конфигурациях, например, это выпадающее меню можно увидеть в группе "Контактная информация" форм объектов (например, при нажатии кнопки "Добавить" предлагается выбрать тип добавляемой контактной информации - "Электронная почта", "Телефон" и т.д.).
42. Cyberhawk 135 28.09.18 13:53 Сейчас в теме
(41)
Текст ошибки выглядит следующим образом: {ВнешняяОбработка.UILogToScript.МодульОбъекта(511)}: Неопознанный узел executeChoiceFromMenu:
Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value;


Для ее исправления нужно в методе "ConvertCommand" в конструкцию "Если" добавить еще одну ветку:

	ElsIf Reader.Name = "executeChoiceFromMenu" Then
		Presentation = "";
		While Reader.ReadAttribute() Do
			If Reader.Name = "presentation" Then
				Presentation = Reader.Value;
			Else
				Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value;
			EndIf;
		EndDo;
		AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ExecuteChoiceFromMenu(""", ".ВыполнитьВыборИзМеню(""") + DoubleQuotationMarks(Presentation) + """);", True);
		LastProcessedCommand = ? (ScriptVariant = "en", "ExecuteChoiceFromMenu", "ВыполнитьВыборИзМеню");
		Reader.Read();
Показать
Casey1984; Lych1; +2 Ответить
43. Cyberhawk 135 28.09.18 15:12 Сейчас в теме
Обнаружена еще одна ошибка в обработке UILogToScript, на этот раз в создаваемом этой обработкой коде сценария на встроенном языке 1С.

Ошибка имеет вид "Переменная не определена (ОкноПриложения...CommandInterface)" и проявляется, если:
1) в сценарии присутствует взаимодействие пользователя с панелью навигации формы
и
2) такое взаимодействие не является самым первым действием в этой форме

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

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

Вариант, не требующий изменения сценария, заключается в доработке обработки UILogToScript и будет приведен ниже.
44. Cyberhawk 135 28.09.18 15:30 Сейчас в теме
(43)
В методе "ConvertWindowCommandInterface" достаточно вызов метода "AddLine" вынести из условия, в котором этот вызов присутствует. Например, расположить сразу после условия (хотя можно и до).

Негативным моментом здесь будет являться то, что если в сценарии присутствует несколько интерактивных взаимодействий пользователя с панелью навигации (в рамках одной и той же формы), то в сформированном обработкой UILogToScript программном коде будет повторяться инициализация переменной, хранящей командный интерфейс формы (будут повторяться вызовы метода "ПолучитьКомандныйИнтерфейс" перед каждый взаимодействием пользователя с панелью навигации формы).
Кажется, что "защититься" от такого избыточного поведения не так просто, как может поначалу показаться: например, если реализовывать кэш, то стоит следить не только за добавлением в него признака, что командный интерфейс формы проинициализирован, но и учитывать, что одна и та же форма может открываться многократно. Поэтому в этом направлении доработку обработки осуществлять не стал.
45. artbear 1563 30.09.18 21:21 Сейчас в теме
(44) Спасибо за выполненный анализ
46. improg 709 19.03.20 13:12 Сейчас в теме
(0) Очень похоже на нагрузочное тестирование из "Настольной книги 1С:Эксперта по технологическим вопросам" Е. Филиппова. В чем изюминка этой статьи от написанного в книге?
48. пользователь 24.06.22 12:58
Сообщение было скрыто модератором.
...
49. RustIG 1747 29.12.23 09:50 Сейчас в теме
50. arman1997 23 09.10.24 14:04 Сейчас в теме
Здравствуйте! Вопрос появился по поводу запуска нескольких клиентов тестирования. Получается методы выполняются синхронно? Тоесть пока не откроется форма в одном клиенте работа остальных будет остановленна?
Оставьте свое сообщение