Unit-test
March 2, 2021

Unit и Интеграционные тесты

Ниже собраны итоговые выводы по пирамиде тестирования, применительно к решениям 1С:

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

Приходим к выводу, что для тестирования решений на платформе 1С:Предприятие 8.3 больше подходит такая модель пирамиды тестирования, по-другому кубок тестирования.

Заметка по теме: Unit-test Попытка №2