Rozwój oparty na testach jest podobny do projektowania na podstawie umowy, w którym istnieją warunki wstępne, niezmienniki i warunki dodatkowe.
Termin został ukuty przez Bertranda Meyera w związku z jego projektem języka programowania Eiffel i po raz pierwszy opisany w różnych artykułach od 1986 roku [Wikipedia]
Metody formalne pochodzą z co najmniej 1983 r. I zostały zastosowane w systemach o krytycznym znaczeniu dla bezpieczeństwa, takich jak pozbawione kierowcy metro w Paryżu, wykorzystujące metodę B.
W pierwszej i najbardziej abstrakcyjnej wersji, która nazywa się Abstract Machine, projektant powinien określić cel projektu. [Wikipedia]
Mogą to być niektóre z rzeczy, z których Kent Beck „pomógł pionierowi… ponowne odkrycie programowania w pierwszej kolejności”.
Co więcej: najwyraźniej projekt Mercasa z początku lat 60. XX wieku był pierwszym projektem oprogramowania wykorzystującym programowanie testowe i inne zwinne praktyki. Nie mogłem znaleźć żadnej wczesnej dokumentacji, ale oto raport z 2003 roku, który cytuje komunikację członków projektu:
Projekt Mercury przebiegał z bardzo krótkimi (półdniowymi) iteracjami, które były ograniczone czasowo. Zespół programistów przeprowadził przegląd techniczny wszystkich zmian i, co ciekawe, zastosował praktykę programowania ekstremalnego, polegającą na opracowywaniu testów, planowaniu i pisaniu testów przed każdym mikrostrementem.
Reszta raportu jest również interesująca, mówi dalej:
Najwcześniejsze znalezione przez nas odniesienie, które koncentrowało się na opisie i rekomendowaniu iteracyjnego rozwoju, to raport Briana Randella i FW Zurchera z IBM TJ Watson Research z 1968 r.
Oprócz zautomatyzowanych testów raport z 1968 r. Zaleca kodowanie równoległe i testowanie, jeśli nie najpierw test:
sol. Szczegółowy projekt, kodowanie i dokumentacja każdego bloku programu.
h. Projektowanie i dokumentowanie metod testowania dla każdego bloku programu równolegle z krokiem (g).