Автоматизированное тестирование в «1С:Предприятие 8.3» (бесплатная статья по Программированию в 1С)

О чем эта статья

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

  • Что представляет из себя автоматизированное тестирование в платформе?
  • Как и когда им пользоваться?
  • Что и где нужно настроить, чтобы его запустить?
  • Как написать сценарий автоматизированного тестирования?

Применимость

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

Автоматизированное тестирование в «1С:Предприятие 8.3»

В платформе «1С:Предприятие 8.3» появился новый механизм, предназначенный для имитации интерактивных действий пользователей системы – автоматизированное тестирование.

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

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

Сценарий тестирования – это код на встроенном языке, в котором описывается последовательность выполняемых интерактивных действий.

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

Менеджер тестирования может быть толстым или тонким клиентом. Клиент тестирования – толстым, тонким клиентом или веб-клиентом.

Менеджер тестирования может быть подключен к нескольким клиентам тестирования, а клиент тестирования может быть подключен только к одному менеджеру.

Для управления клиентом менеджер устанавливает с ним TCP-соединение. Важно, что для проведения автоматизированного тестирования не требуется вносить изменений в структуру конфигурации.

По сути, клиент и менеджер тестирования – это конфигурации, запущенные с определенными параметрами командной строки, причем менеджер осуществляет управление клиентами, “заставляя” окна и элементы управления вести себя таким образом, как будто с ними взаимодействует пользователь.

Автоматизированное тестирование имеет свои ограничения. Так, например, не поддерживается работа с обычным интерфейсом, а только с управляемым.

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

Запуск менеджера может быть выполнен из командной строки с ключом /TESTMANAGER:

“c:\Program Files (x86)\1cv8\8.3.4.437\bin\1cv8c.exe” ENTERPRISE /F “X:\test” /N Администратор /TESTMANAGER

Также менеджер тестирования можно запустить из конфигуратора.

Для этого через меню Сервис – Параметры открываем диалог “Параметры”, в котором на закладке Запуск 1С:Предприятия – Дополнительные отмечаем пункт “Запускать как менеджер тестирования”:

Запуск менеджера тестирования из конфигуратора

Еще один способ запуска менеджера тестирования – из встроенного языка, при помощи метода ЗапуститьСистему(), в котором следует указать командную строку:

ЗапуститьСистему(“c:\Program Files (x86)\1cv8\8.3.4.437\bin\1cv8c.exe” ENTERPRISE /F X:\test /N Администратор /TESTMANAGER”)

Клиента тестирования также можно запустить из командной строки. Для этого следует воспользоваться ключом параметра командной строки /TESTCLIENT.

При помощи параметра TPort указывается номер порта, через который будет вестись взаимодействие менеджера и клиента тестирования. Если этот параметр не указан в командной строке, то будет использован порт 1538.

“c:\Program Files (x86)\1cv8\8.3.4.437\bin\1cv8c.exe” ENTERPRISE /F “X:\Platform8Demo” /N Администратор /TESTCLIENT -TPort 1539

Клиент тестирования можно запустить из конфигуратора. Для этого через меню Сервис – Параметры открываем диалог “Параметры”, в котором на закладке Запуск 1С:Предприятия – Дополнительные отмечаем пункт “Запускать как клиент тестирования”. При этом надо будет указать номер используемого порта.

Запуск клиента тестирования

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

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

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

  1. Разработать сценарий тестирования – написать внешнюю или встроенную в конфигурацию обработку, в которой будут последовательно описаны выполняемые шаги.
  2. Запустить менеджер тестирования.
  3. Запустить клиент тестирования (один или несколько).
  4. В менеджере тестирования запустить на исполнение созданную обработку, убедиться в выполнении запрограммированных действий на клиенте.

Тестируемое приложение описывается набором объектов встроенного языка, которые используются для написания сценария:

  • ТестируемоеПриложение;
  • ТестируемоеОкноКлиентскогоПриложения;
  • ТестируемыйКомандныйИнтерфейсОкна;
  • ТестируемаяГруппаКомандногоИнтерфейса;
  • ТестируемаяКнопкаКомандногоИнтерфейса;
  • ТестируемаяФорма;
  • ТестируемоеПолеФормы;
  • ТестируемаяГруппаФормы;
  • ТестируемаяКнопкаФормы;
  • ТестируемаяТаблицаФормы;
  • ТестируемаяДекорацияФормы.

В качестве тестируемой конфигурации будем использовать демонстрационную конфигурацию “Управляемое приложение”.

Создадим внешнюю обработку, добавим новую форму, в которой определим обработчик для новой команды “ЗапуститьТестирование”.

Внешняя обработка - запустить тестирование

Для увеличения нажмите на изображение.

В тесте выполняем следующие действия: создаем новый элемент справочника “Склады”, в поле Наименование вводим строку “Склад тест”, затем нажимаем кнопку “Записать и закрыть”.

Программный код этого теста будет выглядеть следующим образом:

&НаКлиенте
Процедура ЗапуститьТестирование(Команда)
// Подключимся к тестируемому приложению
ТестируемоеПриложение = Новый ТестируемоеПриложение(“localhost”);
// Пытаемся подключаться не более одной минуты
ВремяОкончанияОжидания = ТекущаяДата() + 60;
Подключен = Ложь;
Пока Не ТекущаяДата() >= ВремяОкончанияОжидания Цикл

Попытка
ТестируемоеПриложение.УстановитьСоединение();
Подключен = Истина;
Прервать;
Исключение
КонецПопытки;

КонецЦикла;

Если Не Подключен Тогда
// Завершаем работу теста
ТестируемоеПриложение = Неопределено;
Сообщить(“Не удалось установить соединение!”);
Возврат;
КонецЕсли;
// Найдем главное окно
ГлавноеОкноТестируемого
=
ТестируемоеПриложение.НайтиОбъект(Тип(“ТестируемоеОкноКлиентскогоПриложения”));
ГлавноеОкноТестируемого.Активизировать();
// Выполним команду создания элемента справочника товаров
ГлавноеОкноТестируемого.ВыполнитьКоманду(“e1cib/command/Справочник.Склады.Создать”);
ТестируемоеПриложение.ОжидатьОтображениеОбъекта(Тип(“ТестируемаяФорма”), “Склад*”);
ТестируемаяФорма = ТестируемоеПриложение.НайтиОбъект(Тип(“ТестируемаяФорма”),
“Склад*”
);
ТестируемаяФорма.Активизировать();
// Зададим наименование для нового товара
ЭлементФормы = ТестируемаяФорма.НайтиОбъект(Тип(“ТестируемоеПолеФормы”),
“Наименование”
);
ЭлементФормы.Активизировать();
ЭлементФормы.ВвестиТекст(“Склад тест”);
// Запишем элемент
ЭлементФормы = ТестируемаяФорма.НайтиОбъект(Тип(“ТестируемаяКнопкаФормы”),
“Записать и закрыть”
);
ЭлементФормы.Нажать();
КонецПроцедуры

В диалоге параметров запуска сначала выбиралось значение “Запустить как менеджер тестирования”, при помощи сочетания клавиш Ctrl+F5 запускался пользовательский сеанс.

Потом в диалоге выбиралось значение “Запустить как клиент тестирования”, при помощи сочетания клавиш Ctrl+F5 запускался второй пользовательский сеанс.

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

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

Здесь на помощь приходит еще одна новая возможность платформы – запись журнала действий пользователя.

Для этого необходимо запустить приложение в специальном режиме:

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

Для увеличения нажмите на изображение.

В заголовке программы появляется несколько кнопок:

Кнопки записи в программе

Кнопки предназначены для:

  • начала/приостановки записи;
  • прекращения записи;
  • завершения записи.

После завершения записи на экране открывается текстовый документ, который представляет собой последовательность действий пользователя, сохраненную в XML-файл.

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

Для увеличения нажмите на изображение.

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

Для этого предназначена обработка “Преобразование журнала действий пользователя” (UILogToScript.epf), которую можно получить с сайта ИТС.

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

Для увеличения нажмите на изображение.

В результате работы обработки мы получаем сгенерированный код на встроенном языке. Этот код следует вставить в модуль формы обработки тестирования.

Обратите внимание, что в сгенерированном коде числа, большие 999 или меньшие –999, будут выводиться с использованием неразрывного пробела в качестве разделителя групп (например, «1 234» вместо «1234»).

Этот символ необходимо удалить из полученного кода вручную.

Участок кода с подключением к клиенту обработка сформировала автоматически.

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

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

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

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

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

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

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

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

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

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

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

ПолеВидЦен.Выбрать();

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

ПолеВидЦен.ВыполнитьВыборИзСпискаВыбора(“Закупочная”);

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

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

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

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

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

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

Рассмотрим подробнее, как будет выглядеть код при использовании двух клиентов тестирования:

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

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

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

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

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

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

Кроме того, автоматизированное тестирование доступно только для управляемых форм.

Однако преимуществом автоматизированного тестирования является простота и наглядность разработки тестов. Поскольку тест оперирует только интерактивными действиями пользователя, то разработчику не нужно знать структуры конфигурации на уровне реквизитов объектов.

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

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

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

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

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

Статья по программированию - в PDF-формате

Статья в PDF-формате

Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.

Комментарии / обсуждение (41):

  1. Владислав

    Здравствуйте. Подскажите пожалуйста, есть ли способ корректно завершить работу клиентов тестирования?

    • Василий Ханевич

      Добрый день!
      У объекта ТестируемоеПриложение нет отдельных методов для завершения работы.
      К тому же клиент тестирования может быть запущен не из встроенного языка 1С, а как отдельное приложение в ОС, поэтому и завершать его придется как независимый процесс ОС.

  2. Александр

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

    • Василий Ханевич

      Добрый день!
      В документации на сайте ИТС требуемые настройки указаны в статье Запуск клиента тестирования. Перепроверьте, пожалуйста, что у Вас всё выполнено по рекомендациям.

      Строка запуска веб-клиента будет следующей:

      http://IP/base?N=Администратор&P=123456&TESTCLIENT&TESTCLIENTIDИдентификаторКлиента

      А для подключения к тестируемому приложению будет использоваться код:

      ТестовоеПриложение = Новый ТестируемоеПриложение(IP, 1541, ИдентификаторКлиента);
      • Александр

        Добрый день! Спасибо большое. Строка запуска у меня такая же, а вот в метод подключения я не передавал IP. Сейчас же все заработало!!!

  3. Сергей

    Здравствуйте, постоянный Ваш слушатель беспокоит.
    Настроил Тест центр Обработка нулевая, для того, чтобы убедиться, что система работает.
    Запускаю толстый клиент управляемого приложения,как менеджер тестирования
    Запускаю толстый клиент управляемого приложения,как клиент тестирования
    В менеджере тестировании запускаю агента, в клиенте тестирования запускаю сценарий
    Выскакивает ошибка
    Произошла ошибка при обработке параметров запуска Тест-центра:
    {ТестЦентр ОбщийМодуль.ТЦКлиент.Модуль(70)}: Ошибка при вызове метода контекста (ОткрытьФорму)
    ОткрытьФорму(“Справочник.ТЦВП.Форма.УправляемоеВРМ”, П,,, ОсновноеОкно());

    ПРИЧИНА №1
    Окно уже установлено, нельзя назначить другое окно.
    Помогите пожалуйста победить сей казус

    • Василий Ханевич

      Добрый день!
      Нашел вот такое описание ошибки в платформе:
      https://bugboard.v8.1c.ru/error/000032045
      Поэтому можно порекомендовать попробовать другие релизы платформы, где ошибка уже должна быть исправлена.

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

      ОткрытьФорму("Справочник.ТЦВП.Форма.УправляемоеВРМ", П);
    • Василий Ханевич

      Добрый день!
      Да, работает и для файлового, и для клиент-серверного варианта.

  4. Виктор

    Подскажите,как сделать такое тестирование?

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

    • Василий Ханевич

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

  5. AlertDream

    Здравствуйте, возник следующий вопрос.
    Возможно ли реализовать такой сценарий:

    1)Входим в режим предприятия под “Пользователь №1” с полными правами
    4)Открываем форму списка заказов клиента у “Пользователя №1”
    2)Входим в режим предприятия под “Пользователем №2”
    3)Входим в режим предприятия под “Пользователем №3”

    Далее действия “Пользователя №1”:

    5)Открываем сначала форму документа “Заказа №1”
    6)Открываем струткру подчиненности этого заказа
    7)Открывает реализацию этого заказа
    8)Отменяем проведение реализации
    9)Убираем привязку к заказу в реализации
    10)Помечаем реализацию на удаление
    11)Закрываем реализацию
    12)В форме “Заказа №1” открывает историю изменений и переходим на версию номер 5
    13)Закрываем “Заказ №1”
    12)Закрываем структуру подчиненности
    14)Затем тоже самое делаем для “Заказа №2”

    Далее действия “Пользователя №2” и “Пользователя №3”, которые они делают одновременно:

    15)В форме списка заказов клиента “Пользователь №2” нажимает кнопку оформить документы
    для “Заказа №1” (Эта кнопка проводит заказ и создает по нему реализацию – к сведению)
    15)+ Эти же действия выполняет “Пользователь №3” для “Заказа №2” одновременно с “Пользователем №2”
    16)Повторить c 5 пункта по 15 определенное количество раз

    P.S. Вопрос в следующем. Возможно ли последодвательно выполнение следующего при описании сценария:
    1. Сначала Пользователь №1 выполняет свои действия с 5 по 14 пункт
    2. Затем “Пользователь №2” и “Пользователь №3” выполняют свой 15 пункт одновременно
    3. 1 и 2 повторяется определенное количество раз

    • Василий Ханевич

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

  6. Всилий

    Возможно ли в принципе запуск обычного приложения (не управляемые формы) с ключем TESTCLIENT для записи журнала действий пользователя?
    У меня так и не получилось.

    • Василий Ханевич

      Добрый день!
      На обычных формах этот функционал не поддерживается.

  7. Анастасия

    Добрый день!
    Предусмотрена ли возможность записи протокола выполнения сценариев тестирования средствами автоматизированного тестирования?

    • Василий Ханевич

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

  8. oleg_1c

    Какой синтаксис метода “ВыполнитьКоманду()” для толстого клиента?
    Как открыть форму, создать объект?

    • Василий Ханевич

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

  9. Елена

    Добрый день.

    Пытаюсь воспроизвести действия , описанные в статье. При формировании кода при помощи обработки UILogToScript.epf сценарий не отрабатывает и вываливается в ошибку на строке ОкноПриложенияКонтрагентыФормаКонтрагенты = ОкноПриложенияКонтрагенты.НайтиОбъект(Тип(

    «ТестируемаяФорма»), «Контрагенты»);

    Само ОкноПриложенияКонтрагенты получается с типом “Неопределено”.

    Первый пример со схемой:
    1.ВыполнитьКоманду()
    2.ОжидатьОтображениеОбъекта()
    3.НайтиОбъект()
    отрабатывает корректно.

    Подскажите, пожалуйста, в чем может быть проблема при использовании обработки?

    • Василий Ханевич

      Добрый день!
      Если функция возвращает значение Неопределено, то система не смогла найти требуемый объект. В вашем случае на тестируемом приложении надо предварительно открыть форму списка справочника Контрагенты. Тогда указанный код отработает без ошибок.

  10. sutuliy

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

    • hanv

      При помощи записи журнала действий пользователя и обработки преобразования журнала можно получить программный код обработчиков.
      Для сценариев на демоконфигурации “Управляемое приложение” выполнял следующую последовательность действий:
      1) Ответ на Вопрос
      – открываем документ “Приход товара”, нажимаем кнопку “Заполнить”, в обработчике присутствует ПоказатьВопрос, отвечаем на него “Да”

      2) Реквизит составного типа
      – у документа “Приход товара” есть реквизит Реквизит1 составного типа (Контрагенты, Товары)
      – открываем документ “Приход товара”, нажимаем кнопку выбора, появляется окно выбора типа данных, выбираем “Контрагенты”, выбираем конкретный элемент справочника из списка.

      В сформированном коде можно увидеть, как нажимается кнопка “Да” при ответе на вопрос, а также выбор типа для реквизита составного типа.
      Получится код следующего вида:

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

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

      КонецПроцедуры
      Процедура ОкноПриложенияВыборТипаДанныхКнопкаОКНажать(ТестовоеПриложение)

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

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

      Информации по автоматизированному тестированию действительно немного:(

  11. zhu4

    Господа, а проясните , пожалуйста, в каких практических случаях это может применяться? С тестированием слабо знаком. Пример показал, что вот есть нажатия кнопок для создания объектов. Но для чего еще можно это использовать?

    • hanv

      Возможные варианты применения:
      1. Имитация интерактивных действий пользователей.
      2. Запись действий пользователя, приведших к возникновению ошибки, для передачи в службу поддержки (или на доработку).
      3. Выявление проблем производительности (ожидания на блокировках, взаимоблокировки).
      4. Проведение нагрузочного тестирования.

  12. Serega456

    Как обзор по новой функции “Автоматическое тестирование” – статья хорошая.

  13. Наталья

    Статья интересная и познавательная. Что касается замечаний – я бы немного иначе описала способы запуска клиентов и менеджера тестирования. В статье сначала описываются способы для менеджера, затем, по сути, те же способы для клиентов. Мне кажется, надо указать, что существует 3 способа запуска и затем каждый из них описать для клиента и для менеджера.

  14. FoXSkr

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

  15. progr-2008

    Понравилось, очень полезно. Спасибо!
    Давно хотела добраться до этой темы.
    Вот еще бы примерчик немного посложнее добавить, может, просто в виде файла к статье, без особых объяснений – только сказать про смысл, чтобы код было проще разобрать.

    Совсем отлично было бы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

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

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.