В дополнение к вышеупомянутой технике управляемой тестированием разработки (TDD), вы могли бы взглянуть на проектирование по контракту , еще одну технику, в которой, по сути, нужно добавить утверждения в рабочий код для проверки во время выполнения что пункты договора (входные данные, выходные данные и инварианты) между компонентами соблюдаются. Эти утверждения могут быть удалены или сохранены при поставке программного обеспечения.
Я хотел бы дополнить свой ответ, чтобы прояснить, что TDD приводит не к «программному обеспечению, предназначенному для самостоятельного тестирования», а к некоторому программному обеспечению - пакету модульных тестов, дополненному производственным кодом, который тестирует другой часть программного обеспечения.