How TDD is More Than Simply Unit Testing
I was recently asked about the difference between unit-testing and Test-Driven Development (TDD). Specifically, why—if the end results are the same—would I recommend TDD over writing unit tests after...
View ArticleGood Design
I’ve learned not to assume a team has experienced a variety of software design skills. Some are writing elegant functional-paradigm code in archaic, challenging languages. Others are writing...
View ArticleGood Design, Part II: Code Smells
Last month we talked about good software design and introduced the notion of code smells. Code smells are names given to those instinctual thoughts you have whenever you look at a chunk of...
View ArticleGood Design, Part III: Refactoring
Remember this? public static ProductBean installProduct(String p) { ProductBean pi = new ProductBean(p); Connection c = new Connection("$Updates"); for (Record x : c.getAllForKey("PLUG_INS",...
View ArticleGood Design, part IV: The Role of Tests
We’ve seen how refactoring becomes the primary design activity on an Agile team. Diligent, confident refactoring is possible to the degree that the code is tested through an automated test suite. If...
View ArticleSharpen Your Knives
You’ve heard the old adage about the lumberjack who—in order to cut a tree in an hour—will take 45 minutes to sharpen the saw? This old analogy really needs updating: Not many of us are all that...
View ArticleTechnical Debt Isn’t Really a Metaphor
Many years ago, Ward Cunningham posted an excellent video on YouTube regarding refactoring and “debt”. If you haven’t seen it, I have it for you, below. But is “Technical Debt” simply a metaphor, or is...
View ArticleWhy Unit Test-Driven Development is Important
People have written a ridiculous amount about the advantages of test-driven development. I won’t even bother linking to articles about it, just Google it and you’ll see about a million hits. What...
View ArticleTesting to find defects is waste
Have you ever heard someone say that testing to find defects is waste? I’ve heard it and I’ve said it when teaching courses. But people aren’t hearing the whole message!The other half of the message...
View ArticleAgile Architecture and Agile Testing – New Courses on the horizon
Exciting news! Some associates of mine are currently completing work on some new courses Agile For All will be able to offer. The two courses are Agile Architecture and Agile Testing. In fact, it is...
View ArticleReal World Agile Testing with Fit and FitNesse
Another short blog entry. This time it is to announce that we’ll be hosting Rob Myers teaching a great agile testing course using Fit and FitNesse on March 23 and 24. The course will be held at the...
View ArticleWhen in Doubt Ask “How Will I Know I’ve Done That?”
Tired of not knowing exactly what to create or test? Get in the habit of asking the magic question “How will I know I’ve done that?” In other words, ask the Product Owner (or whatever person you have...
View ArticleAgile antipattern: Using manual tests
In an agile environment manual testing is fine – except for when it isn’t! In particular, everyone recognizes manual regression testing takes time. When using a traditional development process...
View ArticleAgile antipattern: Code freezes during each iteration
Over the past 18 months I’ve encountered a number of teams where it is standard practice to have a code freeze late in the iteration. The reason given for this was “to allow QA to test what we created...
View ArticleAgile anti-pattern: Going to longer iterations
This is another common theme among teams just starting with agile. It usually goes something like this: The team has an unsuccessful iteration. They determine all the unfinished work is testing....
View Article