Unit-test
March 2, 2021
Unit и Интеграционные тесты
Ниже собраны итоговые выводы по пирамиде тестирования, применительно к решениям 1С:
- В решениях 1С очень мало кода, который можно тестировать изолировано. Большая часть кода не предназначена для вызова без базы данных. В общем случае нужно приложить усилия чтобы создать тестируемый код, а затем его поддерживать. Канонический подход unit-тестирования можно ограниченно применять, но для этого нужно менять подходы к разработке.
- Тестирование методов базы данных или операций CRUD является бессмысленной операцией, т.к. всю работу на себя берет платформа. Тестировать нужно функционал конфигурации. Наиболее близким аналогом к тестированию базы данных можно назвать вызов объектных методов - СоздатьДокумент, СоздатьЭлемент, Записать, Удалить. При этом будут вызываться события Модуля объекта и связанные с ним процедуры и функции. Для справочников это как правило контрольные процедуры, а для документов еще и выполнение движений. Поэтому целесообразно использовать запись документов с проверкой движений.
- Тестирование решений 1С невозможно без подготовки тестовых данных и тестовых баз. Создание и поддержание эталонных баз является сложным процессом, как технически, так и организационно. Наиболее оптимальным является подход с начальной тестовой базой и созданием каждым сценарием "уникальных" тестовых данных в процессе своего выполнения. Начальной тестовой базой может служить демо-база типового решения, которое дорабатывается.
- Описание тестовых данных лучше хранить вместе кодом сценария. Это упрощает понимание кода сценария. Не нужно терять время на поиск артефактов с описанием данных.
- Любой тестовый сценарий можно схематично представить в таком виде:
1. Создание новых и/или подбор существующих тестовых данных в базе для сценария
2. Выполнение шагов сценария
3. Проверка результатов выполнения сценария - Удаление созданных тестовых данных не нужно, т.к. при правильном их использовании они не влияют на выполнение тестовых итераций.
Приходим к выводу, что для тестирования решений на платформе 1С:Предприятие 8.3 больше подходит такая модель пирамиды тестирования, по-другому кубок тестирования.
Заметка по теме: Unit-test Попытка №2