Lo sviluppo guidato dai test è simile alla progettazione per contratto, in cui sono presenti precondizioni, invarianti e postcondizioni.
The term was coined by Bertrand Meyer
in connection with his design of the
Eiffel programming language and first
described in various articles starting
in 1986 [Wikipedia]
I metodi formali risalgono almeno al 1983 e sono stati utilizzati per sistemi di sicurezza critici come la metropolitana parigina senza conducente con il metodo B:
In the first and the most abstract
version, which is called Abstract
Machine, designer should specify the
goal of the design. [Wikipedia]
Potrebbero essere alcune delle cose da cui Kent Beck "ha aiutato a fare il pioniere ... la riscoperta della programmazione prima del test".
Più precisamente: Apparentemente il Progetto Mercury della Nasa degli inizi degli anni '60 è stato il primo progetto software che utilizzava lo sviluppo basato sui test e altre pratiche agili. Non sono riuscito a trovare alcuna documentazione iniziale, ma ecco un rapporto 2003 che cita la comunicazione dei membri del progetto:
Project Mercury ran with very short
(half-day) iterations that were time
boxed. The development team conducted
a technical review of all changes,
and, interestingly, applied the
Extreme Programming practice of
test-first development, planning and
writing tests before each
micro-increment.
Anche il resto del rapporto è interessante, continua dicendo:
The earliest reference we found that
specifically focused on describing and
recommending iterative development was
a 1968 report from Brian Randell and
F.W. Zurcher at the IBM T.J. Watson
Research.
Oltre ai test automatizzati, il rapporto del 1968 sostiene la codifica parallela e test, se non test-first:
g. Detail design, coding and
documentation of each program block.
h. Design and documentation of test
methods for each program block in
parallel with step (g).