Найти тему

Об устройстве функционального тестирования в 1С

Оглавление

1. Вступление

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

Инструментов для функционального тестирования в 1С несколько. В этой статье речь будет идти о Vanessa Automation.

2. Что такое функциональное тестирование

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

3. Низкий порог входа

Для создания первых тестов мне хватило нескольких часов. Основное время ушло на настройку окружения (установка Java, Allure). Написание самих тестов достаточно простая задача:
1. запускаем обработку;
2. включаем режим записи;
3. производим намеченный порядок действий в информационной системе.

К примеру, создаём запись элемента справочника «Контрагенты» с заполнением определённых полей. Останавливаем запись. Всё — тест готов. Обработка переводит воспроизведённые функции в простое, человеко-понятное описание на языке Turbo Gerkin.

-2


Сами тесты — это обычные текстовые файлы. Файлы сохраняются с расширение .feature и обычно называются фича-файлами.

4. Принцип организации тестирования

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

-3

Далее в нём открывается обработка Vanessa Automation, в которой пишутся тесты, впоследствии выполняемые на «Клиенте тестирования».
Конфигурация, на базе которой запускается «Менеджер», может вообще не совпадать с тестируемой конфигурацией. Если сильно упростить, то «Менеджер» по сути имитирует нажатие кнопок в «Клиенте» — согласно сценарию. То есть мы можем запустить «Менеджер» на пустой конфигурации, из него открыть конфигурацию ERP в режиме «Клиента тестирования», выполнить определённые действия, закрыть «Клиент тестирования» и открыть новый, но уже — «Документооборот».

5. Создание текстовых и видео инструкций

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

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

6. Дымовые тесы

Ещё один из интересных механизмов Vanessa Automation — это создание дымовых тестов. Дымовые тесты очень просты, они проверяют базовый функционал, такой как: открытие формы и её закрытие, запись элемента справочника, проведение документа. К примеру, можно за пару нажатий сгенерировать тесты на открытие и закрытие всех форм в конфигурации.
Дымовые тесты можно применять при обновлении типового релиза конфигурации, а также перед выпуском в продакшн своего релиза. Следует учитывать, что в больших конфигурациях достаточно много форм и выполнение дымовых тестов может занять несколько часов.

7. Тегирование тестов

Со временем число тестов может увеличиться и для того, чтобы сократить период тестирования, имеется возможность прогонять только часть тестов. Поделить тесты на части можно произвольными тегами. Мы можем обозначить определённым тегом функциональный блок системы (@Продажи), конкретный бизнес-процесс (@ОтгрузкаВДолг) или объект конфигурации (@Контрагенты). Далее при запуске теста указывается тег или набор тегов и тесты запускаются только по ним.

8. Аллюр-отчёты

Allure Report — это российский open-source проект. С помощью этого фреймворка формируются простые и понятные отчёты по итогам прохождения тестов.
С помощью Vanessa Automation запускается набор тестов или все тесты. И после выполнения результаты передаются в Аллюр и уже он показывает их в структурированном и понятном виде.
Можно сразу увидеть, сколько всего времени было затрачено на прохождение тестов, какие именно тесты «упали», посмотреть скриншоты ошибок и записи журнала регистрации. Всё внутри одного инструмента. Это действительно удобно.

9. Важные моменты

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

1. Первоначальная загрузка данных. Обычно существует два базовых блока по тестированию: создание базы для тестирования и само тестирование. На первом шаге создаётся пустая конфигурация. В неё загружается актуальный CF-файл. Далее эту базу нужно наполнить первоначальными данными, что также осуществляется с помощью тестов. Данные — это, как правило, константы и базовые справочники, реже — регистры сведений. В итоге получаем готовую базу, на которой можно проводить тестирование. Так вот, подготовка первоначальных данных требует определённого знания конфигурации. Загрузить нужно необходимый минимум и ровно такой, чтобы данных было достаточно для тестирования.

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

3. Максимальное изолирование. Тест должен быть организован таким образом, чтобы его выполнение происходило независимо от других тестов. То есть реализована возможность запуска тестов в любом порядке. В самих тестах предусмотрен механизм импорта других тестов (как вызов функции из общего модуля). Но тут нужна аккуратность — чем более тесты изолированы друг от друга, тем лучше. Иначе при «падении» одного такого зависимого теста «свалятся» и остальные; само тестирование затягивается — нужно исправить ошибку и запустить снова, и таких итераций может быть несколько.

4. Тестирование конкретной функции. Сценарий тестирования должен быть направлен на проверку конкретной функции. Допустим, возьмём создание нового элемента справочника «Номенклатура» и заполнение его реквизитов. Такой сценарий содержит два блока: первый — это загрузка первоначальных данных, например, единиц измерения (тестирование, как правило, производится на пустой базе), а второй — непосредственно создание и заполнение реквизитов. Может быть отдельный тест, который создаёт элементы справочника «Единицы измерения», и в данном случае не следует запускать этот тест — нужно загрузить данные. Отличие загрузки данных от тестирования в том, что при загрузке данные записываются напрямую в базу, без использования интерфейса 1С:Предприятия, а следовательно — сводится к минимуму возникновение «падения». Как было сказано выше, может существовать отдельный тест по интерактивному созданию единиц измерения — и именно этот тест должен «упасть» (если там существуют проблемы), а не сценарий по созданию новой номенклатуры.

5. Тестирование функционала под определёнными правами. Следует помнить: то что работает под администратором, может не работать под пользователем с другими правами. Поэтому следует писать тесты под конкретный набор прав для конкретной функции. В сценариях Vanessa Automation существует специальная команда по запуску «Клиента тестирования» под определённым пользователем с нужными правами.

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

10. Минусы

1. Разработка и описание методики работы с тестированием. Скорее всего, придётся делать это итерационно — сразу, с первого раза, может не получиться.
2. Соблюдение баланса по количеству необходимых тестов: их должно быть в меру. Надо понимать, что написание тестов — это постоянная работа и она потребует времени. Изменилась кодовая база — поменялись тесты.
3. Доработка регламента разработки: нужно лаконично вписать в него тестирование.

11. Плюсы

1. Низкий порог входа: можно быстро создать первые тесты, буквально за один день.
2. В продуктивную базу попадает меньше ошибок — разработчик сам себя проверяет. Это удобно, растёт качество.
3. Возможность формировать текстовые и видеоинструкции. Опять же — удобно. Такой механизм позволяет постоянно актуализировать инструкции. Ведь они через некоторое время «прокисают» и устаревают.

12. Заключение

Vanessa Automation — великолепный инструмент. Видно, что коллеги-разработчики потрудились на славу. Он удобен в использовании и достаточно прост. Безусловно, в нём много настроек, но, если понять саму идею, то разобраться будет легко.


Успехов!

Мои публикации и контакты

Ссылки

Vanessa Automation:
https://github.com/Pr-Mex/vanessa-automation

Allure Report:
https://github.com/allure-framework/allure2

Небольшой курс о тестировании в 1С:Предприятие с помощью инструмента Vanessa-Automation:
https://www.youtube.com/playlist?list=PLLbbYbSDiWvfWjD9MdX8C235JvT_YcqoN