Software
Software
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Cell Phone Software Forum
What to teach about TDD?

 
Post new topic   Reply to topic    Software Forum Index -> Software
View previous topic :: View next topic  
Author Message
Roy Smith
Guest





PostPosted: Thu Apr 26, 2007 6:40 am    Post subject: What to teach about TDD? Reply with quote

I'm thinking of giving a lunchtime talk to my development group on the
topic of how to write good unit tests, with a slant towards Test Driven
Development. My dilema is not what to include, but what to leave out.

These talks are typically 45-60 minutes followed by 15-30 minutes of Q&A.
That's not a lot of time, so the trick here will be figuring out what are
the really essential core topics that MUST be covered, and what can be left
out or glossed over. Any suggestions?

The primary audience is going to be C++ and Java developers (I do C++), but
I expect there will be some QA/QE people mixed listening as well.
Back to top
  Ads
Advertising
Sponsor


Guest






PostPosted: Thu Apr 26, 2007 9:38 am    Post subject: Re: What to teach about TDD? Reply with quote

"Roy Smith" <roy@panix.com> wrote in message
news:roy-A48ACB.22404425042007@032-325-625.area1.spcsdns.net...
Quote:
I'm thinking of giving a lunchtime talk to my development group on the
topic of how to write good unit tests, with a slant towards Test Driven
Development. My dilema is not what to include, but what to leave out.

These talks are typically 45-60 minutes followed by 15-30 minutes of Q&A.
That's not a lot of time, so the trick here will be figuring out what are
the really essential core topics that MUST be covered, and what can be left
out or glossed over. Any suggestions?

The primary audience is going to be C++ and Java developers (I do C++), but
I expect there will be some QA/QE people mixed listening as well.

Be sure to provide a balanced perspective. That is, point out the limitations

of TDD as well as its benefits.

Richard Riehle
Back to top
  Ads
Advertising
Sponsor


Roy Smith
Guest





PostPosted: Thu Apr 26, 2007 3:31 pm    Post subject: Re: What to teach about TDD? Reply with quote

<adaworks@sbcglobal.net> wrote:
Quote:
Be sure to provide a balanced perspective. That is, point out the
limitations of TDD as well as its benefits.

A reasonable suggestion. I've been around the block enough times to know
that everything has limitations, but I'm curious which specific ones you
think are worth mentioning in a 45 minute intro talk?
Back to top
  Ads
Advertising
Sponsor


Phlip
Guest





PostPosted: Fri Apr 27, 2007 4:22 am    Post subject: Re: What to teach about TDD? Reply with quote

Roy Smith wrote:

Quote:
adaworks@sbcglobal.net> wrote:
Be sure to provide a balanced perspective. That is, point out the
limitations of TDD as well as its benefits.

A reasonable suggestion. I've been around the block enough times to know
that everything has limitations, but I'm curious which specific ones you
think are worth mentioning in a 45 minute intro talk?

An important concept here is "don't say that which you must then redact."
Don't say some soap gets dishes "spotless" if you must then say "virtually
spotless", to avoid a lawsuit over a single spot.

Don't mention benefits. Don't say "TDD prevents bugs" if you must then say,
"If you also frequently iterate and constantly deploy and constantly review"
etc. etc. That allows you to avoid mentioning the limitations, so neither
topic will waste time. Just get to "write simple tests, then write simple
code to pass them, then refactor under test, and repeat until done".

If anyone asks what the benefits are, just say "TDD produces code that
strongly resists bugs".

--
Phlip
http://flea.sourceforge.net/PiglegToo_1.html
Back to top
  Ads
Advertising
Sponsor


Guest






PostPosted: Fri Apr 27, 2007 10:01 pm    Post subject: Re: What to teach about TDD? Reply with quote

"Roy Smith" <roy@panix.com> wrote in message
news:roy-981EB3.07314726042007@032-325-625.area1.spcsdns.net...
Quote:
adaworks@sbcglobal.net> wrote:
Be sure to provide a balanced perspective. That is, point out the
limitations of TDD as well as its benefits.

A reasonable suggestion. I've been around the block enough times to know
that everything has limitations, but I'm curious which specific ones you
think are worth mentioning in a 45 minute intro talk?

Someone once noted that "every political system contains the seeds of

its own destruction." This is also true of good ideas. As you note,
every good idea also has its limitations. Another way of saying that
is that every new set of solutions introduces a new set of problems.

TDD does have a lot to offer as one facet of the software evaluation process.
However, by itself, it is not sufficient.

One of the most important tasks in any engineering process is failure analysis.
The software evaluation activity has the goal of failure prevention, as much as
product feature success. TDD can test for product features, but it falls short
of dealing with failure prevention.

Every engineered product, whether software or physical, has places where failure
can occur, often as a natural consequence of the design. Failures occur for
many
reasons. A central cause of failure is related to the interaction of the
components,
not to their individual defects. Therefore, we must identify potential points
of
failure in the design, and incorporate controls to mitigate the effect of an
identified
stress point, or prevent those failures from occurring at all.

A child, stacking one block on top of another, is working with perfectly good
blocks.
They are small cubes, usually flat enough to allow the stacking of four or five
without
much difficulty. Once the stack gets as high as ten blocks we notice an
increase in
instability. There is nothing intellectually incorrect in the child's
reasoning about the
stacking of blocks. He ought to be able to stack them twenty feet high. His
initial
test of five blocks indicates that this is so.

In software, a system with a few features, or a few components, is easy to test,
and
the relationships between those components will seem to forecast that we can
easily
add more without much trouble. We can test these as we go. After several
tests,
we may conclude that the entire production is stable and pronounce it "Good."
However, there may continue to stress points in the design that have not
revealed
themselves in any of the series of tests we have concocted. The more complex
the design, the more probable it becomes that those stress points are activated.

TDD is a perfectly good idea, but an incomplete idea. It is naive for anyone to
think that this practice will ensure the absence of failure in the final
software
product. Yet it is foolish for anyone to decide that, because it does not
detect
every kind of potential failure, that is not important. TDD is a tool. We
need
multiple tools for the evaluation of a software system, but this tool can be
effective as one part of that evaluaton process.

Richard Riehle
Back to top
  Ads
Advertising
Sponsor


Display posts from previous:   
Post new topic   Reply to topic    Software Forum Index -> Software All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Australian Debt Consolidation Experts
medical insurance
Wedding Invitation
Escort, massaggiatrici e accompagnatrici a Modena, Bologna, Parma, Brescia, Vicenza ...
New Zealand Swingers Contacts
Personal Finances
cheap life insurance
Make Your Own Website
Free and Cheap International Calls
Cleaning Service
toxic mold
UK Swingers Genuine Contacts Site
Porn Links
office equipment
Sex
bissell Vacuum parts



Board Security

208 Attacks blocked

Powered by phpBB © 2001, 2005 phpBB Group