Ищем паттерны в сценарных тестах. Практика - Фреймворк Тестирование 3.0

29.03.21

Задачи пользователя - Корректировка данных

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

Мы рассмотрим на практике и обсудим процесс поиска паттернов и их подмену на готовые сценарии из библиотеки скриптов Это позволит снизить стоимость владения инструментарием. Выполнять данную процедуру будем с помощью специальной встроенной процедуры автоматизации для обработки "Менеджер сценарных тестов", которая входит в состав Фреймворка «Тестирование 3.0».

Что такое паттерн (общими словами)?

Под паттерном понимают (перефразируем Википедию) - некоторый образец или шаблон, элементы которого предсказуемо повторяются. Самый красивый и наглядный пример, на мой взгляд - это фракталы.

 

 

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

 

Пример поиска паттернов в текстах сценариев

 

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

Постановка задачи:
Рассмотрим на примере создания сценарного теста некоторого бизнес-процесса продажи в типовой конфигурации ERP/УТ/КА.

Исходные данные:

Запишем и проанализируем последовательность действий двух блоков.

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

Выполним запись сценария и преобразуем его в дерево шагов.

 

 

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

 
 Текстовое представление записи сценария "Создать новое коммерческое предложение"

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

 

 

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

 
 Текстовое представление записи сценария "Создать новый заказ клиента"

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

 
Таблица сравнения шаблонов текстов двух сценариев

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

Задача устранения дублирования "кода" сценария 

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

  • Если этого не сделать, то потом при доработке конфигурации нам придется бегать по всей библиотеке и вносить исправления. А если мы это выполним, то в случае доработок - поменять придется в одном единственном файле. Это же здорово)
  • Сценарий после рефакторинга  станет более простым, понятным и наглядным.
  • Уменьшается вероятность ошибки при добавлении параметров и приведении сценария к динамическому виду, т.к. будут подставляться уже обработанные и проверенные блоки.

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

Функционал анализа сценария:

Мы разработали новый функционал анализа сценария. Он вызывается из панели «Дерево» обработки «Менеджер сценарного теста».

 

 

 

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

 


Результат применения механизма анализа сценария к записанному сценарию

 

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

 

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

 

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

Пару слов про реализацию:

Мы потратили относительно много времени на решение этой задачи – около 4-5 месяцев (старт и закрытие тикета). В процессе работы над задачей мы применили и перепробовали множество идей (поиск подобия по косинусному сходству, метод наивного Байеса, n-gramm, самоорганизующиеся карты, временные ряды, вероятностные сети, сверточные нейронные сети) и остановились на некотором компромиссе качеству к сложности -  упрощённой вероятностной сети. Она работает очень быстро, не требует большого количества обучающих данных и подходит под особенности сценариев:

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

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

Механизм работы с новым функционалом:

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

  1. Будем считать, что у вас есть уже обучающий набор текстов и шаблонов или вы скачали примеры их с сайта «https://github.com/ivanov660/test-lib-logic» и распаковали у себя.
  2. Вы должны открыть существующий сценарий или записать новый и преобразовать его в дерево.
  3. Перейти во вкладку «дерево» и нажать кнопку с волшебной палочкой «Поиск подобия шаблонов»
  4. Далее в открытом окне «Поиск подобия шаблонов» нажимаем кнопку «искать совпадения» см. рисунок ниже.
  5. После анализа сценария вы можете согласиться с подобранными вариантами и нажать кнопку «Проставить замены»
  6. Если же алгоритм ничего не нашел, а вы считаете, что блоки есть, то требуется выполнить обучение. Смотрим следующую часть.

 

 

Основной вид рабочего места


Механизм обучения:

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

  1. Выделяем текст, который описывает некоторый шаблон/повторяющуюся последовательность действий.
  2. Выбираем имя шаблона или вводим новое. Желательно указывать «контрагент выбор», а не «выбор контрагента», это позволит далее более оптимально искать подходящие действия.
  3. Жмем кнопку «Добавить в обучающую выборку выделенный фрагмент»
  4. Все! Далее перезапускаем процедуру анализа и механизм теперь должен найти новый уточненный шаблон.

 

Что нужно выделить/добавить в процессе обучения 


Замечания по работе с функционалом:

При работе механизма есть ограничения и особенности, которые мы отметим ниже:

1.    Используйте одинаковые опорные действия/строки для одного шаблона в текстах. При добавлении обучающих текстов в шаблон старайтесь выбирать блоки, которые содержат одинаковые строки текста, которые можно назвать ключевыми, по ним вы сами ищите подобие. Т.е. если мы рассмотрим сценарий выбора контрагента, то в каждом варианте текста обязательно должна быть строчка, содержащая фразу «найти поле ‘Клиент’». Если вы создаете блок выбора организации, то в шаблонах должен быть текст «найти поле ‘Организация’». Пример ниже для шаблона «Организация выбрать»:

 
 Тексты для шаблона "Организация выбрать" 

 

 
2.    Проверяйте качество текстов шаблонов по кнопке «Тест текстов». Она проведет проверку в соответствии с некоторым упрощенным критерием.

 

 

 

3.    Не объединяйте шаблоны разные сценарии. Т.е. у нас есть общая форма выбора склада, которая вызывается из заказа клиента и заказа на перемещение. Только в случае выбора из заказа клиента у вас будет поиск поля с заголовком «Склад», а для заказа на перемещения будут поля «Склад-отправитель» и «Склад-получатель». Т.е. фактически отличие между этими блоками будет в одном действии – нахождении поля выбора склада. (в дальнейшем мы планируем улучшить функционал, который позволит упростить подбор этого блока)
4.    Проверяйте качество работы алгоритма и после вставки в сценарий подправьте позиции блоков. Т.е. алгоритм не может со 100% вероятностью в каждом случае определить позицию вставки и отключения старых действий, поэтому поправьте ручками и сами удалите уже не нужные части в дереве скрипта.
5.    Не создавайте конкурирующих шаблонов. Т.е. не стоит создавать похожие шаблоны с одинаковыми текстами, к примеру, «выбрать контрагента вариант 1», «выбрать контрагента вариант 2». Это приведет высокой конкуренции между ними и множественному ошибочному выбору.
6.    Избегайте создания больших шаблонов. Ограничивайте действие шаблонов не более 40-50 действий.
7.    Обучайте на похожих выборках. Т.е. старайтесь не совмещать шаблоны с вариантами действий 4-5 и 50 шагов.
8.    Не анализируйте сценарий со вложенными блоками. У нас стоит задача разбить сценарий на блоки, поэтому такое поведение не рационально. Мы не можем вставить блок внутрь вложенного блока. Каждый блок редактируется отдельно.


Про настройку:

Во вкладке «Настройки» у Вас есть возможность исправить недочеты и уточнить некоторые параметры алгоритма.
1.    Укажите ширину окна вероятностной сети не меньше длины в строках для самого длинного шаблона. Рекомендуем не создавать шаблоны более 50 действий
2.    Можете изменить границы суждений при анализе и настроить простановку флага для автоматического анализа. Порог срабатывания идет с минус бесконечности до 0 (см. рис. ниже)
3.    Для каждого шаблона укажите или пере укажите путь скриптам из библиотеки.

 

 

 4.    Путь к каталогу текстов шаблонов указывайте на вкладке «Наcтройки»-> «Текстовые шаблоны». После этого вы можете загрузить или сохранить изменённые шаблоны.

 

 

Видео-инструкция:

 
 видео-инструкция "поиск паттернов в сценариях"

 

 

Вопросы и ответы:

  1. Вопрос: Алгоритм не вставил блок, но позицию замены нашел. 
    Ответ: Убедитесь, что у вас на против шаблона указан путь к скрипту в библиотеки действий. Алгоритм не делает замены, если не указан путь к скрипту.
  2. Вопрос: Алгоритм анализа начал везде писать один и тот же шаблон. 
    Ответ: Откройте вкладку настройки и убедитесь, что в текстах шаблона между каждым тегом «end_of_text_paragraf» есть текст. Если его нет, то требуется удалить лишний тег.
  3. Вопрос: Алгоритм добавил шаблоны рядом друг с другом.
    Ответ: Вы могли указать почти одинаковые тексты для похожих шаблонов, к примеру, «выбрать контрагента вариант 1» и «выбрать контрагента вариант 2». Объедините их тесты и удалите лишний.
  4. Вопрос: Алгоритм находит шаблоны там, где их быть не должно.
    Ответ:
    - Скорее всего при указании текстов шаблонов вы не следовали правилу одинаковых опорных действий в каждом обучающем тексте. Откройте тексты шаблонов и найдите тексты которые не следуют этому правилу и удалите или исправьте его. Т.е., к примеру, в шаблоне «выбрать сделку», в каждом тексте обязательно должна быть строка с содержанием «найти поле ‘сделка’».
    - Алгоритм мог ошибиться. Вы могли при записи сценария случайно активировать поле, являющееся опорным. В этом случае снимите флаг с поля. (мы планируем в дальнейшем повысить качество)
  5. Вопрос: Алгоритм не находит шаблон, но он есть.
    Ответ: Добавьте текст в обещающую выборку требуемого шаблона.
  6. Вопрос: Хочу удалить некоторые обучающие тексты. После добавления шаблона поиск стал работать хуже.
    Ответ: Перейдите во вкладку настройки, выберите строку с шаблоном и в окне текстов удалите лишние или сбойные тексты примеров вместе с тегом «end_of_text_paragraf».
  7. Вопрос: Хочу чтобы для сомнительных решений не проставлялись флажки для переноса.
    Ответ: На вкладках настроек суждений, установите ложь в строке необходимого суждения.

См. также

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    32670    106    152    

73

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    1281    12    1    

7

SALE! 20%

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

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 2880 руб.

10.02.2017    110502    662    174    

702

Закрытие периода Корректировка данных Бухгалтер Пользователь Платформа 1С v8.3 Оперативный учет 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

4800 руб.

27.10.2021    23918    241    35    

78

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

Обработка предназначена для корректировки входящего НДС при смене системы налогообложения индивидуального предпринимателя с УСН на ОСНО в 1С:Бухгалтерия предприятия 3.0

4000 руб.

18.07.2024    688    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Graptos 12.11.24 10:36 Сейчас в теме
Добрый день, подскажите пожалуйста, проект TestingTool-3 уже полностью отложен в сторону? Есть некоторые проблемы в использовании, которые не удаётся решить самостоятельно и нужна помощь, но связаться через Issue в гите не удалось
Оставьте свое сообщение