Friday, December 12, 2008

A Paper on TDD and Karl Popper

G. Concas et al. (Eds.): XP 2007, LNCS 4536, pp. 253–256, 2007.
© Springer-Verlag Berlin Heidelberg 2007
Epistemological Justification of
Test Driven Development in Agile Processes

Francesco Gagliardi
Department of Physical Sciences — University of Naples Federico II
Via Cintia — I-80126 Napoli, Italy


In this paper we outline a methodological similarity between test
driven software development and scientific theories evolution. We argue that
falsificationism and its modus tollens are foundational concepts for both software
engineering and scientific method. In this perspective we propose an epistemological
justification of test driven development using theoretical reasons
and empirical evidences.


Software Testing; TDD; Agile Programming; Epistemology; Falsificationism;
Modus Tollens.

1. Ghezzi, C., Jazayeri, M., Mandrioli, D.: Fundamentals of Software Engineering. 2nd edn.
Prentice-Hall, Englewood Cliffs (2003) (ISBN: 0133056996)
2. Dijkstra, E.W.: Notes On Structured Programming. 2nd edn., T.H.-Report 70-WSK-03,
Technological University Eindhoven, Department Of Mathematics, The Netherlands (1970),
3. Popper, K.R.: The Logic of Scientific Discovery (Translation of Logik der Forschung).
Hutchingson, London (1959)
4. Kaner, C., Falk, J., Nguyen, H.Q.: Testing Computer Software, 2nd edn. John Wiley and
Sons, Chichester (1999) --------------
5. Bach, J.: What software reality is really about. IEEE Computer 32(12), 148–149 (1999),
6. Pettichord B.: Testers and Developers Think Differently. STQE magazine, vol. 2(1), pp.
42-46 (2000), (Url:
Type=ART&ObjectId=506) --------------------
7. Coutts, D.: The Test Case as a Scientific Experiment. (url:
sitewide.asp?ObjectId=8965&Function=DETAILBROWSE&ObjectType=ART) --------
8. Edwards, S.H.: Using software testing to move students from trial-and-error to reflection-inaction.
SIGCSE Bull. 36(1), 26–30 (2004),

-------------------------------------------short quotes

It is proved that an ideal test suite exists for any program, but unfortunately it is
also proved that there is no constructive criterion (i.e. algorithm) to derive a test suite
satisfying that property.

The incomputability of ideal test suite is the primary cause of the existence of several
empirical criteria to define the test suite such as category partition, boundary
analysis, special values detection, an so on.


This firmly links software development to methodologies of natural sciences and to
epistemology, in particular to theory of falsificationism by Popper. And we need to
adopt this perspective if we want to increase the comprehension of methodology and
practice of software development.

In this perspective TDD is the unique ‘scientific’ methodology to develop software
systems because it uses the falsificationism and embraces continuous testing.

Summarizing, the successful of TDD in agile processes is based on the rediscovery
of scientific method.


Anonymous Anonymous said...

Happy New Year.

I am back to active blogging.

There was an interesting debate whether one can do TDD without designing background.

Vikas Kerni

1/02/2009 06:31:00 PM  
Anonymous Anonymous said...

welcome back, I miss you and your comments! survic

1/10/2009 04:16:00 PM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home