|
|
|
|
|
by cgopalan
4487 days ago
|
|
Thanks for your input. It does seem difficult to find projects that have been successful in the public sphere that have solely adopted TDD as a design method (besides junit and fitnesse, which seem to be somewhat simple solutions to simple problems). Strangely, it might be the case that programmers who have used some form of red-green-refactor TDD have realized its shortcomings, and are not eager to present that publicly, and also recognize that it cant be set in stone as the one true method to write correct code. Maybe its time I stopped trying to research more about TDD, and just conclude that what works for writing correct programs is what has always been the workflow: 1. Spend time analyzing the problem. 2. Come up with an algorithm based on similar problems or something that makes sense to the programmer. 3. Ensure that there are tests to verify it. 4. Implement the algorithm(s). 5. Change code and tests iteratively based on more analysis. |
|
"and are not eager to present that publicly"
I think http://lizkeogh.com/2012/06/24/beyond-test-driven-developmen... is a good expression of that. The author used TDD as a way to understand how to develop testable software, but then writes "Here’s a confession: I don’t always write my tests first. I often don’t automate scenarios up-front either. And I consider it right for me not to do so."
I found that page because I wanted to give an example of "Spike and Stabilize", which is an alternate to TDD more along the lines of what I do.
Your question has inspired me to write a follow-up to that 2009 essay. The main point will be that TDD is not that appropriate for non-functional testing. Beck's original definition is that everything can (and should) be structured around TDD. There are any number of quotes which use a weaker point; use TDD plus other techniques, but not TDD alone.
For just one of many examples, see http://disciplinedagiledelivery.wordpress.com/2012/10/23/str... .
That link is interesting because it highlights the importance of a QA group in agile, but calls it "parallel independent testing" or "test team" rather than the traditional name of "QA".