Как я могу пропагандировать модульное тестирование в частном коде?

Как я могу пропагандировать модульное тестирование в частном коде?
Как я могу пропагандировать модульное тестирование в частном коде? - anniespratt @ Unsplash

Я пытаюсь пропагандировать модульное тестирование в своей рабочей группе, но возражение, которое я часто получаю, заключается в том, что оно должно использоваться только для экспортируемого вовне API (который является лишь минимальной и некритичной частью нашей системы), а не для внутреннего и частного кода (который сейчас имеет только функциональное тестирование).

Хотя я считаю, что модульные тесты можно и нужно применять ко всему коду, как я могу убедить в этом своих коллег?

Возможно, ваши коллеги путают настоящие модульные тесты с интеграционными тестами. Если ваш продукт является (или имеет) API, интеграционные тесты могут быть запрограммированы как тестовые случаи NUnit. Некоторые люди ошибочно полагают, что это и есть модульные тесты.

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

  • Покрытие тестов. Измерьте фактический процент покрытия тестами интеграционных тестов. Это проверка реальности для тех, кто никогда не проверял покрытие тестов. Поскольку трудно проверить все логические пути, когда входные данные находятся на нескольких уровнях, покрытие тестов составляет от 20% до 50%. Чтобы получить большее покрытие, вашим коллегам нужно написать настоящие, изолированные юнит-тесты.
  • Конфигурация. Разверните то же самое тестируемое программное обеспечение и, возможно, вы сможете продемонстрировать своим коллегам, насколько сложно запустить их тесты в другой среде. Пути к различным файлам, строки подключения к БД, URL-адреса удаленных сервисов и т.д. -- все это складывается воедино.
  • Время выполнения. Если только тесты не являются настоящими модульными тестами и не могут выполняться в памяти, они будут занимать много времени.

LetsCodeIt, 22 мая 2023 г., 07:44