Автоматическое
функциональное
тестирование
в среде 1С:
Предприятие
8.0
К
сожалению программы
для
автоматического
тестирования,
такие как Quick Test Professional
или Rational Robot,
не позволяют
полноценно
производить
функциональное
тестирование
конфигураций
на базе 1С:
Предприятие
8.0.
Для
проведения
автоматического
тестирования
необходимо:
- Возможность многократного запуска тестов с контролем их выполнения
- Возможность описывать последовательность действий по созданию необходимых объектов в ИБ и проверки корректности функциональной логики.
- Возможность такого описания объектов, чтобы в любой (даже пустой) базе, возможно, было их полное автоматическое воссоздание.
- Возможность запуска тестов в режиме отладки для удобного поиска и разрешения возникших проблем в процессе прохождения тестов.
- Возможность создания множественности тестов для накопления базы по всей функциональности конфигураций.
- Возможность единичного описания необходимых объектов и тестов с последующим использованием их в других тестах посредством ссылок.
- Возможность запуска необходимых тестов несколько раз подряд для проведения нагрузочного тестирования или оценки производительности тестируемой функциональности.
Исходя из вышеизложенного был начат проект по созданию комплекса автоматического функционального тестирования в среде 1С: Предприятие 8.0.
На текущий момент созданы две большие обработки – одна для работы по подготовке тестов, вторая для выполнения самих тестов.
Объекты
описываются
так, чтобы
можно было их
воссоздать в
любой базе
изучаемой
конфигурации.
Для этого используется
описание
только
числовых, строковых,
булевых и т.п.
значений
реквизитов,
а ссылочные
типы
(справочники,
документы, счета)
заменены
ссылкой
строкового
типа и поиск
нужного
ссылочного
объекта
осуществляется
по имени в
дереве
объектов или
по наименованию
в текущей
базе (для
простых
тестов).
Само тестирование происходит в единой транзакции для возможности многократного запуска на рабочих базах.
Далее рассмотрим основные формы созданной системы автоматического тестирования.
Консоль подготовки тестов:
Это основная форма по работе над созданием автоматизированных тестов. Оно позволяет описывать объекты, необходимые для тестирования и описывать последовательность действий над объектами. Объекты можно описывать как вручную, так и заполнять из существующих объектов в текущей конфигурации.
Форма описание реквизитов объекта:
В этой форме можно подробно просмотреть и отредактировать все реквизиты описываемого объекта.
Форма ввода нового объекта на основании существующего в базе:
В этой форме можно создать объект(ы) на основании имеющихся в текущей информационной базе.
Отчет, помогающий найти и заполнить объекты, не описанные до этого:
Для запуска подготовленного теста в другой (пустой) конфигурации необходимо, чтобы все объекты были описаны в тесте. Для поиска неописанных объектов и автоматического добавления их в дерево объектов можно воспользоваться этой формой.
Форма запуска тестов:
Это отдельная обработка, служащая для выполнения ранее подготовленных тестов. Она может вызываться автоматически для выполнения регламентных тестов и сохранения протоколов тестирования для дальнейшего их анализа.
Кроме выполнения тестов здесь имеется мощный механизм отладки, позволяющий обнаружить места, в которых возникают ошибки при прохождении тестов.
Для проведения нагрузочных тестов, а также замера производительности можно установить кол-во повторов выполнения всех тестов.
При запуске тестирования в единой транзакции выполняются все действия тестов. При этом все объекты создаются с открытием форм и заполнения данных именно в форме – тем самым максимально приближаясь к действиям предполагаемых пользователей.
Форма хода выполнения действий тестов:
Процесс выполнения действий тестов можно наглядно наблюдать на прикрепляемом окне слева, где отображается текущее действие, прогресс и кол-во секунд, затраченное системой на выполнения каждого действия.
Форма точки останова:
Для отладки можно поставить точку останова на любом действии теста и в модальном режиме просмотреть объекты, которые создал тест на текущий момент, а также любые справочники, документы, отчеты и обработки до момента пока не закончился тест и не закрыта транзакция. Также можно открыть форму объекта после его создания, например, для анализа созданных движений документом.
Протокол тестирования:
После выполнения всех тестов можно вывести и сохранить единый протокол тестирования.
Также результаты прохождения каждого теста фиксируются в настройках теста (дата и результат) и последние данные могут быть просмотрены как в обработка по тестированию, так и в обработке по подготовке тестов.
Данная система должна использоваться отделом разработки и тестирования совместно и позволяет:
- Проводить тестирование в процессе разработки, а не только после предполагаемого окончания разработки.
- Повысить скорость разработки
- Существенно сократить время тестирования
- Избежать ручного тестирования блоков, которые не должны были быть затронуты, но есть опасность, что функционал может быть нарушен (снизить риски возникновения наведенных ошибок).
- Постоянно пополнять базу тестов тем самым иметь все больше средств для предотвращения появления ошибок в уже созданных блоках и более быстрой разработки за счет возможности быстрой оценки влияния новых изменений на существующий функционал.
Проблемы, которые не удалось разрешить средствами конфигурации:
- Невозможность программного вызова стандартных обработчиков изменения данных в форме.
- Невозможность автоматического привязывания к тестам результатов замера производительности для определения таких параметров, как коэффициент покрытия кода тестом.
-
Невозможность
отслеживания
интерактивных
действий
пользователя
внутри
конфигурации
для
наглядного
составления
последовательности
действий для
тестов.
PS:
На текущий
момент система
еще требует
доработки, но
она уже делает
то, для чего
проектировалась
– созданы и уже
работают
реальные
тесты по
большому функциональному
тестированию
разрабатываемого
механизма,
при котором создаются
все
необходимые
объекты и
проводиться
тестирование
всей цепочки
цикла
продажи от
заказа покупателя
до его
реализации
включая
корректировки
и закрытие
заказов.
Любое
внесение
преднамеренной
ошибки сразу
же
проявляется
при тестировании.
Это только начало построение глобальной системы по автоматическому тестированию в среде 1С: Предприятие 8.0.