Test-driven development (TDD) – technika tworzenia oprogramowania, zaliczana do metodyk zwinnych. Pierwotnie była częścią programowania ekstremalnego (ang. extreme programming), lecz obecnie stanowi samodzielną technikę[1]. Polega na wielokrotnym powtarzaniu kilku kroków[2]:
Można jej też używać do poprawiania istniejącego kodu.
Technika została ponownie odkryta przez Kenta Becka i opisana w książce „Test Driven Development: By Example” z 2002 roku (polskie tłumaczenie „TDD. Sztuka tworzenia dobrego kodu”[3]). Jej inspiracją była książka dotycząca testowania programów do obsługi listy płac na taśmach, którą czytał w dzieciństwie[4.1]. Testów przed TDD używali także programiści podczas programu Mercury[5]. TDD powstało jako kontynuacja pracy Becka nad testowaniem oraz późniejszym programowaniem ekstremalnym[4.2].
Programowanie techniką test-driven development wyróżnia się tym, że najpierw programista zaczyna od pisania testów do funkcji, która jeszcze nie została napisana. Na początku testy mogą nawet się nie kompilować, ponieważ może nie być jeszcze elementów kodu (metod, klas), które są w testach użyte.
Na początku zaczyna się od przypadku, który nie przechodzi testu – zapewnia to, że test na pewno działa i może wyłapać błędy.