Разработка через тестирование аналогична разработке по контракту, в которой есть предварительные условия, инварианты и постусловия.
Термин был придуман Бертраном Мейером в связи с его дизайном языка программирования Eiffel и впервые описан в различных статьях, начиная с 1986 года [Wikipedia]
Официальные методы датируются как минимум 1983 годом и используются для критически важных систем безопасности, таких как парижское метро без водителя, с использованием B-метода:
В первой и самой абстрактной версии, которая называется Abstract Machine, дизайнер должен указать цель дизайна. [Википедия]
Это могло быть некоторыми из вещей, из которых Кент Бек "помог пионеру ... повторному открытию программирования для тестирования".
Более конкретно: очевидно, что проект Mercury, созданный Nasa в начале 1960-х годов, был первым программным проектом, использующим разработку через тестирование и другие гибкие методы. Я не смог найти какую-либо раннюю документацию, но вот отчет 2003 года, в котором цитируются сообщения участников проекта:
Проект Mercury выполнялся с очень короткими (полдневными) итерациями, которые были ограничены по времени. Команда разработчиков провела технический обзор всех изменений и, что интересно, применила практику экстремального программирования: сначала разработка, планирование и написание тестов перед каждым микроинкрементом.
Остальная часть отчета тоже интересна, далее говорится:
Самым ранним упоминанием, которое, как мы выяснили, было сосредоточено на описании и рекомендации итеративной разработки, был отчет 1968 года Брайана Рэнделла и Ф.В. Цурчера из IBM TJ Watson Research.
В дополнение к автоматизированному тестированию, отчет 1968 года рекомендует параллельное кодирование и тестирование, если не тестирование в первую очередь:
грамм. Рабочий проект, кодирование и документация каждого программного блока.
час Разработка и документирование методов испытаний для каждого программного блока параллельно с этапом (g).