Комментарии 1
А можно задать пару-тройку недоумённых вопросов?
Можно ли разрабатывать приложения таким образом, чтобы тесты были бы изначально встроенными в приложения? Это означает, что каждый элемент модуля и каждый модуль изначально обеспечиваются системой тестирующих алгоритмов, как это делается в аспектном программировании.
Почему приложение на этапе тестирования и приложение на этапе эксплуатации должны быть, по сути, одним и тем же приложением? Кажется более логичным мыслить приложение на этапе разработке как имитационную модель, в то время как приложение на этапе эксплуатации — это уже результат отображения имитационной модели на конкретный язык программирования и вычислительную архитектуру.
Если говорится, что "диалог является ключом ко всему", то не означает ли это, всё-таки, необходимость предварительного описания различных аспектов функционирования приложения ещё до всякого программирования? Ведь, если мы будем расписывать элементарные примеры взаимодействий (предметных ситуаций), то мы будем, разумеется, искать наиболее простые и надёжные способы взаимодействия, то есть — такие способы, которые хорошо поддаются описанию и тестированию (или, можно сказать, являются самотеструемыми или корректными по своему построению). Вряд ли можно ожидать, что произвольный набор способов взаимодействия будет корректным образом запрограммирован и протестирован.
Боремся за тестируемость: избавляемся от антипаттернов с помощью диалога