Software Development Magazine - Project Management, Programming, Software Testing |
Scrum Expert - Articles, tools, videos, news and other resources on Agile, Scrum and Kanban |
Agile Software Development: TDD - FDD - BDD... Why not PDD?
Gertrud Bjornvig, https://sites.google.com/a/gertrudandcope.com/www/
Introduction
This is a story about snakes - especially Agile snakes, and they are all good. No evil snakes here. If you get confused during the reading you can look for help in the section "Hints for the reader" at the end. If you are still confused you can dig into some of the links in the last section: "Story inspired by". If that doesn't help, try something else. After all, I trust you to be a smart, and agile, human being. Enjoy the story!
Snake Farms
Once upon a time in America there was a happy Smalltalk programmer - let us call him Kentaur. One day Kentaur didn't feel as happy as he used to. A little snake, let us call her Tessie, had entered his paradise. Tessie wanted things to work her way; she introduced many changes that Kentaur felt were unpredictable, false, and beyond his control. It wasn't that Kentaur was afraid of snakes; actually he wanted snakes in his paradise - just as long as they were snakes that he could control. So he pushed Tessie out of his paradise and invited a chameleon snake, Ted, in instead. Ted has this nice ability to change from red to green depending on Kentaur's actions - actions under Kentaur's control. Now Kentaur built a chameleon snake farm, so other programmers like him could enjoy playing with the red-green snakes. It become a whole movement to have a Ted Unit - even the schools for new programmers got a unit of Ted snakes, and it became a fad to be "Ted infected". The measurement of success was easy: if your Ted was green at the end of the day, you have done well - if it was red, you had failed.
While Kentaur belonged to the Smalltalkers tribe, a couple of other guys, we can call them Luck and Code, mainly belonged to the Modelers tribe. What Kentaur and Luck and Code had in common was their love of Objects and of colors, and an inclination for three letters abbreviations consisting of consonants and ending on "DD" where the first D is "Driven" and the second is "Development". Kentaur wanted to honor Ted so he called his snake approach TDD. Luck and Code had a different snake farm where each snake only could have one color, but they had many snakes, each of its own color, that they could use when they built their models. Luck and Code mainly used their snakes themselves. Even within their tribe they didn't have the same success with their many snakes in different colors that Kentaur had with his red-green Ted snakes. Maybe it was because Luck and Code actually were more concerned about the features of their models than the colors. The models were a means to build nice features for other tribes in the world. So Luck and Code also tried to create a snake - Fred - that could carry features for them from beginning to end. To distinguish the feature snakes from the model snakes, each single Fred snake had many colors, so the feature could move from color to color depending on its stage from idea to release.
What they probably didn't know while they were busy with their snake farms was that Kentaur, Luck and Code were not only introducing three-letter abbreviations, they were also, together with a lot of other snake farmers, unwittingly laying the cornerstones for a new tribe: the "Agile" tribe. The Agile tribe went beyond snakes (though some would say that a lot of snake oil has found its way into the agile stream) to extreme sport. Some Agile tribe members just viewed programming as a sport, and others just loved to Sprint. Kentaur took Ted into his new farm of Extreme snakes, and called him Ted-the-First. The Extreme snakes became very popular in the Agile tribe - most of all Ted! So Kentaur started doting more and more on Ted. Now Ted was not only the first, he was the driver. In another farm they liked sport - especially Rugby. They refined the Scrum part of Rugby so no snakes could do it better than them. For a short while the extreme snakes came together with the sport snakes - and that became an extreme sport. In the mean time a third three letter abbreviation was on its way into the Agile tribe: BDD.
BDD didn't come from America, but from the North; let us say it came with the North Wind. The North Wind was a member of the Agile tribe and used to have a Ted snake. But instead of the joyful play claimed by most Ted snake users, the North Wind felt that his snake just led him into one blind alley after another. The North Wind didn't blame the snake itself; he really liked the red-green colors. It was the snake's lack of behavior that worried him. "Behave yourself" the North Wind blew on the snake. But it didn't help. He simply needed another breed of snake that could learn more advanced behavioral patterns. So the North Wind visited a lot of snake farms, not only the farms belonging to member of the Agile tribe, but also farms from older tribes. When he visited the Modeler tribe his attention first went to the colorful snakes at the Luck and Code farm, but they really didn't show any interesting behavior; they could only form nice figures.
The North Wind blew into a hidden corner of the forest and found an almost forgotten snake farm. He got excited. The snakes were demonstrating all kinds of behavior. They could act like wheels, or ropes, or chains. They could climb, jump, and crawl. And they could do all of these in many different ways depending on whether they were a jumper or a rope simulator. The North Wind looked for the owner of the snake farm. Finally he found an old gentleman that welcomed him:
"Nice with a fresh breath from the North. I am a Nordic man myself".
"How come that these wonderful snakes are hidden away like this?" the North Wind asked. "The modern tribes see them as old fashioned and too cumbersome to train. It takes time to get a good snake, and the Agile tribes don't have time. They want it easy and colorful, though I found my snakes much more agile than the colored ones with simple behavior that are so popular" the old man replied in perfect Volvo English.
"What do you call your snakes?" asked the North Wind.
"I call them anvandarfall" said the Nordic man.
"Maybe they just need a better name," the North Wind thought.
He brought along a nice selection of the anvandarfall snakes to the Island where he lived. First he mixed them with the Ted snakes. The North Wind succeeded getting a bit more behavior to the Ted snakes while keeping their red-green ability. Then he went to yet another Agile snake farm. They called their snakes Story Tellers. "A behavioral red-green snake that can tell stories. I can only win!" the North Wind thought while he was shopping for Story Teller snakes. The best thing about the Story Teller snakes were their name, and that they were very easy and handy to keep. Together with the fact that very few people knew what they were supposed to look like, and nobody really expected them to tell stories, the North Wind could just take the ones that he liked best, and bred them with his red-green behavioral snake. Bob was born.
Snake Gathering
The rumors went from farm to farm and from snake to snake: A snake gathering is coming up! An event where there will be no human beings, and only the smartest snakes with most courage would show up. The meeting would take place in the old forgotten ruins on the holy mountain. They came from all directions to meet - with no plan, and with no leader. All sizes, all colors, and from different tribes, but only one snake of each kind had been able to get away.
The snakes from the Agile tribe came first, and they referred to the old rituals of snake gatherings: to utter one's name, a statement, and tribe. A big green snake began the introduction:
"My name is Ted. We drive development with automated tests, a style of development called Test-Driven Development (TDD). I am a member of the Agile tribe"
A strange looking snake in many colors was next:
"My name is Fred. Feature Driven Development (FDD) is an iterative and incremental software development process. I am a member of the Agile tribe"
A smaller green snake that has a restless behavior came last:
"My name is Bob. It is all behavior. I am a member of the Agile tribe, too"
A big black snake came into the circle:
"My name is Mu. I believe that mice taste good. I am a member of the black snake tribe. I don't understand a word of what you're talking about. Please show me".
Mu referred to another old rule of snake gatherings: if a statement wasn't clear the presenter had to show an example.
Ted
Ted turned red and made some hissy flute sounds; three long, and three short. A host of small red earthworms appeared on the ground. They begin to form a complicated pattern:
public static Test suite() {
TestSuite suite= new TestSuite();
suite.addTest(new MoneyTest("testMoneyEquals"));
suite.addTest(new MoneyTest("testBagEquals"));
suite.addTest(new MoneyTest("testSimpleAdd"));
suite.addTest(new MoneyTest("testMixedSimpleAdd"));
suite.addTest(new MoneyTest("testBagSimpleAdd"));
suite.addTest(new MoneyTest("testSimpleBagAdd"));
suite.addTest(new MoneyTest("testBagBagAdd"));
return suite;
}
"Your worms are red like yourself?" Mu said.
"Yes, they will turn green when they run over the right code" Ted replied.
"Can you turn green too?" Mu asked.
"Oh no, I thought I was green now! Am I still red?" Ted cried, "So you still don't understand my statement?"
"No, I am sorry, I don't. But it is very difficult to understand other tribes' beliefs," Mu tried to say in a comforting manner. "Let us see if I can understand Fred better".
Fred
"RED, YELLOW, GREEN, Perform traffic light!" Fred commanded to three colored snakes.
"Hi, stop!" Mu said, "They haven't introduced themselves" referring to another rule of the gatherings; all snakes must introduce themselves.
"My name is RED. We need a Unified Modeling Language (UML). I belong to the Modeler tribe."
"My name is YELLOW. Modeling in color is good. I belong to the Modeler tribe."
"My name is GREEN. Modeling in color with UML is best. I belong to the Modeler tribe, too."
"And now traffic light" Fred said "GREEN, iteration one!"
GREEN bit himself in his tail and raised himself up from the ground in the form of a green ring.
"YELLOW, iteration two", Fred cried. YELLOW turned into a yellow ring, and jumped up on top of GREEN. At last RED jumped on top of YELLOW, and Fred explained:
"Iterations are like repeating actions in circles so you can build something useful in an incremental way. RED, YELLOW, and GREEN just used three iterations to incrementally build a traffic light."
"Well, I can also change form", Mu said, and turned himself into a big ?.
"Very funny..." Fred was insulted. "Can't you see? A traffic light is an important feature for car traffic. And a feature is described in the form <action> the <result> <by|for|of|to> a(n) <object>. So what you just saw was Perform the traffic light of three colored rings."
"And what you saw was Perform the question mark of a black snake" Mu replied. Fred gave up.
Bob
"Bob?" Mu said, trying to sound encouraging.
"Are there any Story Teller snakes around?" Bob asked.
A grey snake with yellow neon spots came out of the dark: "As a Story Teller snake I want Index Cards so that I can write stories on them".
"I guess that was a statement. Name and tribe?" Mu asked.
"As a Story Teller snake I want a name so that I can introduce myself", the neon spot snake replied.
"I am sorry, but the Story Teller snakes don't have any names. There are too many of them. We can call him Spot" Bob suggested.
"As Spot I want membership in the Agile tribe so I can belong", Spot said.
"Those kind of Story Teller snakes can express themselves in only one form," Bob apologized. "But you can consider them to belong to the Agile tribe."
"Spot, maybe you have a good traffic light story", Mu tried to help Bob out.
"As a pedestrian I want a traffic light so that I can cross the road without being hit by a car", Spot chanted. "That's the most exciting story I have heard in months", Mu mumbled ironically. "It is all about behavior, was your statement, Bob, right? So where's the behavior?" Mu tried to get a bit more action out of the situation.
"For the behavior part I need help from another snake", Bob said. "Any test scenario snakes hiding here?" A little anonymous snake glided silently into the circle: "Given my name is Sean and I am among Agile snakes, when I introduce myself I say Agile is great and tell that I belong to the Agile tribe".
"Thanks Sean. Can you give us a example scenario for the traffic light, please?" Bob knew that test scenario snakes could be sarcastic, so he tried to be polite.
"Given the traffic light is green, when I cross the road, then I do not end up flat as a long pancake" Sean replied with a little smile. "Finally a snake with a bit of personality," Mu thought, wondering if there were are any other around that could contribute to the party.
Rex, Dennis, DAD, Dory, Mary, Peter, Bobby, Rick, Rebekka, and Christian
"Who else do we have out there?" Mu called. They came from all directions, not two of them looked alike and they begin to introduce themselves:
"I am Rex. Requirements are king. I belong to the Requirement Management tribe, and we believe in RDD."
"My name is Dennis. You cannot do without Data. I belong to the Database tribe, and we believe in DDD".
"My name is DAD. Dennis is a fake snake - and real DDD is fun. We believe in Data Driven Development, and I belong to the game tribe". The introduction came from a good-sized snake decorated as one big storyboard. The other snakes flocked around DAD to read him better, so they didn't noticed the other little grey snake coming in from the dark:
"My name is Dory. Dennis is right; data is more stable than functions. I belong to the OO tribe where we are very few left that believe in DDD.
"I am Mary. The Model is the system. I am affiliated with the Modeler tribe, and we believe in MDD."
"My name is Peter. Prototyping is the only way. I belong to an ancient tribe: The Prototype tribe, and we believe in PDD."
"My name is Bobby. Business drives everything. I belong to the RUP (don't ask!) tribe and we now believe in BDD (please don't confuse me with Bob and Behavior - though we once upon a time believed in a Use Case driven approach!)"
"I am Rick. It is all about controlling risks. I belong to the Project Management tribe, and we believe in RDD."
"I am Rebekka. Responsibility is the key. Like Dory, I belong to the OO tribe, and I believe in Responsibility-Driven Design".
"Why don't you say RDD like Rick and Rex do?" Mu asked
"Given Rebekka said RDD, when I test it, then Rain Drop Design should be false", Sean was on the scene again.
"Yes, and Role-Driven Development should make me red", Ted tried to get back into the circle. So did Spot: "As a Role, I want Drive so I can Develop".
Mu ignored Spot and asked Ted: "Why do you call it Test-Driven Development and not Test-Driven Design?" Ted first turned red, and then green: "It is true that Test-Driven Design would have been more correct. We didn't define tests first for the concept. It could have helped us to know whether TDD should be a strategy for testing or for designing or for development. Actually we never tested it before it was launched."
Mu got bored, and his attention went to an elegant light blue snake with a black head that lied on a big rock outside the circle of snakes. "Welcome to this gathering" Mu said, "You look different. Who are you?"
My name is Christian. Poor people are assets and partners in the development process. We believe in Community-driven development (CDD). I am a member of the World Bank tribe - and I don't think my tribe belong to this gathering."
"But you are the first snake to mention People" Mu exclaimed, "Why doesn't anybody else mention People? After all, it isn't Snake Driven Development (SDD), but People Driven Development, right?"
"I like the power it gives us" Rick said "and People Driven Development would require that the People take responsibility themselves. Now they can blame us when things go wrong".
"And PDD is already taken by us", Peter said.
"Given PDD means People Driven Development, when Prototype-Driven Development is entered, then Bob turns red" Sean couldn't help to come back.
Bob did turn red, but took the chance to get the last word: " People Driven Development would require that the snake farmers could work together - even across tribes. I think we snakes are much more collaborative and easy to train than any people. We should enjoy our big influence!" Bob turned green again.
"I also think I showed up to the wrong gathering", Mu said for himself, "I will go out and catch some mice." He snuck away while other snakes were introducing themselves: "... resume driven development..." "asshole driven development..."
And while Mu is getting Mice we will also leave the Gathering, and wonder about what snake farms we will see in the future.
Hints for the reader
TDD: Test-Driven Development
BDD: Behavior-Driven Development
FDD: Feature Driven Development
Kentaur: In English Centaur. According to Harry Potter: a good and friendly creature that you do not hurt
Tessie: User Interface (UI) test
Ted: Unit Test Framework
Fred: Feature-driven
Bob: Behavior-driven
Snake oil into the agile stream: This is an advanced allusion that targets well-read readers - especially readers of cartoons like Lucky Luke where snake oil is sold in small bottles, can cure everything, and typically is sold by suspicious sales men in the Wild West :-) If the reference is lost on you, you can just ignore it. It might help to remind you of the old adage that like such mixed metaphors, oil (from snakes or otherwise) and water (stream) don't mix. Maybe some of what we find in Agile Software Development doesn't belong there!
Anvandarfall: the original Swedish word for Use Case
Volvo English: thanks to Soren Langkilde Madsen for the phrase
DAD: Inspired by "Disneyland After Dark", a popular Danish rock band founded in 1982. When the band got popular in US the Disney group forced them to change name so they became D.A.D. Today their name is D-A-D. (If the reference is lost on you, don't worry; it isn't important :-)
OO: Object-Oriented
RUP: Rational Unified Process
Summary for the methodologist:
TDD is a design technique for programmers based on unit test first.
BDD is a specification technique based on user stories and test scenarios.
FDD is a development methodology based on object model, feature list, dynamic feature teams, and milestones.
Story inspired by
Simple Smalltalk Testing: With Patterns. Beck, K., Smalltalk Report 4 October 1994
Test Infected: Programmers love writing test. Beck K. & Gamma E., Java Report July 1998 (http://members.pingnet.ch/gamma/junit.htm)
Extreme Programming Explained: Embrace Change. Beck K., Addison Wesley 1999
Test-Driven Development: By Example. Beck K., Addison Wesley 2002
https://en.wikipedia.org/wiki/Feature-driven_development
https://dannorth.net/introducing-bdd/
https://www.ibm.com/developerworks/rational/library/oct05/kroll/index.html
http://www.wirfs-brock.com/Design.html
Plus a lot of other web pages about something-Driven Development or something-Driven Design. Go out and look for yourself when you have some time where you have nothing better to do
Agile and Scrum Resources
Click here to view the complete list of archived articles
This article was originally published in the Summer 2009 issue of Methods & Tools
Methods & Tools Testmatick.com Software Testing Magazine The Scrum Expert |