Розробка тестових програм схожа на розробку за контрактом, де у вас є передумови, інваріанти та постумови.
Термін був введений Бертран Мейєром у зв'язку з його дизайном мови програмування Ейфеля і вперше описаний у різних статтях, починаючи з 1986 року [Вікіпедія]
Офіційні методи датуються щонайменше 1983 роком і застосовуються для критично важливих для безпеки систем, таких як Паризьке метро без водія, використовуючи метод B:
У першій і найбільш абстрактній версії, яка називається абстрактною машиною, дизайнер повинен вказати мету дизайну. [Вікіпедія]
Це можуть бути деякі речі, з яких Кент Бек "допоміг піонеру ... знову відкрити тестування першого програмування".
Більше того: Очевидно, що проект Nasa на початку 1960-х років Меркурій був першим програмним проектом, що використовував тестові розробки та інші спритні практики. Я не зміг знайти жодної ранньої документації, але ось звіт про 2003 рік, який цитує повідомлення учасників проекту:
Проект "Меркурій" проходив з дуже короткими (південними) ітераціями, які були вичерпані. Команда розробників провела технічний огляд усіх змін і, що цікаво, застосувала практику Екстремального програмування тестування перших розробок, планування та написання тестів перед кожним мікроприрістком.
Решта доповіді теж цікава, вона продовжує говорити:
Найбільш рання посилання, яку ми виявили, що спеціально зосереджена на описі та рекомендації ітеративної розробки, була доповіддю Брайана Ренделла та Ф. В. Цурчера в 1968 році в дослідженні IBM TJ Watson.
На додаток до автоматизованого тестування, звіт 1968 року виступає за паралельне кодування та тестування, якщо не тест-перше:
г. Детальне проектування, кодування та документація кожного програмного блоку.
год. Проектування та документування методів тестування для кожного програмного блоку паралельно кроку (g).