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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://primer2.dynamobim.org/ru/1_developer_primer_intro/1-testing-expectations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
