Yes, it's true that the term TDD originated with Kent Beck and the Extreme 
Programming crowd and that the narrower, more precise meaning that you are 
favoring is what was intended by these folks.  

But test-first is not the only mechanism available to making testing central to 
development, and it is this centrality that I take to be what Test-Driven is 
all about.  So in this broader meaning, which granted is not necessarily what 
the XP folks had in mind, the ability to and the intention to test drives the 
entire design and development process.  It is a natural extension of at least 
part of what the XP folks were promoting, but with a nod to some of the 
constraining realities of a typical modern development environment, where a 
test-first mentality is often not shared by all the participants who would need 
to embrace it for it to be practiced effectively by a wider development group.

Use of design techniques such as dependency inversion, single responsibility, 
and the other SOLID principles all help build code that is extremely testable 
whether you happen to do it before or after coding and a testing mindset drives 
the entire development process.  So take your pick whether you wish to embrace 
a narrower or wider meaning of the term.  But they do both exist.

Sent from my iPad

On May 26, 2013, at 11:31 AM, "William Tanksley, Jr" <wtanksle...@gmail.com> 
wrote:

> Michael Clagett <mclag...@hotmail.com> wrote:
>> I agree with Alexander, that this is a term that has come to represent a
>> number of different things to different people.
> 
> I don't think that's a good answer. Yes, some people have used Test
> Driven Development to refer to their own personal process that happens
> to use tests; but TDD was originally developed as a component of
> Extreme Programming, and as such there is a clear definition. TDD is
> the subset of XP that can be practiced by a solo programmer.
> 
> Before I discuss this, there's an important question: are there any
> test frameworks for J?
> 
>> Some folks write the tests first before they even write the code being
>> tested, leveraging this idea of a test as a spec using that spec to guide
>> the development of their code.
> 
> That's part of TDD -- without test-first, the development isn't driven
> by the tests, and there's no point in using the name. The most
> essential part of TDD is that you should NOT write a single line of
> code that isn't required in order to make a _failing_ test pass. So in
> order to add a new feature, you start by writing a test that you
> expect to fail -- but you expect to be able to make pass easily. Run
> the test and make sure it fails! Don't skip that step -- better
> programmers than you have been fooled by their own code. Then write
> just enough code to make it pass, and rerun your tests to confirm that
> they do pass. Repeat as needed.
> 
> That's the essential skeleton of TDD. There's some judgement involved,
> and guidance to help you decide where to start; there are also
> automated test runners to help you run your test suite more frequently
> (as yours tests get bigger it gets harder to run them with EVERY
> little change). Those put meat on the bones.
> 
> -Wm
> 
> ------------------------------------------------------------------------------
> Try New Relic Now & We'll Send You this Cool Shirt
> New Relic is the only SaaS-based application performance monitoring service 
> that delivers powerful full stack analytics. Optimize and monitor your
> browser, app, & servers with just a few lines of code. Try New Relic
> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
> _______________________________________________
> Factor-talk mailing list
> Factor-talk@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/factor-talk

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to