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

Обновлено: 04.07.2024

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

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

Попробуйте решения для тестирования от «1С-ИжТиСи» бесплатно

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

Заполните форму — а всё остальное организуют наши специалисты.

Также можно позвонить по бесплатному номеру 8 (800) 77-51-256 либо написать письмо на Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. .

Существуют различные механизмы тестирования на платформе «1С:Предприятие», среди которых:

  • Тестирование и исправление информационной базы 1С;
  • Автоматизированное тестирование в «1С:Предприятие 8.3»;
  • Программный продукт «1С:Сценарное тестирование 8» (далее – СТ);
  • Программный продукт «1С:Автоматическое тестирование конфигураций» (далее – АТ).

Тестирование и исправление информационной базы 1С

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


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

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

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

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


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

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

Сценарное тестирование

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

СТ состоит из двух внешних обработок: одна предназначена для записи теста, вторая – для его выполнения.

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



  • Для разработки тестов не требуются навыки программирования, достаточно представления о работе тестируемой конфигурации на уровне пользователя.
  • Позволяет писать и выполнять тесты для проверки работоспособности любой конфигурации на платформе «1С:Предприятие 8».
  • Тесты, как правило, пишутся для наиболее часто используемых сценариев реальной работы пользователей с прикладным решением и выполняются на каждой новой версии измененной конфигурации или платформы.
  • Тесты можно делать более или менее сложными, в зависимости от критичности ошибок в том или ином функционале прикладного решения и в зависимости от количества времени, которое в организации готовы потратить на тестирование.
  • Для выполнения теста не требуется специальной подготовки тестируемой конфигурации.
  • Имеется возможность при выполнении автоматизированного теста обойти обнаруженную ошибку вручную и продолжить выполнение теста в автоматическом режиме.
  • Предоставляет возможность отладки шагов при записи теста.

Автоматическое тестирование конфигураций

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

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

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

  • Тест «Синтаксический контроль» предназначен для выявления синтаксических ошибок тестируемых конфигураций.
    В отличие от типового синтаксического контроля модулей данный тест позволяет выявить все синтаксические ошибки модулей конфигурации за один запуск тестирования. При тестировании нескольких конфигураций показаны будут только вновь возникшие ошибки.
  • Тест «Проверка конфигурации» запускает стандартную проверку конфигурации – проверку логической целостности конфигурации и поиск некорректных ссылок. Позволяет сопоставлять ошибки в нескольких конфигурациях.
  • Тест «Вызов событий форм» имитирует работу пользователя с конфигурацией: выполняется программное открытие всех форм тестируемых объектов конфигурации, генерируются различные события форм и элементов управления. Сравнивает результат работы теста для нескольких конфигураций и выводит отчет тестирования обновленной конфигурации (также имеется возможность посмотреть отчеты для всех четырех конфигураций).
  • Тест «Анализ оборотов и остатков» позволяет сравнивать регистры тестируемой и эталонных конфигураций.
  • Тест «Сравнение движений документов» выполняет проведение документов информационной базы и сохраняет их движения в специальном формате. Если при указании нескольких конфигураций окажется, что результаты их движений различаются, будет выведено предупреждение об изменение логики работы.
  • Группа тестов «Проверка метаданных» включает в себя три теста:
    • тест «Метаданные» проверяет корректность обновления метаданных обновленной конфигурации;
    • тест «Формы» выполняет проверку корректности обновления обычных и управляемых форм, их реквизитов и элементов управления обновленной конфигурации;
    • тест «Роли» выполняет проверку корректности обновления ролей обновленной конфигурации.

    Особенности:

    • Выполняет комплексное тестирование конфигураций, разработанных на платформе «1С:Предприятие», полностью в автоматическом режиме. Участие пользователя требуется только для запуска тестирования и последующего исправления найденных программой ошибок.
    • Не требует предварительного создания тестов для проверки работоспособности конфигурации 1С, они уже имеются в программе и применимы для любых конфигураций.
    • Позволяет тестировать не только типовые конфигурации, но также сильно измененные.
    • Качество тестирования не зависит от степени критичности ошибок и их количества в конфигурации.
    • Для запуска тестирования не требует дополнительных приложений, обработок или каких-либо сложных настроек конфигурации.
    • После завершения тестирования формирует отчет о различиях и ошибках, найденных в работе тестируемых информационных баз. В списке обнаруженных ошибок указывается место и контекст их возникновения (облегчает процесс исправления ошибок). Также имеется возможность посмотреть время выполнения того или иного события.
    • Автоматически формирует отчет по списку процедур и функций, которые не удалось вызвать автоматически, с указанием возможных причин (отчет «Покрытие кода тестами»).
    • Помогает в устранении найденных ошибок. После завершения тестирования выводит подробный список задач, которые должен вручную выполнить специалист для исправления ошибок.
    • Тестирование можно выполнять с использованием от одной до четырех конфигураций одновременно, при этом все, кроме основной, будут считаться эталонными.
    • Позволяет производить сравнительный анализ производительности работы тестируемых конфигураций.
    • Позволяет выполнять выборочное тестирование – тестирование отдельных объектов конфигурации, запуск отдельных тестов, направленных на решение конкретных задач).
    • Имеет возможность запуска на платформе «1С:Предприятие» как редакции 8.2, так и редакции 8.3.
    • Используется для тестирования одной или нескольких конфигураций с режимом запуска как «Обычное приложение», так и «Управляемое приложение».

    Сравнение программных продуктов и механизмов тестирования

    Проведя сравнение АТ с другими механизмами тестирования, например, с СТ, можно выделить ряд существенных преимуществ данного программного продукта.

    Отличия «1С:Автоматическое тестирование конфигураций» от «1С:Сценарное тестирование 8»:

    • СТ требует ручной подготовки сценариев тестирования. В случае изменения функционала необходимо заново разрабатывать сценарии тестирования.
    • Работа СТ не автономна. При возникновении критичных ошибок процесс тестирования останавливается.
    • Список ошибок в СТ протоколирует пользователь, а в АТ он формируется автоматически.
    • СТ может находить ошибки, которые зависят от последовательности действий пользователя.
    • СТ позволяет настраивать тестирование взаимосвязи объектов. В АТ каждый объект тестируется независимо, за исключением ввода на основании, открытия форм из «родительского» объекта (например, подбор или выбор из справочника).
    • СТ можно настроить на работу с пустой базой, а для работы АТ необходимо наличие информационной базы, максимально близкой к продуктивной.
    • На текущий момент АТ проверяет эталонные значения только для движений и регистров.

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

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

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


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


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


    В работе с обработкой сложностей не должно возникнуть, рекомендую установить флаг для генерирования кода подключения к клиенту и установить значение переключателя "Преобразовывать" в "Текст". Далее копируем 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", но на момент написания статьи я рекомендую использовать его в ознакомительных целях, т.к. механизм довольно новый и возможно, еще не до конца отлажен разработчиками.

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

    До релиза новой версии фреймворка по тестированию “xUnitFor1C” осталось совсем немного, а значит пришло время рассказать о проделанной работе и о том, что ожидает пользователей.

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

    Зачем все перепиливать?

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

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

    Мне нравится метафора Алана Купера:

    Создание большой программы можно сравнить с постройкой столба из кирпича. Этот столб состоит из тысячи кирпичей, положенных один на другой. Столб может быть выстроен, только если класть кирпичи с большой точностью. Любое отклонение приведет к падению кирпичей. Если кирпич с номером 998 сможет отклонить на пять миллиметров, столб, вероятно, сможет выдержать тысячу кирпичей, но если отклонение на 5-ом кирпиче, столб никогда не станет выше трех десятков.


    Архитектура, существовавшая с прототипа, была тем самым отклонением на 5-ом кирпиче, которая не позволяла добавить новый функционал, который нам так хотелось — тестирование в стиле BDD, в частности, использование Gherkin. Есть мнение, что нужно выбирать что-то одно. Либо TDD либо BDD. Поработав по принципам гибкого тестирования, я понял, что модульные и сценарные тесты ни в коем случае не должны противопоставляться, они прекрасное дополнение друг к другу!

    Вот так выглядит матрица гибкого тестирования:

    image

    Модульные тесты относятся к квадранту 1 — низкоуровневые тесты. Предназначены для проектирования слабо-связанной, эластичной, тестируемой архитектуры. Они выполняют для разработчика ту же роль, что и страховочный трос для скалолаза. При этом они достаточно дешевые в разработке и содержании.

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

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

    Немного забегу вперед и скажу, что на новом движке еще не реализовано тестирование в стиле BDD, но фундамент полностью подготовлен. Сценарное тестирование — это следующий шаг.

    Архитектура

    Она полностью переработана. Инструмент стал намного гибче и проще в разработке. Теперь это не обработка с 8,5к строк кода, теперь это ядро с системой плагинов. Да-да, тут нет ошибки, в 1С можно сделать фреймворк, который будет расширяться плагинами.

    В качестве плагинов выступают внешние обработки, располагающиеся в папке “Plugins” и реализующие следующий базовый интерфейс:

    Обращение к плагину происходит по идентификатору, например:

    Работу ядра теперь можно грубо выразить в виде единственной функции:
    КаноническийРезультатТестирования = ВыполнитьТесты(КаноническоеДеревоТестов);

    Возникает резонный вопрос: “Что за канонические дерево тестов и результат тестирования?”.

    image

    Откуда берутся канонические деревья с тестами и как это способствует универсализации?

    1. Пользователь выбирает Загрузчик, которым хочет воспользоваться;
    2. Далее определяется путь для поиска тестовых сценариев (возможно интерактивно). При этом путь — это просто некая строка, которую умеет верно интерпретировать выбранный загрузчик. Например, это может быть путь в файловой системе или путь в дереве метаданных конфигурации или … все что угодно;
    3. По выбранному пути производится поиск тестовых сценариев;
    4. По найденным сценариям формируется дерево тестов для ядра, при этом в путях у листьев дерева указываются некие строки (аналогично п.2), которые умеет верно интерпретировать выбранный загрузчик;
    5. Когда идет выполнение тестов, ядро для разрешения путей у листьев дерева обращается к соответствующему загрузчику.

    Функция ВыбратьПутьИнтерактивно(ТекущийПуть = "") — клиентский метод для интерактивного выбора пути для загрузки тестов;

    Функция Загрузить(КонтекстЯдра, Путь) — поиск тестовых сценариев и построение канонического дерева тестов;

    Функция ПолучитьКонтекстПоПути(КонтекстЯдра, Путь) — получение тестового контекста по переданному пути.

    • ЗагрузчикФайлов — загрузчик модульных тестов из epf файлов. В качестве путей использует пути к файлам файловой системы;
    • ЗагрузчикКаталогов — построен поверх загрузчика файлов. В качестве пути для поиска принимает путь к каталогу файловой системы. В остальном полностью полагается на загрузчика файлов;
    • ЗагрузчикИзПодсистемКонфигурации — в качестве путей использует дерево метаданных конфигурации в строковом представлении. Например, “Метаданные.Обработки.Тест_Обработка”. API тестовых обработок заимствует загрузчика файлов.
    В ближайших планах создание ЗагрузчикBDD, который будет работать с feature-файлами Gherkin.

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

    После того как ядро переработало дерево тестов в результат тестирования, оно его передает еще одному специальному типу плагина “ГенераторОтчета”.

    • ГенераторОтчетаMXL — moxel-формат отчета, который сейчас используется при интерактивной работе с инструментом;
    • ГенераторОтчетаJUnitXML — junit.xml отчет, который используется в непрерывной интеграции (CI).

    Функция СоздатьОтчет(КонтекстЯдра, РезультатыТестирования) — формирование отчета в формате предлагаемом плагином. Результаты тестирования передаются плагину в каноническом для ядра формате;

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

    Процедура Экспортировать(Отчет, ПолныйПутьФайла) — сохраняет отчет по указанному пути, в основном используется для целей CI.

    Полезняшки

    Всякие “полезняшки” имеют тип плагина “Утилита”. Как правило, выполняют библиотечную или сервисную функцию. Например, библиотека утверждений в стиле BDD — плагин “УтвержденияBDD”, о котором я писал в своей прошлой статье. “СериализаторMXL” — сервисный плагин, который занимается сериализацией данных базы в moxel-формат и обратно.

    Послесловие

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

    Теперь можно утверждать, что фреймворк вырос из “просто инструмент для модульного тестирования” в “инструмент позволяющий покрыть почти все возможные виды автоматического тестирования”. Он модульный, четко разделен по слоям, легко может дорабатываться и расширяться. Кажется, текущее название перестало передавать назначение продукта. Может, пришло время изменить название? Если у вас есть хорошая идея для названия, не стесняйтесь поделиться.

    Общая информация

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

    Автоматизированное тестирование выполняется при помощи двух клиентских приложений и сценария тестирования.

    Менеджер тестирования — это клиентское приложение (толстый или тонкий клиент) запущенное в соответствующем режиме. В этом приложении исполняется сценарий тестирования и производится оценка результатов (если нужно).

    Клиент тестирования — это клиентское приложение (толстый, тонкий или веб-клиент). Это приложение получает от менеджера команды, воспроизводит их и возвращает результат.

    Запись действий пользователя

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

    К счастью имеется способ серьезно упростить работу — записать журнал действия пользователя. Запуск этого режима производится из конфигуратора:

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

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

    Или из командной строки:

    C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /UILogRecorder

    После запуска в правом верхнем углу основного окна приложения появятся кнопки для управления записью действий пользователя:

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

    С помощью этих кнопок запись можно:

    • начать/приостановить/продолжить;
    • прекратить;
    • завершить.

    Начав запись, сделав какие-либо действия и завершить запись, мы увидим некий XML-документ, например такой:

    Пример записи действий пользователя

    Пример записи действий пользователя

    Выглядит все это вот так:

    Преобразование XML в код на встроенном языке

    Преобразование XML в код на встроенном языке

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

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

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

    Запуск из командной строки в режиме менеджера тестирования выглядит примерно так:

    C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /TestManager

    А в режиме клиента тестирования так:

    C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /TestClient -TPort 2000

    При запуске в режиме клиента можно указать номер порта (по умолчанию 1538), это нужно в том случае, если запущено несколько клиентов тестирования.

    Текущий режим будет указан в заголовке главного окна:

    Заголовок главного окна в режиме менеджера

    Заголовок главного окна в режиме менеджера

    Заголовок главного окна в режиме клиента

    Заголовок главного окна в режиме клиента

    Создание и область применения тестов

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

    В написании текста также может помочь схема объектов для имитации интерактивных действий:

    Схема объектов для имитации интерактивных действий

    Схема объектов для имитации интерактивных действий

    А также синтаксис-помощник в котором имеется подробная информация о каждом из этих объектов.

    Самым простым вариантом запуска теста будет создать обработку (можно внешнюю) и просто засунуть в нее имеющийся код теста и запустить из менеджера тестирования.

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

    На этом все, надеюсь, что данная статья была Вам полезна.

    Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    (оценок: 1, средняя оценка: 5,00 из 5)


    Области применения:

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

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

    Есть возможность попробовать решение бесплатно

    Оцените, насколько продукт будет полезен именно для вас. Это совершенно ничего не стоит.

    Заполните форму — а всё остальное организуют наши специалисты.

    Также можно позвонить по бесплатному номеру 8 (800) 77-51-256 либо написать письмо на Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. .

    Кому будет полезен продукт

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

    Также продукт будет полезен для проверки работоспособности функционала конфигураций на этапе внедрения:

    • партнерам 1С, внедряющим и обслуживающим измененные конфигурации;
    • организациям, внедряющим доработанные конфигурации своими силами.

    Возможности решения

    Программа позволяет проводить комплексное тестирование конфигураций на платформе «1С: Предприятие» в автоматическом режиме без предварительной настройки сценариев и алгоритмов тестирования:

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

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

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

    Формирование отчетов и инструкций

    В результате работы программы автоматически формируются следующие отчеты:

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

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

    Преимущества решения

    По сравнению с ручным тестированием конфигураций решение имеет следующие преимущества:

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

    Снижается общая стоимость владения и обслуживания всей информационной системой за счет увеличения общей надежности.

    Программа разработана совместно с фирмой «1С», имеет статус «1С-Совместно» и соответствует всем требованиям, которые «1С» предъявляет к выпускаемым продуктам.

    Отзывы компаний о решениях «1С-ИжТиСи»

    Мы не прогадали, когда отдали обновления в руки специалистам «1С-ИжТиСи». Теперь наши руки развязаны, мы не переживаем за дедлайны по обновлению при выходе новых форм или требований и просто делаем свою работу, а «ИжТиСи» свою.

    Кубатов Д.А.,
    руководитель отдела ИТ

    ООО «ЗЕЛДИС ФАРМА»
    Подольск, Московская обл.
    «1С:УПП»

    В результате совместной работы с командой «1С-ИжТиСи», мы достигли оптимизации процесса обновления. Теперь обновлением нетиповых конфигураций занимается один поставщик, причем выполняется обновление сразу по мере его выпуска фирмой «1С».

    Беляев В.М.,
    директор по ИТ

    ПАО «Группа Черкизово»
    Москва
    «1С:УПП», «1С:БП», «1С:ЗУП»

    Сотрудничество позволило сэкономить ресурсы программистов нашей компании. Все работы по проектам были выполнены быстро и качественно за счет использования «1С-ИжТиСи» технологий автоматизации.

    Гресиков М.,
    директор департамента ИТ

    ГК «Эником Невада групп»
    Хабаровск
    «1С:ERP»

    Наши клиенты

    Свыше 600 довольных клиентов по всей России и за рубежом.

    Что нового для вашей 1С?

    Оперативная информация о выходе и содержании свежих для 24 типов конфигураций.

    Рассылка осуществляется в день выхода обновления. Никакой рекламы, только полезная информация. Посмотрите пример →

    Читайте также: