> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/ru/1_developer_primer_intro/1-testing-expectations.md).

# Ожидания от тестирования

На этой странице описано, чего мы ожидаем при тестировании нового кода, добавляемого в Dynamo.

Итак, у вас появился новый узел, который нужно добавить. Замечательно! Пришло время добавить несколько тестов. Есть две причины, чтобы делать это.

1. Это помогает выявить проблемы в коде.
2. Когда кто-то другой вносит какие-либо изменения, которые нарушают работоспособность вашего узла, это также должно отразиться на тестах. Таким образом, человек, который сделал тесты неработоспособными, должен исправить это. Если с тестами все в порядке, то проблема в значительной степени связана с пользователями, чьи модели оказались неисправны.

Тесты в Dynamo бывает двух основных типов: модульные и системные.

## Модульные тесты

Модульные тесты должны быть как можно более специализированными. Если вы создали узел, вычисляющий квадратные корни с помощью узла Zero Touch C#, тестироваться должна только конкретная библиотека DLL и узел C# должен вызывать непосредственно этот код. Модульные тесты даже не должны включать Dynamo.

Они должны включать следующее:

* положительные тесты (правильное поведение);
* отрицательные тесты (не выводятся ошибки при наличии лишнего во вводе);
* регрессионные тесты (при обнаружении ошибки в коде напишите тест, чтобы убедиться, что она не повторится).

Такие тесты должны быть небольшими, быстрыми и надежными. Большинство тестов должны быть модульными.

## Системные тесты

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

Почему? Их выполнение достаточно ресурсоемкое. Необходимо поддерживать выполнение набора тестов с минимально возможной задержкой.

При написании системного теста первое, что нужно сделать, это обратиться к [этой](https://github.com/DynamoDS/Dynamo/blob/master/doc/system/Layer%20Diagram.pdf) диаграмме и выяснить, какие подсистемы вы охватываете.

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

Примеры элементов, для которых требуются системные тесты:

* новый тип узла Revit, который сохраняет в трассировке несколько элементов, а не один элемент;
* новый узел просмотра, отображающий данные по-разному.

Примеры элементов, для которых не требуются системные тесты:

* новый узел математических вычислений;
* библиотека обработки строк.

Системные тесты должны:

* констатировать правильное поведение;
* констатировать отсутствие патологических форм поведения, например отсутствие исключений.
