Есть разработанная программа, которая состоит из модулей. Все модули в какой то степени покрыты Юнит тестами. Один модуль может обрабатывать информацию, делать какие то расчеты и передавать на вход другому модулю. То есть получается, что модули находятся в некоторой зависимости.
Программу передается заказчику и он хочет разрабатывать свои модули. В связи с этим возник вопрос: какая можно сделать так, чтобы заказчик дорабатывал программу и своими новыми модулями не сломал существующую систему?
В голове только вертится один большой тест (но это накладно по времени и поддержке актуальности тестов), но может быть существует другие какие-то варианты?
Почему новый модуль должен сломать программу через другие модули? Он их будет использовать? Взывать их код? А этот код разве не проверяет то с чем его просят работать?
Станислав Казанин: Потому что модули вызываются в виде цепочки. Например 1 модуль получает входные данные и выполняет специфичные операции, полученная информация передается на вход 2 модулю и так до конца. Цепочка может состоять из нескольких модулей. Вопрос заключается в том, что разработанный заказчиком модуль, может быть вставлен в произвольное место (заказчик опустим хочет добавить специфические операции) до передачи во второй модуль. Код не проверяет с чем его просят рабоать, так как структура входных данных меняется.
Не вводи в заблуждение. Наличие тестов однозначно необходимо, но поддержание тестов != стабильности софта. Поддержание тестов = стабильность софта в протестированных случаях.
тесты это конечно хорошо. Но допустим такая ситуация: заказчик разработал модуль, покрыл его тестами. И дает мне и говорит проверяй: как мне быть уверенным что при взаимодействии разработанного модуля у меня не сломаются другие? Вот главный вопрос
если система имеет интерфейсы и новый функционал строится используя имеющиеся интерфейсы, то "сломать" систему невозможно. Интерфейсы на то и интерфейсы. https://habrahabr.ru/post/30444/
Ваша задача - гарантировать неизменность интерфейсов. Для этого нужно код покрыть юнит-тестами, которые бы указывали разработчикам если рефакторинг нарушает существующий интерфейс. Еще есть конечно опасения, что не имея представления об имеющихся функциях будут строить велосипед рядом. Но тут нужно предоставить документацию.